著者: Patrick Riley
謝辞: Diane Tang、Rehan Khan、Elizabeth Tucker、Amir Najmi、Hilary Hutchinson、Joel Darnauer、Dale Neal、Aner Ben-Artzi、Sanders Kleinfeld、David Westbrook、Barry Rosenberg
History
- 最新メジャー・アップデート:2019 年 6 月
- この資料の一部は、 非公式 Google データ サイエンス ブログに 2016 年 10 月に掲載されています(その一部は公開されています)。
概要
積み重なったデータから真実と分析情報を導き出す作業は強力ですが、エラーが発生しやすい作業です。優秀なデータ アナリストやデータ志向のエンジニアは、データから信頼できる発言をする評判を確立しています。では 信頼性を高めるために 行っていることは何でしょうか「慎重」や「計画的」などの形容詞をよく聞きますが、最も慎重で系統的なアナリストは実際には何をするのでしょうか。
特に Google が定期的に収集しているデータの種類を考えると、これは簡単な質問ではありません。通常 非常に大規模なデータセットを処理する だけでなく 非常に豊富なデータセットを扱いますつまり、通常、データの各行には多数の属性があります。これを特定のユーザーのイベントの時間的なシーケンスと組み合わせると、データをさまざまな方法で参照できます。これとは対照的に、一般的な学術心理学の実験では、研究者がすべてのデータポイントを確認するのは簡単です。大規模で高次元のデータセットが引き起こす問題は、科学研究のほとんどの歴史で遭遇する問題とは大きく異なります。
このドキュメントでは、慎重で系統的なアナリストが大規模な高次元データセットに対して使用するアイデアと手法を要約します。このドキュメントでは、ログのデータと実験的な分析に焦点を当てていますが、これらの手法の多くがより広く適用されています。
このドキュメントの残りの部分は、データ分析のさまざまな側面をカバーする 3 つのセクションで構成されています。
技術
データを調べるための手法をいくつか見てみましょう。
分布を確認する
ほとんどの実務者は、サマリー指標(平均、中央値、標準偏差など)を使用して分布に関するやり取りを行います。ただし、通常はヒストグラム、累積分布関数(CDF)、分位点分位(Q-Q)プロットなどを生成して、より豊富な分布表現を検証する必要があります。この豊富な表現により、マルチモーダル動作や大きな外れ値クラスなど、データの重要な特徴を検出できます。
外れ値を考慮する
外れ値は分析におけるより根本的な問題を示す炭鉱のカナリアである可能性があるため、慎重に確認します。データから外れ値を除外したり、「異常な」カテゴリにまとめても問題ありませんが、データがそのカテゴリに分類された理由を確実に把握する必要があります。
たとえば、クリック数が最も少ないクエリを確認すると、カウントされません。クリック数が最も多いクエリを調べると、カウントすべきではないクリック数が判明する場合があります。その一方で、説明できない外れ値もあるため、このタスクにどれだけの時間を費やすかに注意する必要があります。
ノイズを考慮
ランダム性は存在し、人を欺きます。「Google にはデータがたくさんあるのでノイズは消える」 と考える人もいますが、これはまったく真実ではありません。生成するデータのすべての数値またはサマリーには、(信頼区間や p-valuesなどの尺度による)この推定値の信頼度の概念が付随する必要があります。
例を見る
新しい分析コードを生成するときは、基になるデータの例を確認し、コードがどのように解釈しているかを確認する必要があります。このステップを実行しなければ、複雑な動作コードを生成することはほぼ不可能です。分析では、有用な要約を生成するために、基礎となるデータから多くの詳細が抽象化されています。個々の例の複雑さ全体を見ることで、要約が合理的であると確信できます。
これらの例をどのようにサンプリングするかは重要です。
- 基になるデータを分類する場合は、各クラスに属する例を確認します。
- クラスが大きい場合は、より多くのサンプルを確認します。
- 数値(ページの読み込み時間など)を計算する場合は、極端な例(最も速い例と最も遅い 5% など。分布がどのようなものかは把握しています)と、測定空間全体のポイントを確認してください。
データをスライスする
スライスとは、データをサブグループに分割し、各サブグループの指標値を個別に確認することです。通常は、ブラウザ、言語 / 地域、ドメイン、デバイスタイプなどのディメンションでスライスされます。根本的な現象がサブグループ間で異なる動作をする可能性が高い場合は、データをスライスして、実際にそのようにする必要があります。スライスによる結果の違いが想定されていない場合でも、内部整合性についていくつかのスライスを確認することで、正しいものを測定しているという確信が高まります。場合によっては、特定のスライスに、不正なデータ、破損したユーザー操作、あるいはなんらかの形で根本的に異なるものがあります。
データをスライスして 2 つのグループを比較する場合(テストとコントロール、または「時間 A」と「時間 B」など)、ミックスシフトに注意する必要があります。ミックスシフトとは、各グループのスライス内のデータ量が異なる場合です。 シンプソンのパラドックスやその他の混乱が生じる可能性があります。一般に、スライス内のデータの相対量が 2 つのグループで同じであれば、安全に比較できます。
実践的重要性を考慮する
データが大量にある場合は、統計的有意性だけに注目したり、データのあらゆる部分の詳細に絞り込んだりしたくなるかもしれません。しかし、「値 X が値 Y より 0.1% 高いという事実が正しかったとしても、それは重要かどうか」を自問する必要があります。これは、データの一部を理解または分類できない場合に特に重要です。ログ内の一部のユーザー エージェント文字列が理解できない場合、その文字列がデータの 0.1% を表すか 10% であるかによって、調査すべき量が大きく異なります。
または、データが少量である場合もあります。多くの変化は統計的に有意ではありませんが、それが「ニュートラル」であると主張するのとは異なります。「まだ実質的に有意な変化がある可能性はどのくらいあるか」を自問する必要があります。
時間の経過に伴う整合性のチェック
Google のシステムが時間の経過とともに進化するにつれ、基礎となるデータに多くの障害が生じるため、ほとんどの場合、データを時間単位でスライスしてみてください。日数を指定することがよくありますが、他の時間単位も有効な場合があります)。機能を初めてリリースするときや新しいデータ収集を行うとき、実務担当者は多くの場合、すべてが想定どおりに動作していることを注意深くチェックします。ただし、時間の経過とともに、多くの破損や予期しない動作が発生する可能性があります。
特定の日または日付セットが外れ値であるからといって、対応するデータを破棄する必要があるわけではありません。破棄する前に、データをフックとして使用して、その日(複数可)が異なる原因となる理由を特定します。
前日のデータを見ることで、最終的に信頼区間や統計的有意性の主張につながるデータの変動を把握することもできます。これは一般的に、厳密な信頼区間の計算に代わるものではありませんが、大きな変化では多くの場合、前日比グラフからのみ統計的に有意であることがわかります。
フィルタリングを確認してカウントする
大規模なデータ分析のほとんどは、さまざまなステージでデータをフィルタリングすることから始まります。たとえば、米国のユーザー、ウェブ検索、広告を含む検索のみを考慮する場合などです。いずれにしても、以下の要件を満たす必要があります。
- フィルタリングの内容を確認し、明確に示します。
- ステップごとにフィルタされたデータの量をカウントします。
多くの場合、後者を行う最善の方法は、除外する母集団に対するすべての指標を計算することです。このデータを見ると、「スパムフィルタで削除されたクエリの割合は?」といった疑問に答えることができます。(フィルタリングする理由によっては、このタイプの分析が常に可能とは限りません)。
比率には明確な分子と分母が必要です
最も興味深い指標は、基礎となる測定の比率です。多くの場合、興味深いフィルタリングやその他のデータの選択は、分子と分母の正確な定義の中に隠れています。たとえば、「クエリ / ユーザー」の実際の意味は次のうちどれですか。
- クエリ数 / クエリ数
- 今日 Google にアクセスしたクエリ / ユーザー
- アクティブなアカウントのクエリ / ユーザー(はい、active を定義する必要があります)
ここで明確にしておくことで、自分自身や他者の混乱を防ぐことができます。
もう 1 つの特殊なケースとして、一部のデータに対してのみ計算できる指標があります。たとえば「クリックまでの時間」は通常、クリックがあったことを前提として「クリックまでの時間」を意味します。このような指標を確認するときは常に、そのフィルタリングを認識し、比較するグループ間でのフィルタリングの変化を見つける必要があります。
プロセス
このセクションでは、データに対処する方法、データに関して確認すべき質問、確認すべき事項に関する推奨事項について説明します。
検証、説明、評価を分離する
データ分析では、3 つの段階が相互に関連しています。
- 検証1: データは自己整合性があり、正しく収集され、自分が考えていることを表していると思いますか?
- 説明: このデータの客観的な解釈は何ですか? 例: 「X に分類されるクエリが少ない」、「テストグループでは、X と Y の間の時間が 1% 長くなっています」、「結果の次のページに移動するユーザーが少ない」などです。
- 評価: 説明を考えたとき、データからユーザー、Google、世界に何か良いことが起きていることがデータからわかりますか?
これらのステージを分けることで、より簡単に他者と合意に達することができます。説明は、データについて全員が同意できる内容にする必要があります。評価によって、議論が活発化する可能性があります。説明と評価を分離しないと、表示したいデータの解釈のみが表示される可能性が高くなります。さらに、通常、他の機能や指標との厳格な比較を通じて指標の規範的価値を確立するには多大な投資が必要になるため、評価ははるかに困難になる傾向があります。
これらのステージは直線的に進行しません。データを探索しながらステージ間を行き来できますが、どのステージにいるかはいつでも明確にしておく必要があります。
テストとデータ収集の設定を確認する
データを確認する前に、データが収集されたコンテキストを理解していることを確認してください。テストから取得したデータの場合は、テストの構成を確認します。新しいクライアント インストルメンテーションからのものである場合は、データの収集方法を少なくとも大まかに把握しておく必要があります。通常とは異なる設定、不正な設定、データ数の制限(Chrome でのみ有効なデータなど)が見つかることがあります。ここで重要なことは、後で理論を構築し検証する際に役立ちます。次の点に注意してください。
- テストが実施中の場合は、ご自身でテストしてみてください。確認できない場合は、少なくとも動作のスクリーンショット/説明を確認してください。
- テストの期間(祝日、大規模なリリースなど)に異常がないか確認します。
- テスト対象のユーザー群を特定します。
変更してはならない要素を確認する
「検証」段階の一環として、関心のある質問(例: 「顔の写真を追加することでクリック数が増えた、または減ったか」)に実際に答える前に、テストに影響する可能性のあるデータの他のばらつきを排除します。次に例を示します。
- ユーザー数に変化はありましたか?
- すべてのサブグループで、影響を受けるクエリが適切な数に表示されていましたか?
- エラー率は変化したか?
これらの質問は、テストとコントロールを比較する場合や、時間の経過に伴う傾向を調べる場合にも有効です。
標準 1 番目、カスタム 2 番目
新しい機能や新しいデータを確認するときは、特に、この新機能の新しい指標や特別な指標をすぐに確認したくなるものです。ただし、指標が変更されることが予想される場合でも、最初に常に標準指標を確認する必要があります。たとえば、新しいユニバーサル ブロックをページに追加する場合は、この新しい結果に関するカスタム指標を詳しく見ていく前に、「ウェブ検索結果のクリック数」などの標準指標への影響を必ず理解してください。
標準指標はカスタム指標よりも検証がはるかに優れており、正確である可能性が高くなります。カスタム指標が標準指標と合わない場合は、カスタム指標が間違っている可能性があります。
2 回以上測定する
特に、新しい現象を捉えようとしている場合は、基盤となる同じものを複数の方法で測定してみてください。次に、これらの複数の測定に一貫性があるかどうかを判断します。複数の測定を行うことで、測定コードやロギングコードのバグ、基になるデータの予期しない機能、重要なフィルタリング手順を特定できます。測定に異なるデータソースを 使えるとさらに効果的です
再現性を確認する
再現性をチェックする例としては、スライスと経時的な整合性の両方が挙げられます。ある現象が重要で意味がある場合は、さまざまなユーザー集団と期間にわたって確認する必要があります。ただし、再現性の検証は、これら 2 つのチェックを行うだけでは不十分です。データのモデルを構築する場合は、基盤となるデータがわずかに摂動されても安定したモデルを構築する必要があります。データのさまざまな期間やランダムなサブサンプルを使用すると、このモデルの信頼性と再現性もわかります。
モデルが再現できない場合、データを生成した基盤となるプロセスに関する基本的な情報を取得できていない可能性があります。
過去の測定値との整合性を確認する
多くの場合、過去にカウントされたものと同様の指標を計算することになります。これらの測定値がユーザー母集団の異なる場合でも、過去に報告された指標と比較する必要があります。
たとえば、特定の母集団のクエリ トラフィックを調べ、平均ページの読み込み時間が 5 秒であるにもかかわらず、すべてのユーザーの過去の分析での平均ページの読み込み時間が 2 秒である場合、調査する必要があります。適切な人数になっているかもしれませんが 検証にはさらに作業が必要です
完全に同じ同意を得る必要はありませんが、大まかな範囲に収める必要があります。そうでない場合は、完全に納得するまで自分が間違っていると思い込んでください。驚くべきデータの多くは、素晴らしい新しい分析情報ではなく、 エラーになります。
新しい指標はまず古いデータ/特徴に適用する必要がある
新しい指標を作成して(新しいデータソースを収集するなど)、新しいことを学ぼうとすると、新しい指標が正しいかどうかわかりません。新しい指標では、まず既知の特徴またはデータに適用する必要があります。たとえば、ユーザー満足度に関する新しい指標がある場合は、その指標から最も良い特徴が満足度にどのように役立つかを示す必要があります。ユーザーがどこに誘導されたかを示す新しい指標がある場合は、画像がページの注目度に及ぼす影響に関する視線追跡調査や評価調査で判明した指標と一致するようにしてください。これにより、新しいことを学ぶ際に検証を行うことができます。
仮説を立て、証拠を探す
通常、複雑な問題のデータ分析は反復的です2。データの異常、傾向、その他の特徴を発見できます。当然ながら、このデータを説明する理論を確立します。ただ、理論を発展させ、それを真実であると宣言してはいけません。この理論を裏付ける証拠(データの内外)を探します。次に例を示します。
- 学習傾向のようなものが見つかった場合は、その傾向が利用頻度の高いユーザーで最も強く現れるかどうかを確認します。
- 異常の原因が一部の機能のリリースによるものであると思われる場合は、その機能がリリースされた母集団が、異常の影響を受ける唯一の人物であることを確認してください。または、変更の規模がリリースの期待と一致するようにしてください。
- ある地域でユーザーの増加率に変化が見られる場合は、ユーザー人口の変化率を検証する外部ソースを探してみてください。
優れたデータ分析には語るべきストーリーがあります。それが正しい情報であることを確認するには、自分にストーリーを語り、それが間違っているという証拠を見つける必要があります。そのための 1 つの方法は、「伝えたいストーリーを検証 / 無効にするには、どのようなテストを実施するだろうか」と自問することです。このようなテストを実行できない場合、または実施できない場合でも、手持ちのデータで検証する方法に関するアイデアが得られる場合があります。
幸いなことに、これらの理論や可能なテストによって、特定の機能やデータについて学ぶという以上の新たな研究につながる可能性があります。このデータだけでなく、将来のあらゆる種類の分析のための新しい指標や手法を導き出す分野に入ります。
エンドツーエンドのイテレーションによる探索的分析のメリット
探索的分析を行う場合は、分析全体をできるだけ回数繰り返します。通常は、シグナルの収集、処理、モデリングなどの複数のステップがあります。最初のシグナルの最初のステージを完璧にするのに時間がかかりすぎると、同じ時間でより多くのイテレーションを行う機会を逃してしまいます。さらに、最後にようやくデータを見ると、方向を変えるような発見が見つかるかもしれません。したがって、最初は完璧ではなく、合理的な範囲で何かを得ることに焦点を合わせる必要があります。自分のためにメモを残し、フィルタリングの手順、解析不能なリクエスト、通常とは異なるリクエストなどを確認します。ただし、探索的分析の開始時に、それらを取り除くために時間を無駄にしないでください。
フィードバックに注意する
Google では通常、ユーザーの成功に関するさまざまな指標を定義します。たとえば検索結果をクリックしたのか、そのデータをシステムにフィードバックすると(実際はさまざまな場所でこれを行い)、評価の混乱を招く可能性が高くなります。
システムにフィードバックされる指標を、変更を評価する基準として使用することはできません。より多くの広告を表示してより多くのクリックを獲得した場合、「クリック数の増加」は「幸福感」を意味することが多いとしても、「クリック数の増加」を基準としてユーザーの満足度を高めることはできません。また、フィードバックして操作した変数をスライスすることは、理解が困難または不可能なミックス シフトにつながるため、避けるべきです。
Mindset
このセクションでは、他のユーザーと協力してインサイトを共有する方法について説明します。
データ分析はデータや手法ではなく、質問から始まる
データ分析に対する動機は常にあります。質問または仮説としてニーズを定式化することで、収集すべきデータを収集し、データに生じる可能性があるギャップについて検討できるようになります。当然ながら、問いかけはデータに目を向けながら変化していく必要があります。しかし、問いのない分析は結局、目的がありません。
お気に入りの手法を見つけてから、その手法で対処できる問題の部分だけを見つけるというトラップは避けてください。繰り返しになりますが、明確な質問を作成することで、この落とし穴を避けることができます。
懐疑的な姿勢で、支持者になる
データを扱うときは、得られたインサイトの擁護者であると同時に、それに懐疑的な視点でもある必要があります。見ているデータの中から興味深い現象が見つかることを願っています。興味深い現象を検出したら、次のことを検討してください。
- この機能がいかに優れているかを示すために、他にどのようなデータを収集すればよいでしょうか?
- これを無効にする方法はありますか?」
特に、特定の回答を本当に必要としている人(たとえば「私の機能は素晴らしい!」)のために分析を行う場合、間違いを避けるために懐疑的な人を演じる必要があります。
相関関係 != 因果関係
データに関する理論を述べる際には、「X が Y の原因になる」(たとえば、「ページ速度が遅くなるとユーザーがクリックする回数が減る」など)と主張することがよくあります。相関が原因で因果関係を特定できないことは、xkcd でも認識されています。因果理論を検証する方法を検討することで、通常は因果理論がどれほど信頼できるかについて適切な感覚を身につけることができます。
場合によっては、A と B の間に因果関係がなくても、あるシグナルが他方のシグナルの適切な指標または代用となるように、偶然の根底にある何かがなければならないと主張することで、相関関係を有意義に維持しようとすることがあります。この領域は、複数の仮説のテストに関する問題に対して危険です。xkcd も認識しているように、十分なテストと十分なディメンションがあれば、一部のシグナルは特定のテストに適合します。これは、将来的に同じシグナルが一致することを意味するものではないため、「A と B の両方を引き起こす隠れた効果 C がある」などの因果理論を検討し、これがどれほど妥当であるかを検証できるようにする同じ義務があります。
データ アナリストは、多くの場合、データを使用したいと思っている人のために、これらの因果関係を探る必要があります。因果関係について何を言ってよいかを明確にする必要があります
最初に同僚と共有し、次に外部ユーザーと共有
ここまでのポイントでは、適切な健全性のチェックと検証を行うためのいくつかの方法を提案しました。しかし、同僚との共有は、これらすべてのことを強制する最良の方法の 1 つです。特に、データ利用者はアジェンダを持っていることが一般的であるため、熟練した専門家は、データ利用者と質的に異なるフィードバックを提供できます。ピアは、分析のさまざまなポイントで役立ちます。同僚が認識している問題点、測定対象に関する提案、この分野における過去の研究を早い段階で確認できます。終了が近づくと、異常、不整合、その他の混乱を指摘することを得意としています。
対象のデータについてある程度の知識がある同僚からフィードバックを得るのが理想的ですが、一般的なデータ分析の経験がある仲間でも非常に貴重です。
無知や間違いを予期し、受け入れる
データから学べることには多くの限界があります。Nate Silver は「信号とノイズ」で、確実性の限界を認めるだけで予測を改善できると強く訴えています。無視を認めることは、通常はすぐには報われない強みです。その時点では良くない気がしますが、長期的に見て、あなたやあなたのチームに大きなメリットをもたらします。間違いを犯して後で発見すると(あるいは遅すぎる)、さらに悪いように感じられますが、自分の間違いを前もって守ることは尊重されます。そうした尊重は信頼と影響力につながります
最後に
優れたデータ分析を実施するための作業の多くは、分析を行う側から見てすぐに理解できるものではありません。母集団のサイズを慎重にチェックし、ブラウザ間で影響に一貫性があることを検証しただけでは、このデータから意思決定を行う人々の認識にはおそらく届きません。このことは、多くのユーザーにとって(特に最終出力のみが表示される場合に)優れたデータ分析にかかる時間が想定よりも時間がかかる理由にも表れています。アナリストとしての私たちの仕事の一部は、これらのステップが何で、なぜそれが重要なのかについて、データに基づく分析情報を消費者に徐々に伝えることです。
データの操作と探索のすべてが必要になることは、優れたデータ分析言語と環境の要件も明らかになります。データを調査するために利用できるツールはたくさんあります。前述のさまざまな手法には、さまざまなツールと言語が適しています。適切なツールの選択は、アナリストにとって重要なスキルです。自分が使い慣れているツールの機能によって制限されないようにしてください。ここでの仕事は、特定のツールを適用するのではなく、真の分析情報を提供することです。
-
これは「初期データ分析」と呼ばれることもあります。 データ分析に関するウィキペディアの記事 ↩
-
技術的には、確認的分析ではなく、探索的分析を行う場合にのみ反復的にする必要があります。 ↩