はじめに
晴れてデータサイエンティストとしてデビューしたものの、実務の最前線で活躍できるようになるには、様々なデータに触れる必要があります。
データを解析するには、色々なテクニックが必要となり、一朝一夕で習得できるものではありません。しかし、できるだけ早く習得したいというのが、正直なところはないでしょうか。
そのためには、独学では限界があるので、先輩の技を盗むことが一人前のデータサイエンティストになるためには必要となります。
知識は民主化したけど、ノウハウが民主化されていない
オープンソースは、インターネットが生み出した画期的な概念です。オープンソースとは、ソースコードが公開され、そのソースコードを目的を問わず、利用、改良、頒布できるソフトウェアのことです。
データサイエンスでよく活用されるPythonも、オープンソースのプログラミング言語です。Pythonのscikit-learnというライブラリで活用するアルゴリズムも、オープンソースです。scikit-learnとは、Pythonで機械学習をするのに欠かせないライブラリで、数多くの教師あり学習モデル、教師なし学習モデルだけでなく、データの加工にも有用なモジュールで構成されています。
これを利用するだけで、様々なアルゴリズムを簡単に利用することが出来るので、データサイエンティストは、まず覚えなければならないライブラリの一つです。
scikit-learnを使った、簡単な機械学習の例を示します。(例文1)
<例文1>
from sklearn import linear_model
reg = linear_model.Lasso(alpha=0.1)
reg.fit([[0, 0], [1, 1]], [0, 1]) #Lasso回帰でモデル作成
Lasso(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=1000,
normalize=False, positive=False, precompute=False, random_state=None,
selection='cyclic', tol=0.0001, warm_start=False)
reg.predict([[1, 1]]) #作成したモデルで予測
array([0.8])
このように、シンプルな文法で簡単に機械学習を行えるのが、scikit-learnの特徴です。このような有用なライブラリが、無料で手に入ってしまうのです。
さて、オープンソースと資本主義は、お互いに影響を与えあっています。
使用者側は無料で最新のツールを使う嬉しさがある一方、提供側はユーザーを囲い込んでデファクトスタンダードを握ったり、有料プランへの誘導して利益を出したりできる、WIn-Winの関係が成り立っています。
事実、GoogleやMicrosoftといったメガテックカンパニーは、ツールを作成してはオープンソースとして無料で公開しています。
例えば、Googleはtensorflowを、MicrosoftはlightGBMというアルゴリズムをオープンソースにしました。tensorflowはディープラーニングのフレームワークで、全世界で幅広く利用されています。
このように、無料で使えるプログラミング言語、ライブラリ、フレームワークが、ネットから簡単に入手でき、誰もが容易にデータサイエンスの世界に入っていける状況となっています。
つまり、データサイエンスの知識に関しては、ネット上でいくらでも得ることができると言えます。
しかし、その使い方に関しては、ネット上に無かったり、あったとしてもバラバラに散らばっているため組み合わせて使っていくとものすごい時間がかかってしまうのです。
残念ながら、ネットでは体系的にまとめられたサイトが少ないので、辞書的には使えるものの、知識の蓄積に繋げにくいという弱点があります。
一方、書籍であれば、そのタイトルのテーマについて、体系的にまとめられていることが多いので、何度も繰り返して読めば、本に載っている知識は蓄積しやすいでしょう。
ところが、データサイエンスの世界の動きは非常に激しく、新しいアルゴリズムやフレームワークが出たと思ったら、また次の新しいものが出たりします。そのため、書籍のみに頼っていると、気が付いたら蓄積した自分の知識が陳腐化してしまう、ということも起こり得ます。
このように、最新の知識を体系的に整理して自分のものにするのは、なかなか大変なことですが、それでもどこかには欲しい情報が落ちているので、困ったときに必要なものを拾ってくることはできるでしょう。
しかし、ネットや書籍に、ありとあらゆる知識が掲載されているかと言えば決してそうではなく、データ解析の細かなノウハウを個人の中にとどめて、その人の武器にしていることも多々あります。
したがって、そのような公にならないノウハウを自分のものにしたければ、他の人から盗んで自分のものにするしかないのです。
新人がまずやるデータ前処理で先輩の技を盗め
さて、機械学習で何らかのモデルを作ろうとしたとき、まずやることになるのが、データの前処理です。データ解析は前処理が8割とも言われるように、解析がうまくいくかどうかは、データの前処理にかかっていると言っても、過言ではありません。前処理を制する者がデータ解析を制する、と言ってもよいでしょう。
データの前処理は地味で苦痛な作業なので、決して楽しい作業ではありませんが、このプロセスにこそ、多くのデータ解析のノウハウが詰め込まれています。
もちろん、前処理以外にも、前処理が終わった後の機械学習のアルゴリズムの選択や、適切なハイパーパラメータの決め方など、ネットでは見つけにくい重要なノウハウはいくつもあります。
ここで先輩がどんなアルゴリズムをどういう基準で選択するのか、データを処理する上で効率の良い方法は、など、様々なことを選択して作業することで、ノウハウを習得することができます。
この時どっちの選択をすれば良いんだろう、という時、先輩の判断をどんどん盗んでいくべきです。
そうすることで、ネットや書籍では見つからない、実践的なノウハウを自分のものにすることができます。
データサイエンスの現場には秘伝のタレがいっぱい
データサイエンスの現場には、こういう時は、こうするという秘伝のタレがいっぱいあります。
変数間の関係を知りたいけど、アルゴリズムの選択は、ランダムフォレストとロジスティック回帰どちらを使うべきだろう?
正規化というけれど、0~1の範囲に変換する正規化(MinMaxScaler)を使うべきなのか、標準偏差を活用したもの(StandardScaler)にするべきか?
カテゴリカル変数も正規化すべきなのか?
カテゴリカル変数が整数でエンコードされているときに、ダミー変数化する方法は?
横持ちデータを縦持ちデータにすべきか?
などなど、データサイエンス業務をやっていく上で様々な選択をすることになります。
このような秘伝のタレを、どれだけ自分のものにできるかで、対応可能なデータの範囲が変わってきます。もし、どんなデータでも迅速に処理し、意思決定に有用なアウトプットを素早く提供できるデータサイエンティストを目指すのであれば、色々なデータに触れて、秘伝のタレをたくさん自分のものにしてください。
結果の解釈は新人には難しい
さて、複雑なデータを頑張って前処理して、機械学習のアルゴリズムを使って、無事モデルを作ることができたとしましょう。
しかし、結果を出しさえすればよいかと言うと決してそうではなく、得られた結果を基に今後どうアクションすればよいかを、依頼者に説明する必要があり、また、依頼者からの質問に対して適切に応える必要があります。
しかし、結果が出た後の解釈も、経験が不足していると自信を持って答えられないでしょう。
例えば、こんな混合行列の結果が出たとします。
陽性クラス | 440 | 60 |
陰性クラス | 140 | 360 |
陽性と予測 | 陰性と予測 |
正答率:80%
適合率:76%
再現率:88%
F値:0.82
さて、この結果は、良いのでしょうか、悪いのでしょうか。
ここから改善するのか、本番運用するのかなどを決定していかなければいけません。もし、改善するのであれば、どこを改善すべきかなどを決める必要があり、データサイエンティストはその提案をできる必要があります。
これが広告配信をして、クリックするユーザーを予測するアルゴリズムであれば、まずまず予測できているので、スケールを拡大して実験を継続しようという結論になるかもしれないし、これがレントゲン写真から癌かどうかの判定をするアルゴリズムであれば、精度が悪すぎで全然使えないので、改善が必要という結論になるかもしれません。
同じ解析結果でも、何をデータを解析して何をやりたいのかによって、当然結論は変わってきます。
何が原因でこのような結果になっているのかについて、元データや解析プロセスから振り返ることができる必要があります。
最も重要な解析をした後にも様々な選択をする場面があり、そこでは経験が非常に重要なのです。この選択をできるスキルは、短期間で身に付くものではないですが、先輩の真似をすることでスキル習得までの期間を短縮できます。
おわりに
新人のデータサイエンティストがいち早く一人前になるためには、出来るデータサイエンティストの技をどれだけ盗めるかが重要であることを述べてきました。
ネットや書籍で明らかになっていない細かなノウハウは、先輩から習得するしかありません。ただ漫然と上司や先輩に言われる通りに業務をこなすのではなく、この場面ではどんな判断をすることを求められているのかを常に意識し、業務を通して着実にノウハウを蓄積していき、一人前のデータサイエンティストとして独り立ちすることを目指していってください。