機械学習に独学で挑む

非情報系理系大学生が独学で機械学習に挑みます

『Python機械学習プログラミング』を読んでみた

 

読んでみた感想

[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

 こちらも評判が良かったので読んでみました。私は2冊目に読んだのですが,2冊目にはぴったりな本でした。1冊読んだだけでは曖昧にしか理解できなかった理論を少し深掘りしてくれるような本です。この本の一番良いところは数式の説明がわかりやすく機械学習を数式的に理解する一歩目には最適だと感じました。

 完了に35時間かかりました。

 機械学習の学習コンテンツとしては,

  • 分かりやすさ      ★★★★☆
  • 数式の少なさ      ★★☆☆☆
  • プログラミングの簡単さ ★★★☆☆

です。お勧めの対象者は,

  • 入門書を1冊または,Couseraのコースを終わらせて次のステップに進みたい人
  • 機械学習の数学にはほとんど触れて来なかったが,少しずつ数式を使って理解していきたい

に当てはまる人には特にお勧めです。AI,機械学習が初めての方にはやや難しいかもしれないので入門書かCouseraの機械学習のコースを受けてから読んでみるのがお勧めです。 

machine-learning-bymyself.hatenablog.com

 

内容の評価

分かりやすさ ★★★★☆

 2冊目以降に読むことを考えれば説明はとても分かりやすかったです。基本的な概念(分類と回帰の違いや,one-hot-encodingなど)の説明は簡単に済ませ,少し踏み込んだ内容(PCAの処理の数学的な解説や,ニューラルネットワークの誤差関数など)について詳しく解説してくれています。

 また,具体例を使った説明も多いですし,図やイラストも見やすいので視覚的にイメージしながら読めました。

 個人的にはこの本の勾配降下法の説明は数式を含めてとても分かりやすく感じました。

 

数式の少なさ ★★☆☆☆

 数式はそれなりにありますが,先述の通り数式がこの本の1番のポイントです。

 特に勾配降下法は,応用したものを含めて頻繁に利用されているシステムですが,数式無くしては理解不可能と言えるでしょう。この勾配降下法を実際にパーセプトロンやロジスティック回帰で使ってみる部分の数学的説明は非常に分かりやすかったです。他にも,主成分分析(PCA)や,ニューラルネットワーク誤差逆伝播法についても(難しいながらも)数学的に解説されており,雰囲気だけで無く理論で理解したい人にはかなりお勧めです。

 全くの初心者が取り組むような書籍(私はPythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎を読みました)ではほとんど数式が出て来ないことが多いです。CouseraのMachine Learningのコースでは数式が数多く出てくるものの,難しい部分に関しては「ここは難しすぎるから,数学に詳しくない人は無視していいよー」とAndrewが流しています。そのような部分をもう少ししっかり学びたい人にはぴったりだと思います。

 

プログラミングの簡単さ ★★★☆☆

 基本的にはそれほど難しくはありません。ただ,ニューラルネットワークの学習器など,かなり長いクラスを実装するのは少し大変でした。また,MatplotlibやNumPyの少し変わったメソッドを使ったりすることがあったのでそこは調べながら対応しました。

 コード量はかなり多いです。これを全部写経すればかなり力になると思います。特にパーセプトロンのパラメータの学習につかう勾配降下法の実装は実際にコードを書いてみて理解が深まりました。個人的にはコード量が多いのは楽しくて良かったです。

 

その他の特徴

1冊目にはお勧めできない。2冊目に最適。

 基本的な概念は既知のものとして始まっている(と読者は感じる)ので,全くの初心者には難しいと思います。2冊目としては1冊目の内容を補完する上でこの上ない学習リソースと言えるでしょう。

 

TensorFlowやCNN,RNNは理解できない

 表紙を読むとこれらが理解できそうな気がしますが,はっきり言って読んでも全くわかりませんでした。たしかに説明は書いてあるのですが,前提知識が足りないのか,何をやっているのかコードを見ても日本語を読んでもさっぱりわからず,写経する意味も感じませんでした。

 TensorFlowに関しては,計算グラフという概念がほとんど説明されないまま解説が始まってしまうので,置いていかれたのだと思います。

 これらについてはこの本で理解しようとせず,他の本などのリソースで理解するべきでしょう。

 ちなみに,計算グラフに関してはゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装が非常にわかりやすかったのでお勧めです。

 

machine-learning-bymyself.hatenablog.com

 

総括

 2冊目に読んだのでとても分かりやすくステップアップを実感できて最高でした。やはり数学的な理解も大切なんだな,と気付かせてくれた一冊でもあります。

 初心者からのもう一歩に迷っている方は是非読んでみてはいかがでしょうか。