Entries

セバスチャン・ラシュカ『Python機械学習プログラミング』


素晴らしい一冊。Pythonを使った機械学習の初歩的なやり方が丁寧に書かれている。各アルゴリズムによるデータ分析のやり方のみならず、前処理やパラメーターチューニングも詳細に扱われている。最後にはTheano/Kerasを使った深層学習についても触れられている。反面、理論面の解説は薄いので、理論を理解していないとただPythonコードが動いただけで終わってしまうおそれもある。多少とも理論を学んで初級から中級へステップアップする人か、RでそれなりにやっていてPythonを学びたい人などが最適だろう。また、訳者がJupyter Notebookについて解説を用意してくれているが、Pythonそのものについての解説はないので、プログラミング言語の素養は必須。

どの章も基本的には概念やアルゴリズムを解説した後、そのアルゴリズムに従ってコードを実装する。そして最後に、実は以上のことがらはscikit-learnの関数一つでできる、などと書かれている。これにより、単純に動かし方を学ぶだけでなく、原理を踏まえて学ぶことができる。このくらいの分量の本だからこそ可能なことだ。一番面白かったのは交差検証とグリッドサーチについて(p.163-181)。k分割交差検証などの考え方、グリッドサーチのやり方がとても分かりやすく書いてある。個々の分析アルゴリズムの解説が主になってこうしたメタレベルの解説が少ない本が多い中、とても参考になる記述。

理論面の解説が薄く、理解に苦労することもある。特に、カーネルPCA(p.146-150)の解説は理解できなかった。式(5.3.8)で唐突に出てくるa^(i)が何のことなのかよく分からない。どうやら後で出てくるカーネル行列Kの固有ベクトルのようなのだが。また、(5.3.10)の式の二つ目の等号の導出も追えなかった。この本よりはカーネルSVMの理論の本でしっかり学んだ方がよさそう。

コードはGithubから落としてくるのではなく、一行一行考えながら打って動かした。動かなかったのが二つあった。一つはドキュメント分類のグリッドサーチ(p.234-236)。グリッドサーチに先立って定義したメソッドtokenizerとtokenizer_porterを、自分の環境ではグリッドサーチから呼び出すことができないようだ。また、flaskを使ったWebアプリケーションの実装(p.253-260)では、results.htmlがずっと読み込み状態のままになってしまい、ページが表示されなかった。おそらくapp.pyかvectorizer.pyの何かが間違っているとは思うが、追いきれず。

その他、コードでインデックスが間違っているところが二つ。多層パーセプトロンの実装のコード(p.338-341)で、fitメソッドのreturn selfが変数iのfor節のなかに入ってしまっている。また、逆伝播法の勾配チェックのコード(p.358f)でモメンタム学習のための重み更新は、idx変数のfor節のなかに入っているべきだろう。
スポンサーサイト
この記事にトラックバックする(FC2ブログユーザー)
http://exphenomenologist.blog100.fc2.com/tb.php/851-b6cd1993

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する