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

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


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

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

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

#アプローチドリブンではなく、データドリブン
![データ.png](https://qiita-image-store.s3.amazonaws.com/0/148136/e018b981-a8c5-a483-a8e8-63a32397b301.png)

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

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

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

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

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

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

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


#使用した参考書
##データサイエンス
**ゼロからはじめるデータサイエンス**
![ゼロからはじめるデータサイエンス.png](https://qiita-image-store.s3.amazonaws.com/0/148136/547c3b6e-acef-770d-fd9c-291e6308b2c7.png)
データサイエンスの入門書。コードを書きながらアプローチを理解できる１冊。多くのアプローチがあるので、勉強したいアプローチのはじめの一歩としてこの本で勉強するとアプローチの感覚がつかめるでしょう。

**Pythonによるデータ分析入門**
![Pythonによるデータ分析入門.png](https://qiita-image-store.s3.amazonaws.com/0/148136/b132ea61-902b-db0b-2b2a-0ef1e1f3b067.png)

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

**Pythonではじめるデータラングリング**
![Pythonではじめるデータラングリング.png](https://qiita-image-store.s3.amazonaws.com/0/148136/187c6c78-79c6-b1e0-34dc-2a06cbce045b.png)
もはや辞書。ExcelやPDF等、データを抽出するときに頼りになると思われる。実はあまり読んでいない。


##機械学習
**Pythonではじめる機械学習**
![Pythonではじめる機械学習.png](https://qiita-image-store.s3.amazonaws.com/0/148136/fe590119-74df-9755-19c6-605c49a7e536.png)
Pythonで機械学習の勉強をはじめるならおすすめしたい１冊。画像にはありませんが、帯に**ニューラルネットを学ぶその前に**と書いてあるのが印象的です。アプローチだけでなく、チューニング方法も学べます。

**Python機械学習プログラミング**
![Python機械学習プログラミング.png](https://qiita-image-store.s3.amazonaws.com/0/148136/21d523ef-c067-bdde-cdb3-3e5c608d9224.png)
こちらもPythonで機械学習を勉強をするなら良いかもしれません。ただ、数式が苦手な人には抵抗があるかもしれません。

##深層学習・Deep Learning
**ゼロから作るDeep Learning**
![ゼロから作るDeepLearrning.png](https://qiita-image-store.s3.amazonaws.com/0/148136/af1fa15e-7ec6-c72b-d625-54f5ba6261a5.png)
Deep Learning、Neural Networkの計算方法から実装まで学べる本。この本を理解できないようであれば、数学の復習をおすすめします。

**深層学習**
![深層学習.png](https://qiita-image-store.s3.amazonaws.com/0/148136/5d8e301d-0ab4-d7ce-6df1-541ab1078684.png)
こちらは理論の本。この本を理解、説明できるならば**深層学習知ってます！**と言っても良いのではないでしょうか。

##スクレイピング、クローリング
**Pythonによるスクレイピング＆機械学習**
![Pythonスクレイピング＆機械学習.png](https://qiita-image-store.s3.amazonaws.com/0/148136/173a2165-6e80-04f1-13c3-a3385428db54.png)
スクレイピング＆機械学習とあるが、自然言語処理やチャットボット、深層学習等、幅広く触れている１冊。とりあえず技術を経験したい人には良いのではないでしょうか。

**Pythonクローリング＆スクレイピング**
![Pythonクローリング＆スクレイピング.png](https://qiita-image-store.s3.amazonaws.com/0/148136/3f2558cb-bf4b-dc5e-8050-956878bdb581.png)
Webスクレイピング、クローリングを学びたい人にはこちらの方が良いかもしれません。

##その他
**RStudioではじめるRプログラミング**
![RStudioではじめるRプログラミング入門.png](https://qiita-image-store.s3.amazonaws.com/0/148136/29a8cefe-d222-45e2-aa69-ee15c68c4369.png)
RStudioを使う機会があったので、勉強しました。Rで関数を作る方法等学べます。

**これからの強化学習**
![これからの強化学習.png](https://qiita-image-store.s3.amazonaws.com/0/148136/569a4122-998a-96d2-6474-a4b6915fd71c.png)
学生時代に強化学習をやっていたので購入。
これから読む。


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

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

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

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