2013-11-17
データサイエンティストに必要な3つのスキル
久しぶりにタイトルで釣りにいっているが、ブラウザの「戻る」ボタンを押さないでくれw
...
...
...
(よし、まだ「戻る」ボタンを押してない!)
ぼく自身、データサイエンティストだったことはないが、一応大学では数学を勉強していたし、金融でクオンツトレーダーもやっていたし、人生3回分(と言ったら言い過ぎか)くらいのSQLクエリは書いている。なので、これから書くことは、本屋に立ち並ぶ歯の浮く様なビッグデータ談義よりは、普遍的な価値があると自負できる。
もう一つ本題に移る前に、「データサイエンティスト」という呼称について感じる両価的な感情について軽く説明したい。
ぼくは幸いにも優秀な同僚や友人に恵まれていて、彼らの中には、データ分析屋さんでありながら、データを集めてきて(広義の)データウェアハウスに突っ込むという非常に面倒くさい一連の作業もちゃっちゃか出来る奴が2、3人いる。そういうマルチな人たちに敬意を表する意味で、「データサイエンティスト」という造語を使い差別化をはかるのは良いと思う。
その一方で、初歩的な統計的推定もろくに理解していないのに、機械学習だのHadoopだのと流行り言葉を並べ立てて、印税と講演料を荒稼ぎしている半ばペテン師の方々もデータサイエンティストであるという事実を鑑みると、どうしても「データサイエンティスト万歳」とは思えないのである。
まあ批判、批評はこのくらいにして、実際に「いろいろなデータを分析して会社の役に立つ人になるためのスキル」について、自分の経験と、周囲の人たちを見て気づいたことをまとめてみる。主観かもしれないが、嘘八百ではないと思う。
1. 線形代数(と多変数微分)
大学1年でやるアレである。あんなもん何の役に立つのかと思うかもしれないが、統計でも最適化モデリングでも、基本文法として線形代数がある。線形代数がわかっていないと、初歩的な機械学習の手法である重回帰分析も、もっともシンプルな最適化問題である線形計画法も理解できない。手法の細部が理解できないと、他人が書いたライブラリの仕様書を読んでパラメータをツッコむだけの人間APIに成り下がってしまい、結果として間違った手法の使い方を招くことになる。そんなんだったら、何も分析しない方がマシである。
就職してびっくりしたのが、線形代数を理解している人間がこの世の中に異様に少ないということである。クオンツ時代にも、いろいろなモデリングをしたが、ぼくの直属のボス(数学Ph.D.中退)を除く同僚は、線形代数を理解していないがため、同じモデルを書き下すのに、えらく面倒くさい表記になってしまい、全員が混乱するという事態によく陥っていた。
もしデータ分析の手法をきちんと理解して、正しく応用したいなら、まずは線形代数をきちんと理解するべきだ。たぶんこの時点で、(筆者の考える、正しい)データサイエンティストになりたい人間の99%は脱落する気がする。
2. 何がなんでもきちんとしたデータを取ってこれるスクリプティング能力
データ分析の現場にいる人ならわかると思うが、データ分析で一番時間がかかるのは、データを集めてきて、使えるかたちに変換し、かつそれが正しいデータであることを確認する作業である。このステップでしくじると、残りの作業が全部ムダとなるので、非常に重要なのだが、データサイエンスな方々は講演とかで語ろうとしない。機械学習とか、未来予想とかといった夢が膨らむトピックと無関係だからかもしれない。
ただ、このステップ無しではデータ分析のプロジェクトは進まない。「そんなのエンジニアにやらせればいい」と言いたいのはやまやまだが、基本的にデータ分析というのはプロトタイプのフェーズの仕事が多いので、なかなかエンジニアの時間を貰うのが社内政治的に難しい上、何回も試行錯誤しながらデータを加工するので、他の人に逐一頼んでいたら、いつまでたっても分析が終わらない。ということで、自分でデータを取ってきて、自分で加工して、自分で内容をチェックする必要がある。
スクリプティング能力と書いたが、別にUnix系である必要はなく、PowerShellでもExcelでもいい。大事なのは、「他の人にお願いしなくても、データベースやデータウェアハウス、ファイルサーバーのアクセス権だけ貰ったら、あとは一人で作業が進められる」技術力だ。
ぼくの経験だと、統計・機械学習系のPh.D.の人たちは、この汚れ仕事を嫌がる人が多かった(中にはそうじゃない人もいたが)。そんな鈍臭い作業をするのはPh.D.としてのプライドが許さなかったのかもしれないし、そもそもシェルスクリプトをちゃっちゃか書く必要がアカデミアでは無いのかもしれない。
3. データに疎い人たちの期待値を上手に設定し、彼らを味方につける政治力
データ分析というのは、基本的に画期的な結果が出ないものである。クオンツ時代、散々いろいろな機械学習の手法を試した結果、熟練のトレーダーのフィードバックを元に説明変数を注意深く選んだ重回帰分析が一番パフォーマンスが出るなんてことがざらだったし、パフォーマンスが出るといっても、ベースラインのトレード戦略に比べて3−4%売り上げが改善できれば良い方だった。
ただ、データ分析とか統計に疎い人ほど、それが銀の弾丸だと勘違いしやすい。「おい!先週ナントカさんの講演で聞いたぞ。うちの競合はキカイガクシュウとやらで売り上げが30%も伸びたらしいじゃないか!お前らもやるんだ、キカイガクシュウ を!!!」
大体マーケターが公表する数字なんか幾分盛ってあるし、仮に売り上げが30%伸びたとしても、それが一つの機械学習アルゴリズムだけに起因するなんて、少なくとも金融ではまず考えられなかった。ただ、統計と合計と合コンの違いもわからない人に何を説明しようが、いったん空高く設定されてしまった期待値を、がっかりさせずに着地させるのは至難の業である。
政治力、というといささか語弊があるかもしれないが、データ分析者は、「何がどれくらいできて、何ができないのか。できないとしたら、それはなぜなのか」を、門外漢に上手に伝え、うまく期待値を抑えつつ、予想以上の結果を見せる(あるいは魅せる)コミュニケーション能力が必要だと日頃から感じている。それがきちんとできていれば、左程むずかしいことをしなくても社内評価が下がるということはないと思うし、逆にどんなに分析を頑張っても、その効果と価値を社内で啓蒙できなければ、「なんかむつかしいことやってるオタク集団」と揶揄され、煙たがられるのが関の山である。
それでも「データサイエンティスト」を目指したい人は頑張ってください(^ω^)/