『集合知プログラミング』を読んだ

『集合知プログラミング』を読んだ。
この本が出たのは2008年なので技術書にしては古い。
古いので自分の読みたい本リストに入っていなかったのだが、 けっこういい本という噂を聞いたのと今仕事で機械学習を扱うようになったので知識を深めるためにも読んでみることにした。

実際とてもよい本。
機械学習について知らない人でもわかるように、統計学的な知識や数学の知識がなくても読めるように考えられている。
そして例がわかりやすい。こういう問題があってそれをこう解決したいのでこのアルゴリズムで学習させてよい結果を得られるようにします、という感じで終始進むのですんなり頭に入ってくる。
自分のプロダクトに組み込むならこのアルゴリズムが使えそう、などそういうのが閃いたりした。

programming-collective-intelligence

さすがに出た時期が時期なのでディープラーニングなどは扱っていなかったが、 現在の機械学習界隈と比べても違いはディープラーニングがあるかないかぐらいだった。
実際のところ機械学習の分野は進んでいるものと思っていたが違いはそこだけだったので、実際はそれほど進歩的ではないのかもしれない。

ディープラーニングがないものの、それ登場以前の機械学習について包括的に扱っており非常にわかりやすかった。
記載されているコードは誤植が多いらしいのとPython2系なこともあってコード部分はさらっと目を通して参考にするぐらいがちょうど良さそう。 コードを写経するには向いてないかな。

面白いなと思ったことが、本書ではほとんど「機械学習」という言葉が使われていないということだ。
かわりに邦題でもあるとおり「集合知」というワードがよく出ていた。
個人的な所感だが「集合知」という言葉は昨今エンジニア界隈であまり聞かない。
いつからか言葉が「機械学習」に変わっていったのだろうか?

「機械学習」という言葉がバズワードとなってしまって必要以上に機械学習すごいと誤解されている感じを個人的には持っているので、この本の「集合知」という言葉を貫くスタンスはよいと思う。「集合知」を様々な分析手法で分析しその結果をビジネスに活かせ、という姿勢がこの本にはあり、昨今のバズワード化した「機械学習」ではなく手段として「機械学習」を徹頭徹尾扱っているのが好感が持てる。

さて、本の内容は以下のとおり。

第1章 集合知への招待
第2章 推薦を行う
第3章 グループを見つけ出す
第4章 検索とランキング
第5章 最適化
第6章 ドキュメントフィルタリング
第7章 決定木によるモデリング
第8章 価格モデルの構築
第9章 高度な分類手法:カーネルメソッドとSVM
第10章 特徴を発見する
第11章 進化する知性
第12章 アルゴリズムのまとめ
付録A サードパーティによるライブラリたち
付録B 数式
付録B 日本語のテキスト処理

最終章である「第12章 アルゴリズムのまとめ」は本書で扱っているアルゴリズムのおさらいとなっておりリファレンスとして非常に有用だなと思う。 こういう風に機械学習のロジックは使うのだ、ということを教えてくれるよい本だった。