「入門 機械学習」を献本していただきました

「入門機械学習」を献本していただきました。ありがとうございました。
というわけで早速読み終わったので感想を書いておく。


機械学習の入門書ではない
本書はタイトルから連想されるような機械学習に入門するような内容は書かれていない。一切数式は登場せずアルゴリズムはすべてブラックボックス化されている。では本書はダメな本なのかというとそんなことは全くない。少なくとも「入門 機械学習」というタイトルに興味をもって本書を手にとった人にとっては大変有益な本だと思う。

大きなデータを扱って何かしたい人が最初に読むべき本
繰り返すが本書は機械学習の仕組みについては書いていない。仕組みはブラックボックスとして割り切ることで従来の機械学習の入門書が触れていない部分を非常に大きく扱っている。それは何かというと「汚いデータからどうやって機械学習の入力データを作るか」「機械学習の手法をどのように選択するか」「機械学習に与えるパラメータはどのように決めればよいか」「機械学習によって得られた結果から何を読み取ればよいか」という機械学習を道具として使う場合に避けて通れない部分。ついでに言うと本書では必ずしも機械学習には含まれないような技術も含まれていて、とにかく大きなデータがあったときにそれを使って何か面白いことをしたいときに必要になってくる事が丁寧に書いてある。従来の機械学習の教科書が0から1に進むための本だとするなら本書はマイナスから0に到達するための本だといえる。本書を理解した後で他の機械学習の教科書を読むと、より広い視点で内容を理解することができると思う。

本書のメリット
上に書いたように機械学習を「使う」ことに目的を絞っている点。機械学習を使うための本は他にもあるが、本書の著者は理論的な部分までわかったうえであえて「使う」ことに絞った解説をしていて、こういう本はそんなに無い気がする。またグラフを多用しているので視覚的にわかりやすいのもメリット。

本書のデメリット
Rという言語を使うことを前提としているので本書を読んだだけだとRが使えない環境では何もできなくなる。本書を読みつつ、この処理はRが使えない場合はどうやって実現するか、ということを考えつつ読んだほうがいい。また一部、ほとんど説明をしないで用語を使っている部分がありわかりにくい。わかりにくい箇所を上手にスルーするような読書スキルが必要かもしれない。

内容について少々
1章でRを使ったきれいなデータの作り方が、2章で統計の基礎が説明されている。3章からが機械学習の本番。分類(データがAかBかを判定する)、ランキング(データをA、B、Cと順位付けする)、回帰(データに対してスコアやPVなどの数値を予測する)と教師なし学習(正解となるデータがない場合の学習)と順番に高度な方向に向かっていく。本書が優れているのは高度な手法を説明しつつも、高度な手法を採用することの弊害もきちんと説明していること。目的にあった手法選択は実用的に機械学習を使う上で非常に重要。
また各章で取り上げている手法については、なんとなく使いましたではなくその手法を用いる際に注意すべき点が書かれているので読み飛ばさずにちゃんと読んだほうがよい。ただ、これはアルゴリズムブラックボックス化したことによる当然の弊害なので仕方ないのだけど本書に書かれていないアルゴリズムを使う場合にどこに注意したらいいのかわからないという状態になる可能性が高い。本書を読んだ段階では本書に書いてある手法を使って問題解決を行い、余裕をみて他の機械学習の入門書を読みつつ、この本で解説しているアルゴリズムが実際にどういう仕組で動いているのかを知ると良いと思った。

機械学習に詳しい人向けの話
本書のナイーブベイズは事前分布の話やスムージングの話など語るべきことが書いてあるのでとてもイケている。また過学習についても充分な説明がなされていて無駄に特徴量を増やすことの問題についても解説してあるのは好感が持てる。L1,L2正則化や交差検定についても解説がされている。一方で生成モデルから話をはじめている都合上、識別関数の登場が遅く最後の章でようやくSVMが登場する、といった程度。識別関数と識別モデル間の違いが説明されていないので、最後の章の線形SVMとロジスティック回帰の性能比較は「ふーん」という以上の感想は持てない気がする。

さらに学ぶために
訳者まえがきや本書の最後に「もっと詳しく知りたい人はPRMLを読もう」とかいう盛大な地雷が仕込んであってコーヒー吹いた機械学習を入門したい人は以下のリンクにある本を順番に読んだほうがいいですよ。多分。
http://d.hatena.ne.jp/echizen_tm/20110209/1297272686