機械学習をゼロから学ぶための勉強法 

# はじめに
 データサイエンスや機械学習っておもしろそう！と思いつつも、どうやって勉強をしたら良いかわからない......と感じた経験はありませんか？
ちなみに自分もその一人です。
 この記事では、***機械学習ってそもそも何？ AIという言葉は知ってるけど詳しいことはわからないというような初学者でも、知識・経験を積んで機械学習に取り組めるようにするために必要な基礎の基礎から学ぶための勉強法***を自分の経験をもとに紹介します！(ここで紹介するものは機械学習の中級者以上の方でも基礎知識の復習として活用できるものかなとも思っています）

この記事の続編(データサイエンスはじめて1か月以内で参加したコンペで銀メダル(上位3%)とるまで！)は[こちら]()


# 概要 (基本的にはこの3stepです)
1. 基礎知識をつける(単語・用語の理解)
2. ライブラリの使い方を理解
3. 実際にコンペに挑戦([Kaggle](#kaggleとは)) 

# 1.機械学習&ディープラーニングのしくみと技術がこれ1冊でしっかりわかる教科書
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/474340/ca3e64f9-8849-9f41-5e22-7ac266325267.png)

[amazonリンク](https://www.amazon.co.jp/%E5%9B%B3%E8%A7%A3%E5%8D%B3%E6%88%A6%E5%8A%9B-%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92-%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%AE%E3%81%97%E3%81%8F%E3%81%BF%E3%81%A8%E6%8A%80%E8%A1%93%E3%81%8C%E3%81%93%E3%82%8C1%E5%86%8A%E3%81%A7%E3%81%97%E3%81%A3%E3%81%8B%E3%82%8A%E3%82%8F%E3%81%8B%E3%82%8B%E6%95%99%E7%A7%91%E6%9B%B8-%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE%E3%82%A2%E3%82%A4%E3%83%87%E3%83%9F%E3%83%BC/dp/429710640X)

はじめて学ぶような分野の場合、まず問題に出てくるのは「日本語がわからない」(専門用語がわからない)ということ。これはどの分野にでも共通することだとは思いますが、機械学習に関しては特に当てはまると思います。
そのような状況を打破するためにオススメな本がこの本で、基礎の基礎から教えてくれるまさに「教科書」です。

## 簡単な内容紹介
1章 : 人工知能の基礎知識について
(AI、機械学習、ディープラーニング、歴史的背景など、はじめに固めておくと良い基礎知識がまとめてあります)
2〜4章 : 機械学習について
(機械学習系の文献を見ているとよく出てくる基礎知識から、アルゴリズムまでを説明)
5〜7章 : ディープラーニングについて
(ディープラーニングの基礎知識からプロセスやアルゴリズムを説明)
8章 : システム環境と開発環境
(プログラム言語の選択のポイントから機械学習用ライブラリとフレームワーク、ディープラーニングのフレームワークの説明)
＊個人的には、p214の機械学習の流れとライブラリをまとめた図はわかりやすく、このような流れで行うのだということが理解しやすかったです。


## オススメの読み方
1. まずは一読 (わからない単語があっても読み飛ばすくらいの気持ちで一通り読んでみる)
→これをやるだけでも他の記事や文献を見てた時に、わからない単語ではなく、見たことのある単語から始まるので学びやすいと思います！

2. 基礎知識が書いてある部分を重点的に再読+開発の流れがわかる最終章も
(章立てでいうと、1章、2章、5章、8章)

3. ある程度読んだら、次のステップへ進んでこの本はわからない単語が出てきたら引くためのリファレンス本として活用する

# 2.[データサイエンスのためのPython入門講座](https://datawokagaku.com/python_for_ds_summary/)
かめ@米国データサイエンティスト さんのブログ
[![Screenshot from Gyazo](https://gyazo.com/abe82784f9c8e1b372b1684254457e08/raw)](https://gyazo.com/abe82784f9c8e1b372b1684254457e08)
かめさんのブログ自体、勉強になることが多く書いてあるので時間を見つけて読んでみると良いですが、特にオススメなのがこの講座。機械学習をやるときに必ず使うと言って良いライブラリが体系的にまとめられていてとても理解しやすいです。(この後紹介するKaggleスタートブックもこの記事を読んでからだと理解がさらに進むと思います)

## 簡単な内容紹介
(この内容紹介については、ブログに書いてある「本講座の目的」の部分がわかりやすく書かれていたのでその部分から引用します)
本講座では，Pythonでデータサイエンスをするにあたり必要な環境構築・Pythonの基本・データサイエンスに使うPythonライブラリの基本・その他データサイエンスで頻出のPythonモジュールの’基本の’使い方をマスターすることを目的としています．

この講座で目指すところは

Pythonでデータサイエンスに必要なデータ処理をするためのツール・ライブラリ・モジュールの使い方の基本をマスターする
Excelなどの表計算ツールを使うことなくデータ処理ができる
画像ファイルなどのデータファイルに対して処理ができる
日頃のデータ処理(Excelなど)をPythonで自動化できる
といったところです．一部統計学についても触れていますが，「データサイエンスを学べる講座」ではなく「データサイエンスのためのPythonを学ぶ講座」であることに注意してください．

ただ，講座の中にはいたるところに「現場で使えるテクニック」や「データサイエンスの頻出テクニック」をふんだんに盛り込んでいるため，広義の意味でのデータサイエンスを学ぶことはできます．

とにかくわかりやすく書いたつもりです．難しい単語はあまり出てきませんし，かなり噛み砕いて説明しているので途中で止まることはないと思います．

また，教科書的に教えるのではなく，「現場では実際どう使うのか」をいたるところに盛り込んでいます．そのため「ある程度体系的に網羅的にかつ実戦で使える内容」になっています．
(ここまで引用)

紹介されているものとしては、
- pythonの基礎
- NumPy (数値計算に用いるもの)
- Pandas (データの操作や解析をするためのもの(Excelで行うような表計算がより早くできる))
- matplotlib(グラフ描画用のもの)
- Seaborn(matplotlibと同様、グラフが書けるがよりきれいに簡単に書ける)
- その他の便利ライブラリ・モジュール等

## オススメの読み方
1. まずは一読 (鉄則です！)

2. これは1と同時に行っても良いと思いますが、手を動かして実行結果や動きを学ぶ。(読んでいるだけだと身につかないことも多いと思います）
→ここで題材として取り上げられている[Kaggle](#kaggleとは)のtitanicというコンペはこの後に紹介するKaggleスタートブックのチュートリアルとしても行うので、あわせて実行できると理解もさらに進むと思います。

3. 繰り返し読む＋ときどき戻って読む


# 3. 実践Data Scienceシリーズ PythonではじめるKaggleスタートブック (KS情報科学専門書) 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/474340/e463b6d2-1509-07b1-e375-c44a4ceeaf23.png)

[amazonリンク](https://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5Data-Science%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-Python%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8BKaggle%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%83%96%E3%83%83%E3%82%AF-KS%E6%83%85%E5%A0%B1%E7%A7%91%E5%AD%A6%E5%B0%82%E9%96%80%E6%9B%B8-%E7%A5%A5%E5%A4%AA%E9%83%8E/dp/4065190061)

[Kaggleに登録したら次にやること ～ これだけやれば十分闘える！Titanicの先へ行く入門 10 Kernel ～](https://qiita.com/upura/items/3c10ff6fed4e7c3d70f0) と [kaggleのチュートリアル](https://note.com/currypurin/n/nf390914c721e)の著者2人がタッグを組み、書いた[Kaggle](#kaggleとは)のチュートリアル本です(もとになっている2つはどちらも人気でわかりやすい本(記事)です！)

これまでに紹介した2ステップでは実践という部分が少し少なかった部分がありますが、やはり実際に使いながら学んでいくことで得られるものも多いと思います。しかし、そうはいってもどこから手をつけていいかわからないというのが本音。そのような中で、この本に沿って[Kaggle](#kaggleとは)の初学者向けのチュートリアルである「Titanic」コンペに参加するというのは、はじめの一歩としてはとても良いと思います！

## 簡単な内容紹介
1章 : Kaggleとは？からアカウントの作り方までを説明 (導入に最適)
2章 : タイタニックでのチュートリアル
3章 : 複数テーブル、画像・テキストデータの扱い方の説明
(2章で試したtitanicのコンペ以外の形式のコンペへの導入もされている)
4章 : さらに学ぶためのヒントが書かれたページ
(チュートリアルをやっただけで終わらせない。その先にもつながる内容が書いてあります)

### おすすめポイント➀ : サンプルコード
サンプルコードがあがっているので、それにしたがってやっていけば、Kaggleのアカウント登録は必要ですが、ほぼノンコーディングで一通りの処理を実践することもできます。(詳しくはわからないけど、概観をつかみたいというときは、一回実行してみてコードの解釈をしてみるというのもいいかもしれません)
### おすすめポイント➁ : 対談記事
著者2人が対談形式でまとめてあるページで、上級者が当たり前としている部分や見方だけでなく、Kaggleをはじめたきっかけや良かったことなど読んでいて、ためになるものが多くあって勉強にもなります。
### おすすめポイント➂ : note
 Kaggleの周辺知識や+αの知識についてコラム形式でまとめられているので、わかりやすいです。(自分で調べれば出てくる内容であるかもしれませんが、わかりやすくまとめられているので、初学者にとってはありがたいです)

## オススメの読み方
(自分がまだできていない部分もあるので、現状での勉強計画です。)
1. 1章を読みKaggleの概観、イメージをつかむ
2. 2章を読みながら実践 titanicをやってみる
3. 3章を一読
(複数テーブル、画像、テキストコンペの内容は読んでおいて、該当テーマを実践するときにもう一度読む)
4. 実際にコンペに参加してみる。
Titanicの次に参加するコンペの選び方や、初心者におススメの戦い方が紹介されているページ(4章)があるので、それに従って参加してみるのもいいと思います！

[ KaggleのCompetitions Categoriesを整理してみた]( https://qiita.com/rinn650/items/51ed74616ac42b708264)
← Kaggleのコンペのカテゴリーがわかりやすく書いてあります！

# Kaggleとは
Kaggleとは、データサイエンスの目標達成を支援する強力なツールとリソースを備えた世界最大のデータサイエンスコミュニティです。
[![Screenshot from Gyazo](https://gyazo.com/91922abd4ded5249158a7605e41b4032/raw)](https://gyazo.com/91922abd4ded5249158a7605e41b4032)
↑ [Devsumi 2018summer](https://www.slideshare.net/HaradaKei/devsumi-2018summer)でのDeNAの原田さんの資料の中にKaggleとは何かが直観的に理解しやすいページがあったので、引用しました。
# 4. まとめ
私自身、機械学習歴は長くなく、初心者に部類される人だと思いますが、環境や教材に恵まれているおかげで、徐々にわかるようにはなってきています。なので、本記事では、初歩の学び方についてまとめることで、機械学習に興味はあるけれど、独学でどのように勉強すればよいかわからないという人へ少しでも役に立てたらと幸いと思っています。
これから自分も勉強していく中で、もっとこうしたほうがいいのではないかということや、他の人(上級者や中級者の方々)からもう少しこうした方が勉強しやすいのではないかということがあれば随時更新もしくは別記事にまとめることができたらいいなと思っています！

ちなみにですが、この記事に書いた3ステップの続きは(3のコンペの実践ともかぶる内容かもしれませんが)以下の記事などを参考にできるとさらに技術を磨くことができると思います
[機械学習初心者がKaggleの「入門」を高速で終えるための、おすすめ資料などまとめ](https://note.com/currypurin/n/nfbff5ebebbdc) Kaggleスタートブックの著者の一人である村田さん(カレーちゃん)の記事です。




# その他参考になる資料
## [regonn&curry のpodcast](https://twitter.com/regonn_curry)
おすすめ(毎週、Kaggleに対するテーマや新コンペについて話しているpodcastです)

## [Kaggleで学ぶ日本の機械学習活用大越](https://www.slideshare.net/ssuserafaae8/for-manabiya?ref=http://kaggler-ja-wiki.herokuapp.com/kaggle%E5%88%9D%E5%BF%83%E8%80%85%E3%82%AC%E3%82%A4%E3%83%89)

## [kaggler-ja slack](https://kaggler-ja.herokuapp.com/)
kagglerの日本人コミュニティのSlack

## [最短で機械学習エキスパートになる9つのステップ【完全無料】](https://qiita.com/jp_Pythonia/items/19a321e05d7e0db47fb6)

## この記事の続編
ここで書いた勉強法を実践後、はじめて参加したKaggleメダル対象のコンペで銀メダルを獲得しました。
その詳細については、下記記事で書いているので良かったら見てください。
[***データサイエンスはじめて1か月以内で参加したコンペで銀メダル(上位3%)とるま
で！***](https://qiita.com/crinoid/items/7c20a813406d3fb08cac)