データの境界

なんちゃって理系がデータ分析業界に入ってからの汗と涙の記録。

独学で機械学習を勉強したい人のための勉強本決定版か?「Python機械学習プログラミング」が良い感じ

 4月から予約開始してようやく先日届いたpython機械学習

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

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

 

宣伝文句としては、

原著『Python Machine Learning』は米国Amazon.comでベストセラー! 

3つのカテゴリーで首位(2016/5/24時点)

Data Modeling & Design/Data Processing/Neural Networks

とのことだったので非常に楽しみにしていたのですが、土日にパラパラと読んだところ期待通りの良い勉強本だと感じました。本国amazonのベストセラーは伊達じゃないぜ

以下アマゾンページからの目次の引用

1章 「データから学習する能力」をコンピュータに与える
2章 分類問題 —機械学習アルゴリズムのトレーニング
3章 分類問題 —機械学習ライブラリscikit-learnの活用
4章 データ前処理 —よりよいトレーニングセットの構築
5章 次元削減でデータを圧縮する
6章 モデル評価とハイパーパラメータのチューニングのベストプラクティス
7章 アンサンブル学習 —異なるモデルの組み合わせ
8章 機械学習の適用1 —感情分析
9章 機械学習の適用2 —Webアプリケーション
10章 回帰分析 —連続値をとる目的変数の予測
11章 クラスタ分析 —ラベルなしデータの分析
12章 ニューラルネットワーク —画像認識トレーニング
13章 ニューラルネットワーク数値計算ライブラリTheanoによるトレーニングの並列化
付録 Jupyter Notebookの基本/matplotlibによる可視化/行列の固有分解 

※ちなみに本書の推奨環境はPython3.xでした

 

この本の素敵なところ

本全体の流れとして基本的にはモデルの数式を並べて式の解説をして、この内容をPython(scikit-learn)で書くとこうなります、コードのここはこういう動きをしてます、hogehoge...

という感じです。偏ったマニアックな手法も無さそうで、抑えておくべき基本的な内容をきっちり網羅されている感じで非常に好印象です。読むテンションが高まります。

 

この本の何が素敵かというと、自分のような「数学は高2からやってないマン」としてはアルゴリズムの数式の大切さはわかるのですがそれだけ解説されても点でわからん、Pythonはちょっと書けるのでコードを見るとああなんとなく分かった気がする、という気分になれることです。(線形代数微積分は泣きながら勉強し直し中ですすみませんすみません)

しかし数式でアルゴリズムの解説の後に(自分が知っている言語で)コードを並べて解説してくれるというのは非常にありがたい。これまで機械学習は勉強したくても、本でもブログでもできるだけ数式の登場が少ないもの、もしくは一行の数式に死ぬほど日本語解説が付いてる希少なページを一生懸命さがしていた、もしくは「scikit-learnのこの関数ならこれみればわかるよ」とポンと公式ドキュメントリンクを送られる英語が弱い哀れな身からすると非常にありがたい。実はPythonコードと数式を対比させて(日本語で!)解説するこんな感じの本があるようで無かったような気がします。(そういう意味では、データサイエンティスト養成読本シリーズも好きですが、数式解説かコード解説かのどちらかしかない感じだったのですよね)

そんなこんなで、最近仕事でもやっている自然言語処理周りのページや、お名前はかねがね存じ上げていた「ぱーせぷろとん」のページなどをまずは読んでみたのですが、解説も丁寧で非常にわかりやすかったです。いまいちピンとこない箇所があっても適当にググッて"はてブ"の多い関連のブログやslide shareを見れば十分に補完できる感じには丁寧に書かれている印象です。初学者として「機械学習のわかりやすい本ありますか?」と先輩に聞いて「これがわかりやすいよ」と言われて1ページ目から数式が登場し挫折するというループを何度も味わった身としては是非この本を同胞たちにオススメしたい。

 

この本を読むための事前知識

ただし、Amazonのレビューにも書かれている通り、

しかしながら、python機械学習をするという本のため
機械学習の基礎知識
pythonライブラリの基礎知識
機械学習に必要な数学基礎知識
以上は、含まれていないか、さらっと解説しているだけである。
※本の中に、参考リンクはある。(英語)

そのため、機械学習初心者がいきなりこの本を読むとおそらく思考停止すると思う。

というのはそんな感じかもしれません。やはり事前知識は必要。

ちなみにこの本を読むための事前知識については監訳者の詳細な解説ページがあります。数学が苦手な人用の本書の読み進め方なども載っており購入を検討されている方には非常に参考になります。

ブック・インサイド―『Python機械学習プログラミング』学び方ガイド | Think IT(シンクイット)

 

ここから下は個人的事前知識感想。

機械学習の基礎知識」はやっぱりこの本が良かったかな

データサイエンティスト養成読本 機械学習入門編 (Software Design plus)

データサイエンティスト養成読本 機械学習入門編 (Software Design plus)

 

 「Pythonライブラリの基礎知識」というのはなんだろう。おそらくPythonのnumpy, pandasあたりの書き方がわかったら良いという意味でしょう。

個人的にはpandasの書き方はこちらの方のブログで勉強させていただきました。秀逸な内容とわかりやすさ。(pandasについては個人的に勉強に役立ったページリンクをいつかまとめる)

sinhrks.hatenablog.com

qiita.com

numpy勉強ページは鉄板のこちら

100 numpy exercises

 

機械学習に必要な数学基礎知識」

...これは自分も勉強中です。(正直に言うと今はΣの意味がわかるくらいのレベル...)

わりといろんなところでオススメされているこちらの本で勉強中です。ikeay氏の機械学習ブログでも詳細されてましたね

プログラミングのための線形代数

プログラミングのための線形代数

 

 

結論

自分も全部読めているわけではないのですが、1セクションを読んだだけでも良い勉強本感を感じました。個人的にはしばらく集中して読んでみようと思えました。

 

P.S

あと、本の装幀が何気にお気に入りです。

400Pあるので分厚くて少しデカイのですが、技術書としては少しやわらかい(薄い?)紙を使ってるっぽので本をぐにゃんと畳んで読めます。ハードカバーで紙も固めのどっしりした本は持ち運びが億劫なので良いのですよね。(技術書は紙本派)

 

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

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