くろたんく雑記帳

日常とか、わんちゃんとか、機械学習とか、競プロとか、

MENU

【書評】機械学習スタートアップシリーズ ゼロからつくるPython機械学習プログラミング入門

八谷さんのゼロからつくるPython機械学習プログラミング入門を読んだので感想。

Jupyter notebookでインタラクティブにやりたかったのでフォークしてnotebook形式で作成したものをGitHubにあげた。

github.com

cloneしてもらってjupyter notebookを立ち上げれば、参考コードがかかれているので、データセットを変更したり、パラメーター変えたりを自由にできます。基本的にAnaconda環境で、Python3.6以上ならそのまま叩けば動くはず。 できたら、そのうちColabでも実行できるようにする予定。


感想

全体的に非常に丁寧に書かれていて、わかりやすかった。機械学習に入る前に、線形代数・確率・統計の基礎を一通りおさらいしてから始まる。数式も多いが、図も多くイメージを掴みやすい印象だった。その後に回帰・分類・カーネルモデル・ニューラルネット強化学習教師なし学習という流れだった。サポートベクトルマシーンとカーネルモデルの説明は図も多く実際のコードからも理解がしやすい。いろんな本を読んできたが、ソフトマージン最大化や線形モデルからカーネルモデルへの拡張の説明は一番しっくりきた。あとは教師なしのPCAの主成分の最適化問題の説明もかなりわかりやすかった。全体的にバランスの良い構成になっていると感じた。
ちょっと残念だったのは、.py形式のサンプルしかなかったのでインタラクティブにできなかったこと。とりあえず4章以降は自分でJupyter対応した。


本書の概要

第1章 機械学習とは何か

これまでの機械学習の歴史であるとか、昨今使われている理由などの説明。

第2章 Python入門

Pythonを使ったことない人向けに、Anacondaの環境設定からプロット、for文、if文の説明。あとは強化学習がはいっているのでOpenAIの簡単な説明がある。結構丁寧にかかれているので、本当にゼロからの人でもできると思う。

第3章 数学のおさらい

ここは、避けては通れないところで、線形代数・最適化・確率・統計について復習。最適化とか確率については図が豊富で理解を促してくれる。初学者はもちろん、復習に役立つイメージだった。 ここはnotebookにしなかったけど、4章以降のnotebookを見れば対応できると思う。

第4章 回帰分析

基本的な線形回帰とロジスティック回帰について書かれている。一般化線形モデルの説明は行列の計算の図をたくさん使って説明してくれているので初学者が理論を知るにはいい内容だと思った。

第5章 分類

サポートベクトルマシーンの説明がめちゃわかりやすくて、こういう風に説明すればすっと入ってくるんだなっていう感じがした。決定木の結果を文字で分けて出力していたのは、ちょっと面白かった。

第6章 カーネルモデル

カーネルモデルの説明と線形モデルからの拡張のところは、式も図も多くて理解しやすい内容だった。初めから図6.2や図6.3のようなわかりやすいイメージと式を同時に見ていると理解しやすかったんだろうなと思った。なので少し機械学習に慣れてきた頃に見直すと非常に理解が進むと思う。

f:id:black_tank_top:20200901212920p:plain
多項式カーネルSVMの例

第7章 ニューラルネットワーク

一般的な、話が主でMNISTを題材にしている。ただこれもまた図がかなり丁寧に書かれているので他の書籍で畳み込みのイメージがよくわからないとか、計算過程がよくわからないとかそんな人向けの章と思う。

第8章 強化学習

CartPoleではなくMountainCarが題材、何気に初めてやったかも。毎回成功させるのは難しいけど、まぁ一応書籍通り学習すればこんな感じになる。

f:id:black_tank_top:20200901164750g:plain
MountainCarを学習した結果

可視化されるとやっぱり嬉しいね。ここで強化学習に興味を持ったらそのほか関連書籍強化学習本をみるといい。

第9章 教師なし学習

個人的には、教師なし学習の項目が結構参考になった。主成分分析だけでなく因子分析についても図が豊富で理解を促してくれた。因子分析のところはレーダーチャートで結果が出るようになっててかなりわかりやすかった。クラスター分析も初めて教師なしを学ぶ初学者には説明が豊富でコードもわかりやすいので良いと思う。

f:id:black_tank_top:20200901212858p:plain
PCAの3Dプロットの例

どんな人向け?

まだ機械学習にほとんど触れたことない人で、比較的コードや数式に慣れている人に合っていると思う。数式の展開は丁寧なので追いやすいが、数式苦手な人はコードがGitHubにあるので、どのように実装されているか判断するのも良いと思う。

また、全体的に総復習をかけたい人にも一通り読むと良いと思う。個人的には以下の復習になった。

  • ラグランジュの双対問題
  • ID3とCARTの違い
  • 正定値関数
  • スペクトル分解による因子負荷量の推定

終わりに

全体的に、ひろーく全般的に取り扱っている印象。図と数式が豊富で、初学者でもコードを理解できればアルゴリズムの理解の手助けになる良い一冊という感じ。自分的には復習になってすごくよかった。実際にコード叩きながら楽しめた。

そのほか関連書籍

機械学習の文脈で初学者向けなのは、どちらから読んでも良いと思う。こちらの方が比較的範囲は狭いので簡単めの印象。中井さんの本なので非常にわかりやすい。

こちらは同じ、機械学習スタートアップシリーズのベイズ推論による機械学習入門。少し難しめだが、こちらも一読することをオススメする。

記事中にも出したけど、強化学習をもう1段階理解したい場合はこちらがオススメ

blacktanktop.hatenablog.com

ちょっとずれるけど、統計モデリングにも挑戦したい方はこちらがオススメ

blacktanktop.hatenablog.com


お願い(欲しい書籍リスト)

ずうずうしいのですが、ブログを続けるのも大変で、基本自分の学習メモのためですが、サポーター募集です。ポチッとしてくれると嬉しいです。

https://www.amazon.jp/hz/wishlist/ls/2EDNNTYRW2BJE?ref_=wl_share

もしくは、レビューなど書くので、献本していただけたらものすごく喜びます(お問い合わせ or TwitterのDMからお問い合わせ下さい。)