電子書籍『実践 機械学習 ― レコメンデーションにおけるイノベーション』の無料ダウンロードになっていたので読んでみた。
電子書籍と言っても、ただのPDFです。
ダウンロードするには会員登録が必要ですが、確認メールは送られて来なかったので、適当な入力値でも大丈夫っぽい。
https://www.hadoop-times.com/technology/pdf-practical-machine-learning.html
パソコンで読むのは見にくいので、2ページまとめて紙に印刷。
電子書籍は紙に印刷するのが一番読みやすい(^_^;)
ページ数は約50ページと、かなり短め。
内容的には「機械学習」に興味がある人向けに広く浅くって感じだけど、「共起(きょうき)」とか専門用語が急に出てくる(まあ、ググれば良いのだけど)
※共起(きょうき、co-occur) = 「シトシト」と「雨」のように、2つのワードに強い関連性がある事。リコメンドでは、商品同士の強い関連性を意味する。
機械学習といえば、アマゾンのリコメンド機能!という訳で、最初から例が出てきています。
本書によると、ユーザーによるレーティングは偏りがあって使えない(レーティングしたがる人・強い好き嫌いがある人が、多く書くのでデータに偏りがある)
それよりも、全ユーザの行動履歴の方が、よっぽど正確なデータである。
ティッシュペーパーのような誰もが購入するような商品は、リコメンドの役には立たない(購入者の属性を表していない)
表紙に出てきている「仔馬が欲しい」というのは、誰もが欲しがるものを表しているらしい。日本人にはピンとこない感覚だ…。
ユーザの行動と商品の組み合わせを人間が目で見て判断するのは現実的ではないので、機械学習の出番だ!という流れ。
実装例として、有名なWebサーバ(Apache)上で動く、以下のライブラリを紹介している(これらのライブラリは、複数のマシンで並列処理するHadoopを基盤としている。なので本書もhodoopのサイトがダウンロード先)
ソフトウェア名 | 説明 |
---|---|
Apache lucene(ルシーン) | 全文検索Javaライブラリ |
Apache Solr(ソーラー) | Luceneをベースに、管理画面やキャッシュ機構を取り入れたWebアプリケーション |
Apache Mahout(マハウト=象使い) | luceneから派生。機械学習アルゴリズム・ライブラリ |
基本的には、Solrでデータを管理して、オフラインで事前にMahoutでインジケーター(関連性)を計算しておく(ユーザが寝ている夜中に更新される)
Solrの検索エンジンを使って、ユーザのリアルタイム行動(検索した、購入した、等)により、レコメンドを表示する
サンプルとして、テスト用音楽視聴サイトを実装例として上げています。
音楽データベースはMusicBrainz(音楽に関するウィキペディア)から、ユーザ行動履歴は乱数ジェネレーターから生成しています。
興味深かったのは、ディザリング(dithering=ゆらぎ、あいまい)処理です。
通常は、検索の上位(ほとんどのユーザは2ページ以降は見ない)にある商品同士しか関連性が更新されません(表示されない商品の関連性は学習されない)
そこで、わざと順位を崩すして、通常は表示されないようなページでもユーザに見てもらうために、わざと上位に表示させるワザです(^_^;)
あとはアンチフラッド(anti-flood, 洪水対策)処理。
同じような情報(あるいは全く同じ情報)に対しては、減点していく処理。
特定のHPへのリンクやtwitter, まとめサイトなんかは下げたりとか。
読んだ感想のまとめ:
機械学習の詳細な部分(特に実装)については、あまり書いてありませんが、おおよその概念を学ぶには良い本でした(なにより無料だしね)