まずは蝋の翼から。

学んだことを書きながら確認・整理するためのメモブログ。こういうことなのかな?といったことをふわっと書いたりしていますが、理解が浅いゆえに的はずれなことも多々あると思うのでツッコミ歓迎

データサイエンティストがプロジェクトを回す際に何を"考える"べきか

仕事において「なぜ(Why, So What)を3回くりかえせ!」という話をよく聞く。これは「何故これをやったのか/必要があるか?」をあぶり出すために非常に有効となる。

逆にその問に答えれないということは、 「どういう思考のプロセスでそのアウトプットに至ったか」をちゃんと考えないで「何となくこんな感じかな?」レベルでしか考えてない ことになる。

これはデータサイエンティストが作成したあらゆるものについても当てはまる。

それでは、具体的に「なんのアウトプット」に対して何を「何故?」と問えばいいのだろうか。分析プロジェクトにおける各フェーズ毎に 何故それをおこなったか考えるべきこと をいくつか考えてみる。

あるモデルを立てたとき

例えば、ある期間の  y = \alpha x_1 + \beta x_2という式を立てた場合を考える。

この場合、モデル式はどういうことを仮定していて、何故その仮定を選んだのかをちゃんと考える。

例えば、以下の問に答えれないといけない。

  • 何故線形なのか(非線形じゃいけないのか)
  • 何故正規性を仮定しているのか
  •  x_1 , x_2 の2つを何故選んだのか(片方だけだとどう問題なのか)
  •  x_1 , x_2 の交互作用はなくてもいいのか
  • 何故その期間なのか

結果が出たとき

結果の解釈

推定した結果の係数の結果などを考える。

例えば、先程の式でαが2.1、βが5.1となるとするとx_2が1上がる効果は x_1が1上がる効果の倍近い効果があるということになる。これはどういう背景でそうなっているのか。

結果が間違っているっぽいとき

結果が想定と違っていた場合は何が原因で上手く行かなかったのかを考える。

例えば、

  • モデルが間違っていた
  • 今のモデルではノイズが大きかった(仮定が弱かった)  

また、どうやったらそれらを克服できるか考える。

例えば、モデルが間違っているのならばどうやったら正しいモデルが組めるか。例えば、ドメイン知識に詳しい人に相談することで新たなモデルの切り口を考えられるかもしれない。
つまり、 「どういう情報があれば、正しいモデルが組めるか」「その情報は誰が持っているか」 を考える。

要件定義フェーズ

前述の「 どういう情報があれば、正しいモデルが組めるか」「その情報は誰が持っているか」 はそもそも要件定義フェーズでやる必要がある。前述の例は、結果が出たあとに要件定義フェーズに戻った場合を考えているが、一番はじめの要件定義フェーズではそもそも 「なにをどういうレベルでなんのために出し、それを出したらどう嬉しいのか」 ということに対して 「その情報は誰が持っているか」 を考える必要性がある。

資料作成

資料を作成するときあるグラフと結果を載せたときに例えば以下を考える

  • 何故そのグラフを載せるか
  • 何故その軸で切っているか
  • 何故その色にしているのか

つまりどういうことか

ざっと、各フェーズにおいて「何故それをおこなったか考えるべきこと」を考えた。

ここで列挙したようなことを改めて自分の作成したものに問うと、「特に理由はないけど、なんとなくよくある感じだからそうした」くらいで考えていることが多いことに気づく。 この部分ができてこそ真にデータと向き合っているといえるのではないか。