なんとなくじゃ嫌なんだ!!文化系エンジニアに送る、しっかり始める機械学習!!

機械学習始めるぞー!と思ったやさき・・・
---
最近はもうあちこちで機械学習、機械学習って盛り上がってますよね！
 
そして「 **乗るしかない!このビッグウェーブに!** 」と思い立ち意気揚々と書店に行って、機械学習の入門書を手にとりますね。
そして数式の羅列にただただ唖然とするわけです。
でもって次に専用ソフトやコーディングを通じて学べる系の本に手を出してみるものの、今度は数式が少ない代わりに、
 
 
>* ここに数値を入れて、ボタンを押せば…ほらこんな感じで結果が出力されます！
>* このライブラリをインポートして、このメソッドの引数に数値を渡すと…ほらこんな感じ！
 
 
といった具合で、どうしてもブラックボックス感が出てしまって、ちょっとモヤモヤ…
 
上記のような経験をしたことがある方はきっと少なくないはずです…
かくいう私もまさに上記のような感じで、勉強したくてもとっつきにくい印象のままでした。
 
そこで私なりに見つけたオススメの学習方法をまとめてみたので、同じようなモヤモヤを抱えた方々のお役に少しでも立てたらと思いまとめてみました。
 
 
本記事の対象/目的
---
趣味でも仕事でも機械学習を初めて勉強しようと考えている方を対象としています。
特に以下のような思いを抱いている方向けにまとめてみました。
 
>* 機械学習を勉強してみたいけど何から始めていいかわからない
>* 理論やアルゴリズムについても理解をした上でシステムに落としたい
 
数学に自信ないよ(自分もそう)って方向けにも参考図書などもあわせてご紹介します。

 
お願い!!
----
あくまでこれは私なりに考えたまとめですので、「これがオススメだよー」、「こうした方がいいよー」というのがあれば是非ご教授ください！
 
まずはイメージ!
---
機械学習を勉強するモチベーションを高めるためにも「 **それを勉強した先にどういった事が分かる/できるようになるのか** 」を知ることはとっても大事ですよね。
 
まずはイメージをつかむためにも以下の資料がとてもわかりやすかったです。
> [【SlideShare】機械学習チュートリアル@Jubatus Casual Talks](http://www.slideshare.net/unnonouno/jubatus-casual-talks?related=1)
 
また最近流行っている人工知能(AI)も機械学習が利用されています。
人工知能(AI)関連を学ぶ際の情報は後半でご紹介しますが、機械学習を学ぶことで広がる世界に胸が躍りますね!!
 
 
いざ機械学習の学習!!(←表記がややこしいw)
---
さて、機械学習のイメージも掴めたところで、いざ機械学習の勉強開始です!
独学で機械学習を学ぶ際によく紹介されるのが「 **coursera** 」です。
 
わたしも下記の記事で初めて知ったのですが本当におすすめです!!
> [【Qiita】数学を避けてきた社会人プログラマが機械学習の勉強を始める際の最短経路](http://qiita.com/daxanya1/items/218f2e3b922142550ef9)
 
 
詳細については上記リンクを参照していただくとして、私は特に以下の点で学習を進めやすかったです。
 
* 講義はいずれも以下のように進められるため、理解がしやすい！

```
1. まずは用語の解説する
2. 次に、図を用いて直感で理解させる
3. 数式を用いてなぜそのようになるのかを説明する
```
 
* 数学に苦手意識があっても解説がとても丁寧で、なぜその数式が導き出されるのかを細かく説明してくれる！
 
一点注意としては、courseraは本来だと週次で次講義が開講されます。
ですので、連休中に一気に進めたいという方には以下のアーカイブがおすすめです。
私もまとまった休みにアーカイブで学習しました。
> https://class.coursera.org/ml-005/lecture/preview
 
 
おさえておきたい数学の知識!!!
---
上記で紹介したcourseraで学習を進めるにあたり、最低限必要となる数学の知識は講義内でも説明があります。?(例えば、行列の計算やベクトルの内積の計算などです。)
ただし、微分やベクトル、対数など高校数学レベルの数学知識に対しては簡単な解説にとどまっています。
基礎的な内容ではあるのですが、
「確か大学受験時に必死こいて暗記したな・・・今思うとこれってどういう意味だっけ」
ってこともしばしば・・(かくいう私もコテコテの文系学生だったのでそんな感じでした…orz)
 
私は以下を参考に色々と思い出しながら講義を受けていました。(お恥ずかしい・・)
 
* **微分**
> [【書籍】数学ガールの秘密ノート/微分を追いかけて](http://www.amazon.co.jp/dp/4797382317)
 
* **指数/対数**
> [【書籍】こんなに便利な指数・対数・ベクトル (ニュートン別冊)](http://www.amazon.co.jp/dp/4315520128)
 
* **線形代数(行列・ベクトル)**
> [【書籍】プログラミングのための線形代数](http://www.amazon.co.jp/dp/4274065782)
 
courseraを受講する分にはひとまず上記領域の基礎をおさえておけば大丈夫かと思います。
線形代数については上述した通り、必要最低限の内容についてはcoursera講義内で教えてくれます。
ただ[プログラミングのための線形代数](http://www.amazon.co.jp/dp/4274065782)の第1章をやっておくと理解が進むので、やっておいて損はないかと思います。
 
動かして学ぶ!!!!
---
courseraで理論とアルゴリズムの基礎をおさえた後は、その知識を使ってプログラムを実装したくなりますよね!?
coursera内でもMATLABやOctaveを利用した例はあるので、実装イメージはそちらでもつくかと思います。
ここでは他の言語でプロラグラムを実装する際に参考になる書籍を紹介します。
 
> [【書籍】データサイエンティスト養成読本 機械学習入門編 ](http://www.amazon.co.jp/dp/4774176311)
 
この書籍をお勧めする利用は以下の通りです。
 
* どういった機械学習のソフトウェアがあるのかをざーっと紹介してくれている
* 機械学習を使ったアプリケーションがどういった風に作れるかをイメージできる
 
上記を取っ掛かりにして、ほかのプログラム系の書籍や情報にあたっていけるのでおすすめです。
 
読み物から学ぶ!!!!!
---
人工知能(AI)に関する本ですが、内容もとてもわかりやすく、機械学習がどのように関連してくるのかも図を交えて解説してくれています。

> [【書籍】人工知能は人間を超えるか ディープラーニングの先にあるもの](http://www.amazon.co.jp/dp/4040800206)
  
これからどうしよう？
---
上記の手順で学習すれば、市販の数式多めな入門書を読んでも、きっと初めて手に取った日よりも内容を理解できるようになっていると思います。

あとは適宜落ち葉広い的に不足している知識を補いながら学習を進めていくのが良いかと思いました。
特に市販の入門者でもそうなのですが、統計の知識も必須となってくるため、そのあたりも中心におさえておく必要があります。

あとは最近だとエンジニア向けの機械学習の勉強会も多く開催されているので、そこで他の会社ではどのように機械学習に取り組んでいるのかを学ぶのもいいかもですね!!

それでは一緒に頑張っていきましょー!