読者です 読者をやめる 読者になる 読者になる

woshidan's loose leaf

ぼんやり勉強しています。

分析をする前の話

0と1と10と100と1000を足して5で割るみたいな平均値出して分析しました案件に遭遇してなんだかなってなったので、ひっそりとメモ。

自分はただのWebエンジニアでありデータサイエンティストとかそういうのじゃなくて、Web系のエンジニアが仕事の片手間にどうしても決まらんから、ちょっと数値試しに取ってみようぜ、みたいな状況で思っている話です。

なるべく専門用語とか色々使わないように、ぐだぐだ書いてたんですけど、、

  • 生データを眺めて異常値が無いか確認しつつ、散布図書いて値の分布を見ることを最初にやる
    • 散布図やヒストグラム等、その値の傾向がつたわりやすいグラフの種類を探す。グラフは実験結果の顔です
      • どこかのテレビみたいな誇張をしろという話ではない
    • 複雑な分析関数をかませたり、他の人に相談するのはそこから
    • ただし、業界とかにもよるのですが、デフォルトでかける解析用関数とかがあるのなら、生データとその関数の結果値、みたいに整理した方が通じやすい
    • ここでは、取れたデータはこうで、こういう風な傾向が見えます、というのを一言で言える、あるだけそういってくれるグラフなどを作ることを目標に
      • 何がどうあってもそんな単純な分析ではわからないですよ~的な話はデータサイエンティストかその分野の専門家に任せること
      • 分析の素人がとりあえず仮説を検証したいときには、単純な理屈と単純な値を組み合わせたほうが聞く方も理解しやすい
  • 分析をやる目的とそのために測定する数値と、その数値が変化する要因をまとめておく
    • 取る理由の分かっていない数値から、後付けで取る理由を探さない
      • 理由が見つからない分析は現実逃避の可能性がある
    • とっても意味の無い値を取るための実装に時間をかけるより、目的を考えるのに時間をかけた方がよい
    • 分析はリソースの配分を調整したりして全体のスピードアップのためにやる。分析のために時間をかけて全体の進みを止めない
  • 事前に測定値の取りうる値について調べたり、取る方法を調べておく
    • 事前に取っているデータがあれば、その値を基準値として調べておくとよい
    • また、事前データの中に予想している兆候が見られなければ分析に使う仮説や指標を見直すことも視野に入れて
      • 実は、これ新しく分析用に数値やログを取るコードを仕込む前提で書いていたんですが、ここだけでも分析としては十分な可能性もあるので、時間をかけてよいと思います
    • 取る方法は調査や実装では不十分で、本番測定前にテスト測定として、測定項目の過不足や実際に取れた値が事前に出した予測値からずれすぎていないかを確認する期間やテスト環境での測定を行えるとよい
      • あれこれ時間かけて計測したつもりで、できていないが一番怖い。その期間のユーザーの動き等は一期一会。

つまり、1行で書くと夏休みの自由研究レベルのことはちゃんとやろうず、という話でした。

あと、こういうのディレクターの方が明るいことも多いので*1、仮説とかの段階で詰まったら相談すればいいと思います。

*1:数値に弱いとしても、プロダクトで起こる出来事やユーザーの流れ等について詳しい