適切なデータ分析

作者: Patrick Riley

謝辞: Diane Tang、Rehan Khan、Elizabeeth Tucker、Amir Najmi、Hilary Hutchinson、Joel Darnauer、Dale Neal、Aner Ben-Artzi、Sanders Kleinfeld、David Westbrook、Bary Rosenberg

History

概要

データの山から真実と分析情報を導き出す作業は、多大ですが、エラーが発生しやすい作業です。優秀なデータ アナリストやデータ志向のエンジニアは、データから信頼性の高い意見を発表することで評判を確立しています。でも 信頼を獲得するために行っていることは?「注意」や「丁寧」などの形容詞はよく耳にしますが、特に慎重で系統的なアナリストは実際に何をするのでしょうか。

特に Google で定期的に収集しているデータの種類を考慮すると、これは簡単な質問ではありません。通常、非常に大きなデータセットを扱うだけでなく、そのデータセットは非常に豊富です。つまり、通常、データの各行には多数の属性があります。これを特定のユーザーのイベントの時間的シーケンスと組み合わせると、データを非常に多くの方法で調べることができます。これとは対照的に、一般的な学術心理学の実験では、研究者がすべてのデータポイントを見るのは簡単です。大規模で高次元のデータセットがもたらす問題は、科学研究のほとんどの歴史の中で起きた問題とは大きく異なります。

このドキュメントでは、大規模で高次元のデータセットに対して、慎重で系統的なアナリストが使用するアイデアと手法の概要を示します。このドキュメントでは、ログと実験的分析のデータに焦点を当てていますが、これらの手法の多くはより幅広く応用されています。

このドキュメントの残りの部分は、データ分析のさまざまな側面を説明する 3 つのセクションで構成されています。

  • 技術: データの操作や調査に関するアイデアや手法。
  • プロセス: データに対するアプローチ、確認すべき質問、確認事項に関する推奨事項。
  • マインドセット: 他者と協力し、インサイトを伝える方法。

技術

データを調べるいくつかのテクニックを見てみましょう。

分布を確認する

ほとんどの実務者はサマリー指標(平均値、中央値、標準偏差など)を使用して分布に関するコミュニケーションを行っています。ただし、通常は、ヒストグラム、累積分布関数(CDF)、分位分位(Q-Q)プロットなどを生成することで、より豊富な分布表現を検証する必要があります。このような豊富な表現により、マルチモーダル動作や重要なクラスの外れ値など、データの重要な特徴を検出できます。

外れ値を考慮する

外れ値は、分析におけるより根本的な問題を示す炭鉱のカナリアである可能性があるため、慎重に確認してください。データから外れ値を除外することや、それらを「異常な」カテゴリにまとめることは問題ありませんが、データがそのカテゴリに分類された理由を確実に把握する必要があります。

たとえば、クリック数が最も少ないクエリを確認すると、カウントしていない要素のクリック数が明らかになる場合があります。クリック数が最も多いクエリを確認すると、カウントすべきでないクリック数が明らかになる可能性があります。一方、説明できない外れ値が存在する可能性があるため、このタスクにどれだけの時間を費やすかに注意する必要があります。

ノイズを考慮する

不規則性は存在し、人々を欺くことになる。「Google には大量のデータがあり、ノイズは消える」と考える人もいますが、これはまったく真実ではありません。生成するデータの数または概要には、(信頼区間や p-valuesなどの測定を通じて)この推定値の信頼度の概念が付随している必要があります。

例を見る

新しい分析コードを作成するときは常に、基礎となるデータの例を確認し、コードがどのようにそれらの例を解釈しているかを確認する必要があります。この手順を行わずに、複雑なコードを実現することはほぼ不可能です。分析では、基礎となるデータから多くの詳細を抽象化して、有用な要約を作成しています。個々の例の複雑さ全体を見ることで、要約が合理的であると確信できます。

これらの例をどのようにサンプリングするかは重要です。

  • 基礎となるデータを分類する場合は、各クラスに属する例を確認します。
  • クラスが大きい場合は、より多くのサンプルを確認します。
  • 数値(ページの読み込み時間など)を計算している場合は、極端な例(最も速い例と遅い例の 5% など。分布がどのようなものかはわかりますか?)や、測定値の空間全体の点に注目してください。

データをスライスする

スライスとは、データをサブグループに分割し、各サブグループの指標値を個別に確認することです。通常は、ブラウザ、言語 / 地域、ドメイン、デバイスタイプなどのディメンションに基づいてスライスされます。根本的な現象がサブグループごとに動作が異なる可能性がある場合は、データをスライスして、実際にそうなるかどうかを確認する必要があります。スライスによって結果が異なると思われなくても、いくつかのスライスで内部整合性を確認することで、正しいデータを測定しているという確信が持てます。場合によっては、特定のスライスに不具合のあるデータ、不完全なユーザー操作、またはなんらかの点で根本的に異なる可能性があります。

データをスライスして 2 つのグループを比較する場合(テストとコントロール、「時間 A」と「時間 B」など)は常にミックス シフトに注意する必要があります。ミックスシフトとは、各グループのスライス内のデータ量が異なることを指します。 シンプソンのパラドックスやその他の混乱が生じる可能性があります。一般に、スライス内のデータの相対的な量が 2 つのグループで同じ場合は、安全に比較できます。

実際的意義を考慮する

データが大量にある場合は、統計的有意性にのみ注目したり、データのあらゆる部分の詳細に目を向けたりしたくなるかもしれません。しかし、値 X が値 Y より 0.1% 大きいというのは本当だとしても、それは重要かどうかを自問する必要があります。これは、データの一部を理解または分類できない場合に特に重要です。ログ内の一部のユーザー エージェント文字列が理解できない場合、それがデータの 0.1% を表すか 10% を表すかによって、調査すべきケースが大きく異なります。

また、データの量が少量である場合もあります。多くの変更は統計的に有意ではないようですが、それは「中立」であると主張するのとは異なります。「実質的に有意な変化がまだある可能性はどの程度あるか」と自問する必要があります。

時間の経過に伴う整合性のチェック

Google のシステムが時間の経過とともに進化するにつれて、基礎となるデータに多くの混乱が生じるため、ほとんどの場合、データを時間の単位でスライスしてみる必要があります。(通常は日数を使用しますが、他の時間単位も有効な場合があります)。 機能の初期リリースや新しいデータ収集を行う際、実務担当者は多くの場合、すべてが想定どおりに機能していることを慎重に確認します。ただし、時間の経過とともに多くの障害や予期しない動作が発生する可能性があります。

特定の日または一連の日が外れ値であるからといって、対応するデータを破棄する必要はありません。そのデータをフックとして使用し、破棄する前にその日が異なる理由を特定してください。

前日のデータを見ると、データのばらつきがわかり、最終的に統計的有意性の信頼区間や主張が導き出されます。これは通常、厳密な信頼区間の計算に代わるものではありませんが、大きな変化の場合は多くの場合、前日比のグラフからのみ統計的に有意であることがわかります。

フィルタリングを確認してカウントする

大規模なデータ分析のほとんどは、さまざまな段階でデータをフィルタリングすることから始まります。たとえば、米国のユーザー、ウェブ検索、広告を含む検索のみを検討したい場合、いずれの場合も、以下を行う必要があります。

  • フィルタリング処理を確認し、明確に指定します。
  • 各ステップでフィルタされるデータの量をカウントします。

後者の場合、除外する母集団に対する指標も含めて、すべての指標を計算する方法が最善です。このデータを見ると、「スパムフィルタで削除されたクエリの割合は?」といった疑問を解消できます。(フィルタリングする理由によっては、このような分析ができない場合もあります)。

比率の分子と分母は明確なものでなければなりません

最も興味深い指標は、基礎となるメジャーの比率です。興味深いフィルタリングやその他のデータの選択が、分子と分母の正確な定義の中に隠れていることがよくあります。たとえば、「Queries / User」が実際に意味するものは、次のうちどれですか。

  • クエリ数 / クエリ数
  • 今日 Google にアクセスしたクエリ数 / ユーザー
  • アクティブなアカウントを持つクエリ / ユーザー(はい、アクティブを定義する必要があります)

ここで明確に伝えることで、自分自身も他者にも混乱を避けることができます。

別の特殊なケースとして、一部のデータに対してのみ計算できる指標があります。たとえば、「クリックまでの時間」は、一般的に「クリックがあったと仮定した場合の、クリックまでの時間」を意味します。このような指標を確認するときは常に、フィルタリングを認識し、比較対象のグループ間でフィルタリングの変化を見つける必要があります。

プロセス

このセクションでは、データの活用方法、データについて確認する質問、確認する項目に関する推奨事項について説明します。

検証、説明、評価を分離

私は、データ分析には 3 つの相互に関連する段階があります。

  1. 検証1: データの自己整合性、正しく収集され、データの内容を反映しているか?
  2. 説明: このデータの目標解釈はどのようなものですか?たとえば、「X として分類されるクエリの数を減らす」、「テストグループでは、X と Y の間隔が 1% 長い」、「結果の次のページに移動するユーザーが少ない」などです。
  3. 評価: この説明から判断して、データから、ユーザー、Google、または世界に何か良いことが起きているかどうかがわかりますか。

ステージを分割することで、他の参加者と簡単に合意に到達できます。説明は、データについて誰もが同意できるものにする必要があります。評価によって、さらに議論が活発化する可能性があります。説明と評価を分離しない場合、確認したいデータの解釈のみが表示される可能性が高くなります。さらに、通常は他の機能や指標との厳密な比較によって指標の規範的値を確立するには多大な投資が必要になるため、評価はかなり難しくなる傾向があります。

これらのステージは直線的に進行しません。データを探索しながらステージ間を行き来できますが、どのステージにいるかを常に明確にする必要があります。

テストとデータ収集の設定を確認する

データを見る前に、データが収集されたコンテキストを理解しておいてください。データがテストから取得されている場合は、テストの設定を確認します。新しいクライアント インストルメンテーションからのものである場合は、データの収集方法を少なくとも大まかに理解していることを確認してください。通常とは異なる設定や不適切な設定、データ入力の制限(Chrome 専用の有効なデータなど)が見つかることがあります。ここで重要なことは、後で理論を構築して検証する際に役立ちます。次の点に注意してください。

  • テストが行われている場合は、ご自身でお試しください。検出できない場合は、少なくともスクリーンショットや動作の説明を確認してください。
  • テストの実施期間に異常な点がないか確認します(休日、大規模なリリースなど)。
  • テスト対象のユーザー群を特定します。

変更してはならない要素を確認する

「検証」段階の一環として、関心のある質問(たとえば、「顔の写真を追加するとクリック数は増えたか、減ったりしたか」など)に実際に回答する前に、テストに影響する可能性があるデータの他のばらつきを排除します。例:

  • ユーザー数に変化はありましたか?
  • すべてのサブグループに、影響を受けたクエリの数が適切でしたか?
  • エラー率は変化しましたか?

こうした質問は、テストとコントロールを比較する場合や、時間の経過に伴う傾向を調べる場合に有用です。

標準の 1 つ目、カスタムの 2 つ目

新しい機能や新しいデータを見るとき、その新しい機能の新しい指標や特別な指標にすぐに飛び込みたくなるものです。ただし、それらの指標が変更されることが予想される場合でも、まずは標準指標を確認する必要があります。たとえば、新しいユニバーサル ブロックをページに追加する場合は、この新しい結果に関するカスタム指標を詳しく見ていく前に、「ウェブ検索結果へのクリック数」などの標準指標への影響を理解しておく必要があります。

標準指標はカスタム指標よりも検証がはるかに優れており、正確である可能性が高くなります。カスタム指標が標準指標で使用できない場合は、カスタム指標に問題がある可能性があります。

2 回以上測定する

特に、新しい現象を捉えようとしている場合は、同じ根本にあるものを複数の方法で測定してみてください。次に、これらの複数の測定値に一貫性があるかどうかを判断します。複数回の測定を行うことで、測定コードやロギングコードのバグ、基になるデータの予期しない機能、重要なフィルタリング手順を特定できます。異なるデータソースを測定に利用できるとさらに効果的です。

再現性を確認する

再現性をチェックする例として、スライス化と経時的な整合性があります。ある現象が重要で意味のある場合、さまざまなユーザー層や時期にその現象が見られる必要があります。ただし、再現性を検証するには、これら 2 つのチェックを行うだけでは不十分です。データのモデルを構築する場合、基礎となるデータのわずかな変動があってもモデルが安定している必要があります。データの異なる期間やランダムなサブサンプルを使用すると、このモデルの信頼性/再現性も確認できます。

モデルが再現可能でない場合、データを生成した基盤となるプロセスに関する基本的な情報を取得できていない可能性があります。

過去の測定結果との整合性を確認する

過去にカウントされたものと同様の指標を計算することがよくあります。異なるユーザー集団に対して測定を行った場合でも、過去に報告された指標と指標を比較する必要があります。

たとえば、特定の集団に対するクエリ トラフィックを調べ、ページの平均読み込み時間が 5 秒であるにもかかわらず、過去のすべてのユーザーの分析で平均読み込み時間が 2 秒であった場合は、調査する必要があります。あなたの数値はこの母集団には適しているかもしれませんが、これを検証するにはさらに作業が必要です。

完全に合意する必要はありませんが、同じ基準値を適用する必要があります。そうでなければ、完全に納得するまで自分が間違っていると思い込んでください。驚くべきデータの多くはエラーであって、素晴らしい新しいインサイトではありません。

新しい指標は、まず古いデータ/特徴に適用する必要がある

新しい指標を作成し(新しいデータソースを収集することもある)、新しいことを学ぶときは、新しい指標が適切かどうかわかりません。新しい指標では、まず既知の特徴またはデータに適用する必要があります。たとえば、ユーザー満足度に関する新しい指標がある場合は、その指標から最も優れた機能のサポート満足度がわかるようにします。ユーザーが注目するページを示す新しい指標がある場合は、画像がページ アテンションにどのような影響を与えるかに関する視線追跡調査や評価者調査で判明したものと一致するようにしてください。そうすることで、新しいことを学ぶ際に検証が得られます。

仮説を立て、証拠を探す

通常、複雑な問題のデータ分析は反復的です2。データの異常、傾向、その他の特徴を発見できます。当然ながら、あなたはこのデータを説明する理論を開発します。理論を発展させ、それが真実であることを宣言するだけではいけません。この理論を支持または否定する証拠(データ内またはデータ外)を探します。例:

  • 学習トレンドのようなものが見つかった場合は、その傾向が使用頻度の高いユーザーで最も強く現れるかどうかを確認します。
  • なんらかの機能がリリースされたことが異常であると思われる場合は、その機能がリリースされた対象グループだけが、その機能のリリースによる影響を受けるユーザーのみであることを確認してください。あるいは、変更の規模がリリースの期待値と一致するようにしてください。
  • ロケールでユーザーの増加率に変化が見られる場合は、ユーザー人口の変化率を検証できる外部ソースを探してください。

優れたデータ分析には語るべきストーリーがあります。正しいストーリーであることを確認するには、自分自身にストーリーを語り、間違っている証拠を見つける必要があります。これを行う方法の 1 つは、「話している内容を検証 / 無効にするテストは?」と自問することです。これらのテストを実行しない場合や実施できない場合でも、手持ちのデータで検証する方法のアイデアが得られる場合があります。

幸いなことに、このような理論や可能な実験によって、特定の機能やデータについて知るという試みを超えた、新たな調査領域が生まれる可能性はあります。そして、このデータだけでなく、将来のあらゆる分析のための新しい指標や手法を導き出す分野にも参入します。

探索的分析がエンドツーエンドのイテレーションから得られるメリット

探索的分析を行う場合は、分析全体を可能な限り繰り返し行います。通常、シグナルの収集、処理、モデリングなどのステップは複数になります。最初のシグナルの最初のステージを完璧にするために時間がかかりすぎると、同じ時間でより多くのイテレーションを行う機会を逃してしまいます。さらに、最後に最終的にデータを見ると、方向転換につながる発見があるかもしれません。したがって、最初は完璧ではなく、合理的な範囲で結果を得ることに集中すべきです。フィルタリングの手順、解析不能なリクエスト、異常なリクエストなどについてはメモを残してください。ただし、探索的分析の開始時にそれらをすべて取り除くために時間を無駄にしないでください。

フィードバックに注意する

Google では通常、ユーザーの成功に関するさまざまな指標を定義します。たとえば、ユーザーが検索結果をクリックしたかどうか、そのデータをシステムにフィードバックすると(実際、Google はさまざまな場所でこれを行います)、評価が混乱する可能性が多くなります。

システムにフィードバックされる指標を、変更を評価する基準として使用することはできません。より多くのクリックを獲得できる広告が増えれば、「クリック数の増加」は「満足度が高い」ということであっても、「クリック数の増加」を基準としてユーザーの満足度が上がるかどうかを判断することはできません。また、フィードバックで操作した変数を細かく切り分けることも避けてください。このような分析結果によって、クリックの把握が困難または不可能になります。

Mindset

このセクションでは、他のユーザーと協力してインサイトを伝える方法について説明します。

データ分析はデータや手法ではなく問いから始まる

データ分析には、常にモチベーションがあります。質問または仮説としてニーズを定式化することで、収集するデータを確実に収集し、データに潜在するギャップについて検討することができます。当然ながら、問いかけはデータに目を配るにつれて変化していきます。しかし、質問のない分析は結局意味がありません。

お気に入りの手法を見つけてから、その手法が有効な問題の部分だけを見つけるという、落とし穴を避ける。繰り返しになりますが、明確な質問を作成することで、この落とし穴を避けることができます。

懐疑的かつ擁護する

データを扱うときには、得られる分析情報の擁護者になるとともに、それに懐疑的になる必要があります。ご覧いただいたデータに、興味深い現象がみられることでしょう。興味深い現象を見つけたら、次の点を確認します。

  • この素晴らしい機能を示すには、他にどのようなデータを収集できるでしょうか。
  • これを無効にするものはありますか?」

特に、特定の回答を本当に必要とする人のために分析を行う場合(たとえば、「私の機能はすばらしい!」など)、誤りを防ぐために懐疑的な人を演じる必要があります。

相関関係 != 因果関係

データについて理論を述べるとき、しばしば「X は Y を引き起こす」と主張します。たとえば、「ページが遅くなるとユーザーのクリックが減ります」。xkcd でも、相関関係が原因で因果関係を簡単に確立できないことがわかっています。因果関係の理論を検証する方法を検討することで、通常は因果関係の理論がどれほど信頼できるものであるかについてよく理解できます。

A と B の間に因果関係がない場合でも、一方のシグナルが他方のシグナルの適切な指標または代替となるように、一致の根底にある何かがあるはずであると主張することで、相関関係を有意義に維持しようとすることがあります。この領域は、複数の仮説検証の問題にとって危険です。xkcd も認識しているように、十分なテストと十分なディメンションがあれば、一部のシグナルは特定のテストに適合します。これは、今後同じシグナルが一致することを意味しません。そのため、「A と B の両方を引き起こす隠れた効果 C がある」などの因果理論を検討し、これがどれほど妥当であるかを検証してみるという同じ義務があります。

データ アナリストは、データを利用したいと思っている人々のために、このような因果関係のある問いに答える必要が生じることがよくあります。因果関係について言えること、言えないことを消費者に明確に示す必要があります。

最初に同僚と共有し、次に外部ユーザーと共有します

ここまでのポイントでは、適切な健全性のチェックと検証を行うためのいくつかの方法を提案しました。しかし、仲間との共有は、これらすべてを行うよう強制する最良の方法の 1 つです。特に、データ利用者は一般的に議題があるので、熟練した専門家はデータ利用者とは質的に異なるフィードバックを提供できます。ピアは、分析中の複数のポイントで役立ちます。同僚が知っている問題点、測定すべき指標の提案、この分野における過去の研究を早い段階で確認できます。後半では、奇妙な点、矛盾点、その他の混乱について、ピアはうまく指摘します。

対象データについて知識のある同僚からフィードバックを得るのが理想的ですが、一般的なデータ分析の経験がある同僚でも非常に貴重です。

無視や誤りを想定し、受け入れる

データからわかることには多くの限界があります。Nate Silver は、シグナルとノイズで、確実性の限界を認めるだけで予測の精度を上げることができるという強い主張をしています。無視を認めることは、通常はすぐに効果が現れない強みです。今は気持ちが悪くなりますが、長期的にはお客様とお客様のチームにとって大きなメリットになります。間違いを犯して後から気付くと(あるいは遅すぎる)ことはさらに嫌なものですが、自分の間違いに積極的に対処することは尊重されます。そうした敬意が、信頼と影響力につながります。

最後に

優れたデータ分析を行うための作業の多くが、分析を行う側から見てすぐにわかるものではありません。母集団のサイズを注意深く確認し、ブラウザ間で効果の一貫性が保たれていることを確認しただけでは、このデータを基に意思決定を行う人々はおそらく認識しないでしょう。このことも、多くのユーザーにとって、優れたデータ分析に予想以上に時間がかかる理由(特に、最終出力しか見ることができない場合)にかかっています。アナリストの仕事の 1 つは、データに基づく分析情報の消費者に、これらのステップの内容と重要性を徐々に伝えることです。

データのこのような操作と探索の必要性から、優れたデータ分析言語と環境の要件も明らかになります。データを調べるのに利用できるツールはたくさんあります。前述のさまざまな手法には、さまざまなツールと言語が適しています。適切なツールの選択は、アナリストにとって重要なスキルです。使い慣れているツールの機能によって制限されるべきではありません。特定のツールを適用するのではなく、真のインサイトを提供する役割を担います。

 


  1. これは「初期データ分析」と呼ばれることもあります。 データ分析に関する Wikipedia の記事をご覧ください

  2. 技術的には、探索的分析を行う場合のみ反復処理を行い、確認分析を行う必要はありません。