データサイエンティストを目指して半年で学んだことまとめ

はじめに

本記事では、データサイエンティストを目指して勉強した半年間で学んだこと、気付いたことをまとめます。これからデータサイエンティストを目指して勉強する人の参考になればと思います。

最初の一手

個人的にではありますが、最初はアプローチの理解から始めると思いますが、数式プログラミングの両方を勉強する方が良いと思います。数式→プログラミング or プログラミング→数式の順序はどちらでも良いと思いますが、プログラミング(フレームワーク)のみはやめた方が良いと思います。出力結果の解釈で苦労することになるので、理論、数式はしっかり理解した方が良いです。

プログラミング、フレームワークの力で、機械学習ができるのは事実ですが、作ったモデルや予測結果の説明ができなければ価値がありません。

そして、モデルは作るだけでなく、評価・改善していく必要があります。その際に、グリッドサーチのようにモデルのパラメータを最適化すべきなのか、学習データを見直さないといけないのか判断しなければなりません。パラメータの最適化であれば、プログラミングで対処できますが、データの見直しは数理統計の知見が必要になります。理論もしっかり勉強しましょう。

アプローチドリブンではなく、データドリブン

データ.png

モデルの精度を上げるために、アプローチだけで解決しようという考えではすぐに限界がきます。これまで、サポートベクターマシーン、決定木、ニューラルネットワーク(CNN、RNN含む)を勉強して思ったのが、アプローチ第一ではないということです。

モデルの精度を上げるために、「とりあえず、Deep Learningで!」「分類問題を解くならSVM!」等、アプローチだけに気をとられていると、すぐに精度があがらなくなります。勿論、納得できる良い精度は出ません。

この理由は、機械学習はデータからパターンを見出しているからです。精度を上げるためにはモデルではなく、データに対してより多くの時間をかける必要があります。実際、データクレンジング、データ加工等、いわゆる前処理に全体の約8割を費やすと言われています。このことからもアプローチではなくデータであることがわかります。

アプローチよりデータドリブンと書きましたが、最近は「課題解釈」も重要ではないかと感じています。データ分析して明らかにしたいこと、予測したいことを正確に解釈した上で、データの処理、モデル作成・評価の流れになるので、最初に解決したい課題の解釈を誤ると分析全体がおかしな方向へ進んでしまうからです。

次への一手

一連の流れを経験できたら、次は複数のアプローチを習得したいのか、一つのアプローチを追究したいのかを決めれば良いと思います。

活躍できる幅を広げたいなら、複数のアプローチを習得して、課題や状況に応じて使い分けられるように勉強すれば良いと思います。業界、分野を問わずデータ分析したい人はこちらかなと思います。

一方、自社、自部門の分析担当等、特定の業界、分野限定でデータ分析をする人は一つアプローチを追究する方が良いのかなと思います。現状、万能なアルゴリズムはまだ存在しないので、課題に対して成果が報告されているアプローチに絞って勉強する方が効率的だと思います。

使用した参考書

データサイエンス

ゼロからはじめるデータサイエンス
ゼロからはじめるデータサイエンス.png
データサイエンスの入門書。コードを書きながらアプローチを理解できる1冊。多くのアプローチがあるので、勉強したいアプローチのはじめの一歩としてこの本で勉強するとアプローチの感覚がつかめるでしょう。

Pythonによるデータ分析入門
Pythonによるデータ分析入門.png

NumpyやPandas、Matplotlib等、機械学習でモデルを作る前にやるべきことが学べる1冊。データの処理を勉強したいときに手元にあるとうれしい。

Pythonではじめるデータラングリング
Pythonではじめるデータラングリング.png
もはや辞書。ExcelやPDF等、データを抽出するときに頼りになると思われる。実はあまり読んでいない。

機械学習

Pythonではじめる機械学習
Pythonではじめる機械学習.png
Pythonで機械学習の勉強をはじめるならおすすめしたい1冊。画像にはありませんが、帯にニューラルネットを学ぶその前にと書いてあるのが印象的です。アプローチだけでなく、チューニング方法も学べます。

Python機械学習プログラミング
Python機械学習プログラミング.png
こちらもPythonで機械学習を勉強をするなら良いかもしれません。ただ、数式が苦手な人には抵抗があるかもしれません。

深層学習・Deep Learning

ゼロから作るDeep Learning
ゼロから作るDeepLearrning.png
Deep Learning、Neural Networkの計算方法から実装まで学べる本。この本を理解できないようであれば、数学の復習をおすすめします。

深層学習
深層学習.png
こちらは理論の本。この本を理解、説明できるならば深層学習知ってます!と言っても良いのではないでしょうか。

スクレイピング、クローリング

Pythonによるスクレイピング&機械学習
Pythonスクレイピング&機械学習.png
スクレイピング&機械学習とあるが、自然言語処理やチャットボット、深層学習等、幅広く触れている1冊。とりあえず技術を経験したい人には良いのではないでしょうか。

Pythonクローリング&スクレイピング
Pythonクローリング&スクレイピング.png
Webスクレイピング、クローリングを学びたい人にはこちらの方が良いかもしれません。

その他

RStudioではじめるRプログラミング
RStudioではじめるRプログラミング入門.png
RStudioを使う機会があったので、勉強しました。Rで関数を作る方法等学べます。

これからの強化学習
これからの強化学習.png
学生時代に強化学習をやっていたので購入。
これから読む。

さいごに

半年間、データサイエンティストを目指して勉強して思うことは、決して簡単な分野ではないが、非常におもしろい分野であるということです。如何に良い仮説を立てられるか、検証結果が仮説を裏付けられているか、次はどこに注目するか、答えのない世界で果てしない試行錯誤は辛いときもありますが、良い結果を出すためにやりがいがあります。

ただ、技術力だけでなくコミュニケーション力も同じくらい重要なのも事実です。「AIが、機械学習が勝手に課題解決してくれる」と思っている人や「とりあえず機械学習で何かやって」という人に何を分析するのかを聞き出したり、分析結果から読み取れることを説明したり、次に何をすべきかを伝える必要があるからです。

「AIで何かやって」という人程、「AIが○○という結果を出しました」という説明に納得しないので、如何に相手を納得させることができるかがポイントになります。コミュニケーション力は相手に伝えるためだけでなく自分の身を守るためにも必要ではないかと思っています。

以上、半年間のまとめでした。