##データサイエンティストってなんだろう
掲題の通り、昨今色々と言われてるデータサイエンティストなる職業について考えてみる。
業界にいてもこの職種はとかく定義が曖昧で、統一的な見解がない。
まあ正直、『データサイエンティストなんて名乗りたい奴が名乗ればいーんじゃねーのぉ』という話ではあるのだが、せっかくなのでこの期に個人的な考えを書いておこうと思う。
なお、普段からデータサイエンティストについて考えている諸氏にとっては目新しいことは特に書いてないかもしれない
どちらかと言えば、「データサイエンティストってどうやったらなれるんじゃい」、もしくは「流行りのデータサイエンティスト様を雇いたいけどどんな人採ればよいかのぅ」 って方々に見て欲しい記事なのでそのあたりはご了承願いたい
##世間一般の見解を見てみる
とりあえず世の中に既にある有名な幾つかの定義の俗説を見てみることにする。
"Data Scientist’ is a Data Analyst who lives in California"
カリフォルニアに住むデータアナリストを『データサイエンティスト』と呼ぶ
"A data scientist is someone who is better at statistics than any software engineer and better at software engineering than any statistician."
エンジニアよりも統計学に優れ、統計家よりもエンジニアリングに優れた人種のこと
どっちも上手いこと言ってるようで、元も子もないという気もする。
また、こんな有名な図もある
"THE DATA SCIENCE VENN DIAGRAM"
http://drewconway.com/zia/2013/3/26/the-data-science-venn-diagram
詳細は上記のリンクを読んで頂ければと思うが、要は『ハッキングスキル』『数学・統計学』『独自の強み』の3つを備えたのがデータサイエンティストというわけだ
※ここでは "独自の強み"とは(特定のビジネス知識とか)というニュアンスのことのようだ
または、日本の専門協会が、データサイエンティストに必要なスキルを公式発表している
データサイエンティストの定義・スキルセット・スキルレベル
http://www.datascientist.or.jp/news/2014/pdf/1210.pdf
ワーディングはやや違うが、上記のベンダイヤグラムとよく似ている。
##もっとわかりやすく、構造的な定義が欲しい
上記の既存の定義は言いたいことはわかるが、どれも十分なものではない気がしている。
その理由は次の2つだ
① 構造的でない。
ビジネスにおける分析業務のバリューチェーンが示されておらず、それぞれのスキルがどの局面でどのように必要なのかがわかりづらい
② スキルが『ある』か『ない』かの二元論的である
正直、上記のベン図で示される3つのスキルを包括的に完璧なレベルで取得するのは非常に難しい。
というか、そもそも『どのレベルで取得』すればよいのかがわからない。
この記事では、この2つの問題を解決する形で、データサイエンティストのスキルセットを構造的に定義して見たいと思う。
特に②に関しては、スキルのレベルとして『読み』『書き』の2レベルが存在するという概念を導入したうえで、必要なスキルセットの議論をしたいと考えている。
##データサイエンティスト =『マルチリンガル』論
常々、データサイエンティストという概念は『マルチリンガル(多言語話者)翻訳者』に少し近いのではないかと考えていた。データサイエンティストは複数の異なる言語を巧みに操り、また言語間の翻訳が出来なければならない。
ここで言っている『言語』とは、
・ビジネス言語
・数字/KPI
・統計学/数式
・プログラミング言語
などを指す。考えて見て欲しい。
経営者や企画部はビジネス言語で話をし、それ以外の言葉が通じないこともよくある。
『売上アップを目指せYo』というが、それが具体的な数式やアルゴリズムとして語られることはない。
統計家は難しい数式を扱うのが得意だが、それを現実のビジネスの出来事になぞらえて話すことが苦手だったりする。数式や数字の羅列をアウトプットしても、別の職種の人間は見向きもしない。
エンジニアは必ずしも数字に強いとは限らない。
また計算機はプログラミング言語以外をまるで理解しない。
もし仮に全てのプレイヤー(計算機は除くが)がデータ分析やデータドリブンの重要性を理解していたとしても、上記のようなシチュエーションはよく起こるものだ。
『同じ日本語で話してるんだから通じるやろ!』などと思ってはいけない。立場が違えばそれぞれが使う言葉とその背後にある意味は全く異なる。
この状態を打開するために『データサイエンティスト』は存在する、というのがこの記事で論じたいデータサイエンティスト像の姿だ。
それぞれの異なる言語の間を自由に行き来し、必要な場合は翻訳家となり、データ分析に関する一連のバリューチェーンを飛び回る便利屋となる必要がある。
##分析のバリューチェーンと『読み』『書き』
ビジネスにおいて分析のプロセスのバリューチェーンに関わる人はおおまかに下記のような構造になっている。そしてこのバリューチェーンは『書き』と『読み』の往復プロセスによってV字型にフローを構成することになる。一つづつ説明しよう。
まずたいていの分析プロセスは、ビジネスマネージャ(経営者とか、プロダクトマネージャとか、事業責任者とか)の『うちの売上構造もっと見える化しろYo』などという言葉に端を発して始まり、間に数人の関係者を経て最終的には計算リソースに届くことになる。
(もっとも、それぞれの人間が別れて分担しているわけでなく、複数の範囲を一人の人間がカバーしていることも大いにあるだろう。)
これが**『書き』のプロセス**である。
このプロセスの各ステップではざっくり言って、次のようなことが起こる。
各プレーヤのセリフは多分に象徴化した(かつ偏見を含んだ)ものであり、各君子が日頃このような言葉ばっかりを発しているわけではない...と思う。
ただし、仕事中はここに書いたような言語(同じ日本語かもしれないが、その言語をきちんと理解していないと会話が成立しない)を中心に会話していることは間違いない。
このプロセスを下に進めていくには非常に強力なスキルが必要になる。
一般的に 『書き』のプロセスのほうが『読み』よりも難易度が断然高い ことが多い。
企画・管理の人
ビジネスの知識とロジックを総動員して、意味があり納得感があり、かつ計算の可能なKPIを設計しなければならない。ビジネスマネージャの期待に答えた内容になっていることも重要だ。
分析・統計化の人
見たいKPIをどのように分析・定量化するかの具体的な方策を考える必要がある。使えるデータを精査し、(悪さをするデータを除くなど)実際に使うデータの範囲を決め、みる粒度について考え、必要であれば統計的なモデルを設計する必要がある。結果をどのような図表で見せるかも考えておかなければならない。
エンジニアの人
分析家の考えた計算ロジックを実装する。データの範囲や粒度が変わった時のことを考えて汎用的な設計をし、処理速度に留意する必要がある。場合によっては、統計モデルのパッケージの知識も必要になる。また、出力形式を熟慮し、必要であればビジュアライゼーションなどの手法に通じていることも望まれる。
計算インフラ
データ量によるが、計算リソースや並列化などのチューニングのために、インフラエンジニア的な知識を持った人材が必要になることもあるだろう。
基本的にこれら全てのスキルを1人の人間に求めるのは、酷というかほぼ不可能に近い。
よって『書き』のスキルをフルスタックで持った人間を"データサイエンティスト"と定義してしまうと、この職種はあっという間に詰んでしまう。
##『書き』と『読み』は難易度が違う
英語だろうがレバノン語だろうが、読みは書きよりも易しい。
よく日本の英語学習課程だと、Readingは強くなるがWritingやSpeakingは発達しない、という点が問題視されるが、個人的には読めるようになるだけで大いに意味はあると思う(読みというか、Listeningもできるようになるといいとは思うけど)
それはさておき、ビジネスプロセスは『書い』て、つまり分析してその結果を『読む』プロセスが重要だし、かつ面白い。
先ほどと同じように書くと下記のような感じだろうか。
このプロセスでは『書き』の能力が無くとも『読み』の力があれば十分に会話に加われるし、意見を言って貢献をすることも可能だ。
統計モデルを自分で組めなくても、入力したデータの構造とモデルの結果の読み方がわかっていればよい。
KPIを設計するのは半人前でも、各KPIの数値を読み解き、ビジネス的な解釈と仮説の立案ができれば良い
また、自分でコードをスクラッチで書けなくても、人のコードの一部を直したりして再利用する程度のスキルがあれば役に立つことがある。
これであれば、『書き』よりも習得のハードルは大幅に低いが、この程度でビジネスに役立つシーンは少なくない。
##必要なことをまとめてみる
ここまで論じてきたことをざっくり表にまとめてみるとこんな感じかと思う。
大体この表で『書き』で2個くらいに強みがあり、それ以外は『読み』ができるのであれば、データ分析プロセスに関わる人間としては十分強力なのではないかと思う。
つまり言い換えれば、**名乗りたければデータサイエンティストを名乗っても良いんじゃね?**ということだ。
強調したいことは、
1.全部の分野を『書ける』必要はない
できるのであればそれに越したことはないが、現実的に難しい。
また『書き』のカバレッジを頑張って増やすよりも、既に書ける分野をさらに特化して深めるほうが有益な場合もある
2.『書け』ない言語も『読め』れば ( ・∀・)イイ!!
先程も述べたとおり、英語だろうがレバノン語だろうが、読みは書きよりも易しい。
そして自分の仕事の内容によってはそれで十分なこともある。
無理にWriting/Speakingまで行かず、Reading/Listeningできるようになることが第一。
ってことだ。
重要なのは "どの言語で交わされる会話にも参加できるようになる" ことだ。
そして自分が『書ける言語』の会話であればよりイニシアティブを持って会話に参加すればいい。
##終わりに
つらつらと書いたが、言いたいことは
『完璧なクアトロリンガルは無理だと思う絶望。でもバイリンガル + 2か国語 読み聞きできる』程度ならなんとかなりそうだし、それでも結構役に経つから頑張ろうぜ
ってことです。
『Ph.D持ちで、Spark,Hadoop,SQLあたりは当然に使えて、Pythonが分析のみならずプロダクトに組み込むアルゴリズムの構築レベルでかけて、統計モデルと機械学習の知識が豊富で、ビジネス経験が十分で、チームマネジメントに長け、コミュニケーションの高い人 募集』みたいな馬鹿げたデータサイエンティスト求人がこの世からなくなりますように。
Enjoy!
##こちらの記事も
データサイエンティストに興味があるならまずこの辺りを見ておきな、って文献・動画のまとめ
http://qiita.com/hik0107/items/ef5e044d2f47940ba712