まとめ: 文系社会人がはじパタで機械学習を数式含めて理解した奮闘記

[「はじめてのパターン認識」](https://amzn.to/2JlEWRz)を本気で勉強しました。
よく機械学習勉強法のような記事で入門本としてオススメされていますが、**少なくても文系の人にまるでオススメできないです。**一方で、**機械学習の基礎について体系的に書かれていて非常に素晴らしい書籍**かとも思います。相反することを書いていますが、単純に**文系人間には内容が理解し難い**のです。「こんなの知ってるよね」と言わんばかりに「固有ベクトル」や「ラグランジュ関数」などの単語が出てきますが、高校数学では習いませんから！「はじめての」という本のタイトルや、大学数学やってきた人のオススメとして、この本をピックアップして挫折した人は数多くいるのではないでしょうか。
「難しい」とネガティブなことを言っていますが、**基礎理論がきっちり詰まっていて理解するとすごくスッキリします**(と言っても、そんなに関連書籍を読んでいるわけではないので世の中にはもっと素晴らしい書籍もあるかもしれません)。PythonなどでライブラリのAPIを呼んで動いていていた裏側では、こんなことが動いていたのか、と霧が晴れた感覚です。

# サマリ

|項目|内容|
|:-:|:--|
|目的|1. 機械学習の基礎を学ぶため<br>2. 数式アレルギー克服|
|期間|約９ヶ月|
|総時間(実績)|156時間弱|

## 学んだことサマリ
**パターン認識において必要な基礎知識を体系的に学べました**。
また、数式アレルギーを克服には至りませんでしたが、**「時間をかければ数式も読み解ける」くらいのレベルに達することができました**。今まで避けていた数式を理解できるようになったのは大きいです(少なくても満足感としては)。これで、**わからないことがあった場合にでも時間かければ理解できるだろうという見込みが立ちます**。

# 数学と機械学習の前提知識
数学と機械学習が入り混じっていますが、以下の勉強をしていた状態で臨みました。大学は文系卒で数学苦手です。ここにたどり着くまで長すぎ。

1. 高校数学復習と大学基礎レベルの数学(微積・統計・線形代数)勉強
2. [「統計学入門 (基礎統計学)」](http://amzn.to/2oVhAqI)で統計基本を勉強
3. [「Rによるやさしい統計学」](http://amzn.to/2mDoNMH)でR言語を使いながら統計基本を勉強
3. [「やさしく学ぶ 機械学習を理解するための数学のきほん」](https://amzn.to/2qfN9AP)で機械学習と数学を勉強
4. ディープラーニングを使った画像処理システムを仕事で構築
5. [Coursera機械学習入門オンライン講座](https://qiita.com/FukuharaYohei/items/b2143413063376e97948)で機械学習に入門
6. [言語処理100本ノック 2015年版](https://qiita.com/FukuharaYohei/items/6f0af3c4e270d8af2d99)で言語処理の基礎をPythonで勉強
7. [「言語処理のための機械学習入門」](https://amzn.to/3aQLW8e)で不等式制約付凸計画問題を学習。第８章 SVM学習中に読みました

**「1. 高校数学と大学基礎レベルの数学」は絶対に必要**ですね。詳しくは、[記事「文系卒社会人が統計・機械学習を理解するための数学勉強方法【随時更新】」](https://qiita.com/FukuharaYohei/items/0a66c37091dc27c71fe6)を参照ください。あと、「5. Coursera機械学習入門オンライン講座」は必須ではないですが、強くおすすめします。この本の基礎レベルを数倍わかりやすく解説してくれます。唯一の難点は英語なことです。

# 学習の進め方
以下のことをしながら学習を進めてきました。私レベルの頭だと、本だけでスイスイ理解できないためググッたり、本を使ったりしながら、なんとか理解しました。

- 本に読む
- キーワードなどでググって見つけたサイトを補助として読む(本はそんなにわかりやすくないので・・・)
- ノートに数式書いたり具体例を自分で作って計算して理解を深める
- よく覚えていない内容(例: 線形代数の「固有値」)は数学系参考書を復習
- 理解したことをQiitaに書く

Tips: この本でいろいろなギリシャ文字が出てきます。多くの場合はただの変数と理解して、あまり気にしないことにした方がいいと思います。頭の中で声を出して読むために[「ギリシャ文字」](http://www.latex-cmd.com/special/greek.html)で文字を確認していました(私の場合は記事で書く目的もあり)。

# 各章概要
各章学習時間(棒)と累積学習時間(折れ線)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134273/b11e7baf-66fb-281d-beac-cc074fa5be2f.png)

難易度は私感で:star:が多いほど難しい。

|章|項目|時間(h)|難易度|学んだこと|
|:-:|:--|:-:|:-:|:--|
|1|[はじめに](https://qiita.com/FukuharaYohei/items/728b3fc15b5ddc9d9762)|8.9|:star:|特徴の型, 特徴空間, 次元の呪い|
|2|[識別規則と学習法の概要](https://qiita.com/FukuharaYohei/items/0bae9bbaef0099627751)|12|:star:|ホールドアウト法,交差確認法 ,一つ抜き法 ,ブートストラップ法 ,バイアス・分散トレードオフ, 過学習|
|3|[ベイズの識別規則](https://qiita.com/FukuharaYohei/items/1f05e6550ed73329febd)|14.8|:star:|ベイズ識別規則, ROC曲線|
|4|[確率モデルと識別関数](https://qiita.com/FukuharaYohei/items/10979bbd934410e82c42)|18|:star::star:|平均ベクトル, 共分散行列, 標準化, 無相関化, 白色化, 正規分布, 最尤推定|
|5|[k最近傍法(kNN法)](https://qiita.com/FukuharaYohei/items/0314f73cebb471deb515)|8|:star::star:|最近傍法, ボロノイ境界, kNN|
|6|[線形識別関数(前半)](https://qiita.com/FukuharaYohei/items/d1b4300055584d3f1727)|30.4|:star::star:|正規方程式|
|6|[線形識別関数(後半)](https://qiita.com/FukuharaYohei/items/f1933c0430704f86c60a)|前半に時間は含む|:star::star::star:|フィッシャーの線形判別関数, 判別分析法, ロジスティック回帰|
|7|[パーセプトロン型学習規則](https://qiita.com/FukuharaYohei/items/410655034fdef5204879)|13.5|:star::star:|多層パーセプトロン, 誤差逆伝播法, シグモイド関数|
|8|[サポートベクトルマシン](https://qiita.com/FukuharaYohei/items/5375d9bfe6bd471288ea)|14.7|:star::star:|カーネルトリック, ν-SVM|
|9|[部分空間法](https://qiita.com/FukuharaYohei/items/47624bac931b2668e888)|15.4|:star::star::star:|主成分分析, 特異値分解, CLAFIC法, カーネル主成分分析, カーネル部分空間法|
|10|[クラスタリング](https://qiita.com/FukuharaYohei/items/c58f6eea336ce5d9c00f)|8.4|:star::star:|距離の公理, ミンコフスキー距離, K-平均法, 融合法, 混合正規分布モデル|
|11|[識別機の組み合わせによる性能強化](https://qiita.com/FukuharaYohei/items/502d2d2b99ccd3980d75)|11.6|:star::star:|ノーフリーランチ定理, 決定木, バギング, アダブースト, ランダムフォレスト|