背景
最近いろいろデータ分析をすることがあって、様々なツール使ったり、Pythonでコード組んだり、でもなかなかうまくいかない。 そもそも「うまくいく」という意味が実はよくわかってない。
そんな中「機械学習のアンチパターン」というQiitaのお題があったので思った事を書いてみました。
アンチパターン: 「マッドサイエンティストによる宇宙人的データ分析」
シンプルに言いたいことは1つだけ「機械学習うんぬんの前に対象のことをちゃんと知ろう」です。
機械学習などの高度な知識・技術を持っていることはもちろん大事です。
でも、もっともっと大事なのは、対象とするドメインに十分に詳しい or 十分に熱量があることです。
- ドメインへの深い理解がある
- 今はまだ理解してなくてもドメインを理解しようという気持ちがある
- その問題を解決したいという熱量がある
もし、こういう気持ちがまったく無い場合、宇宙人的に何の理解も興味もなくデータだけ見て、無駄な労力と技術を使って「え?」が出てきます。
事例
事例1.日本語を知らないマッドサイエンティストによるベストセラー分析
👽「よし、日本とか言う国で小説をヒットさせてお金稼ぎをしよう」
さっそく売れている小説を分析して、日本で売れる小説を見つけようとして頻出ワードなどを調べます。
「日本で売れる小説は『の』や『に』を多く使えばよさそうですね。」
もちろんこれはフィクションです。
でもこんなことないと言い切れますか?
もちろん真面目にやるなら、ストップワードみたいなものを考えるでしょう、品詞も考えるでしょう、単語ではなく文章で考えるかもしれません、単に頻出ではなくTF-IDFみたいな特徴も考えるでしょう、Doc2Vecなど使うかもしれません。でもそれは「日本語」を知っているからやれることです。
何にせよまずやるべきことは「日本語を勉強する」ことです。
事例2.データ以外の背景を見ようとしないマッドサイエンティストによる船員の選定
👽「難しい航海を考えているので船員を選びたい。有名な事故をもとに生存確率の高い船員で構成しよう」
みんな大好きタイタニックの分析です。
これはタイタニック乗客の年齢別の平均生存確率です。
0歳と80歳にピークがありますね。
「これはもうデータから明らか。0歳と80歳は生存確率が高い。次の航海には0歳と80歳の船員で挑むのが良いです」
いえ、そんなことはしませんよね。
事故があったときに乳幼児やお年寄りを優先して逃がしたのが想像できます。
・・・・・・想像できましたか?
でも残念ながらそれはデータに表れていません。 勝手な「常識」でそう判断しただけです。 その時の個々人の勇敢な行動はデータには残っていないです。
あなたがデータ分析をしようとしているそのドメインの常識は理解されているでしょうか。
0歳と80歳での航海を考えていませんか。
事例3.あまりに世間にうといマッドサイエンティストによる時系列分析
ジオロケーションデータを分析して競合の有名テーマパークの来場者数を分析しています。
月別に集計していて2020年4月ごろから急に下がってきています。
「やりました。競合のテーマパークの入場者数が激減しています。きっとみんな飽きてきたのでしょう」
いえ、外出自粛の影響ですよね。
知ってましたか? 外出自粛あったの。さすがに知ってたと思います。でも知らなかったかもしれません。知っているのと知らないのとではまったくデータの見方が変わってきます。
ちなみにゼロになっていないところも注目です。GPSデータなどでみていると一定数例えば従業員や工事関係者などで数値が出るケースもあり結構惑わされます。
あなたが対象にしようとしているドメインの著名人がSNSで何かをつぶやいたからあなたのデータには変動が出ているかもしれません。でもきっとあなたの分析データにはその著名人のSNSは含まれていないです。
データだけ見て世捨て人になることは出来ません。 タピオカが流行ったことも自粛が起きたことも知らないといけません。
まとめ
「測定されていて実際に使えるデータ」というのは実は現実世界の極めて少ない一部分でしかないです。
高度なセンサーを使っても観測されないデータは山ほどあります。 データ活用をしようとしたときに、その「存在していないデータ」をどれだけ想像して補完し、さらにかき集めてくるかはとても大事です。
そのためには当事者として真摯にデータに向き合いましょう。 データ分析だけすればいいや、ではなく、その先にある世界を見据えて出来ること頑張りましょう。 宇宙人的に外からデータを傍観しているだけではいけません。