【初心者】プログラミング初心者が機械学習を学び始めた。

プログラミング初心者が機械学習を学び始めた。

#はじめに
機械学習に全く触れたことがなかった理系修士学生です。データサイエンスという分野に興味が湧き、勉強し始めました。
いまだ初心者同然ですが、自分は最初何から手をつけていいかわからず、無駄な時間を過ごしてしまったので、そんな方の手助けになればいいなと思います。

#やったこと

1.[「Pythonではじめる機械学習」](https://www.oreilly.co.jp/books/9784873117980/)をなんとなく実行しながら読む。
2.[「Coursera」のStanford大学が提供しているMachine Learningの講座](https://www.coursera.org/learn/machine-learning)
3.[「筑波大学 オープンコースウェア」の機械学習の授業](https://ocw.tsukuba.ac.jp/course/systeminformation/machine_learning/)
4.[「Python 機械学習プログラミング」](https://book.impress.co.jp/books/1117101099)をなんとなく実装しながら読む
5.[「Pythonデータサイエンスハンドブック」](https://www.oreilly.co.jp/books/9784873118413/)をなんとなく実装しながら読む


**1** をやって思った以上に腹落ちしなかったので、というか英語を日本語に訳しているので言い方が周りくどくて頭にスッと入ってこなかったので、まずは動画で学ぼうと思って **2** をやりました。**3,4,5**は同時進行しました。

#Pythonではじめる機械学習
![cover.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641214/db20a99e-8b05-8acc-09de-590749b08bb1.jpeg)

これはamazonで評判もよく、オライリーシリーズでは良書とされています。**数学的知識は一切不要**でscikit-learnを使って機械学習の手法を実際にコードを書いて動かしていくものです。出力を見ればなんとなく何をやっているのかはわかるし、機械学習のそれぞれの手法についても説明がなされているので、わかりやすいことにはわかりやすいです。しかし、日本人には伝わりづらい言い回しだったり、内側のアルゴリズムが気になって腹落ちしませんでした。

#*Coursera*のMachine Learningの講座
機械学習の概要から、回帰問題、分類問題、教師なし学習（次元削減、クラスタリング）など基本的なことが全て学べます。かなりわかりやすいですし、**「ここは理解できなくてもいいよ」**と講師の人が教えてくれます笑
僕は動画しか見ていませんが、この講座にはプログラミング課題がついています。内容をやや重めで、Octaveというプログラミング言語を使います。
僕はとりあえずscikit-learnで実装できればいいやと思い、「理論やアルゴリズムがどうなっていいるのかわかればいいや」程度だったので動画だけを全部見ました。

`Courseraの講座に関しては以下の記事がかなり詳しく書いてくれています。`
[https://qiita.com/junichiro/items/3457e33e502086a200f1]
(https://qiita.com/junichiro/items/3457e33e502086a200f1)


#気にいなっていた筑波大の「機械学習」
「Coursera」の講座を見て、中の仕組みなどがざっくりと理解できましたが、[こちらの筑波大の機械学習の授業](https://ocw.tsukuba.ac.jp/course/systeminformation/machine_learning/)も**YouTube**で見られるので気になっていました。
日本語なので理解しやすく、講師の方もかなりわかりやすいです。スライドや演習問題も提供されています。
「Coursera」の授業と比べると、**数学的知識がやや必要**になります。数式や損失関数の導出などで線形代数や微分、確率統計の基本的な知識が必要になります。演習問題も言葉で説明するタイプとコードを動かしてデータを読み取るタイプの２つに分かれます。プログラミングで機械学習を学ぶというよりは、理論的な内容になっています。コードは提供されていないようなので、僕は言葉で説明するタイプの演習だけをやりました。

#*Coursera*の講座と筑波大学の授業の比較
内容を理化する分には両方とも大差はありません。筑波大の講座は日本語でスムーズに頭に入ってきます。所々で数学を使って数式の導出があるのと、**分類の部分（ロジスティック回帰とSVM）はやや難しく感じました**。
日本語でパパッと理解したい方は筑波大の講座を受けて、分類問題のところは「Coursera」の講座を受けるのでもいいと思います。「Coursera」の講座だと確か3回目あたりで分類だったので最初から見てもそんなに時間はかからないと思います。


#Pythonデータサイエンスハンドブック
![PDSH-cover.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641214/667d79f3-c153-2ab2-d0e2-589cb6f2caab.png)

こちらの本は「Pythonではじめる機械学習」のお兄さん版みたいな感じです。機械学習の実装方法に加え、pandasなどの使い方も書いてあり、より実践的なものになっています。
内容自体はかなり濃く良書だと感じました（全部読んでませんが）。

#Python 機械学習プログラミング
![cover-japanese.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641214/ad343ad7-f73b-d946-8d15-7697430d8f20.jpeg)

こちらの本は先ほど紹介したオライリーの2冊と比べるとやや難易度が高い気がします。**理論の内容**も含まれるので、**数学的知識が必要**になります。内容は結構重いと感じています（現在進行中）。機械学習の内容を網羅的に書いているのでボリュームもかなりのものです。オライリーの2冊は基本的なことが多く書かれていますが、こちらは基礎を応用した内容もちらほら見受けられます。
コードは[こちら](https://github.com/rasbt/python-machine-learning-book-2nd-edition)から参照できます。

#日本お書籍も結構良い
日本語訳が回りくどいなら、日本の機械学習の本を読めばいいじゃないか！と思った方もいるでしょう。その通りです。
今は機械学習の本も、日本人が執筆している良書はたくさんあります。
いくつか僕が読んでみたいものをリストアップしておきます。

・[ITエンジニアのための機械学習理論入門](https://www.amazon.co.jp/IT/dp/4774176982/
)

・[AIエンジニアを目指す人のための機械学習入門　実装しながらアルゴリズムの流れを学ぶ](https://gihyo.jp/book/2020/978-4-297-11209-7)

・[東京大学のデータサイエンティスト育成講座](https://book.mynavi.jp/ec/products/detail/id=102631)




#結論
動画学習はどちらでもいいので絶対にやったほうがいいです。どれでもいいので書籍に目を通したあと、事前知識があるとかなり理解が深まると思います。