Mahout関連のまとめはこちら
この記事は『Software Design』2012年9月号の後編の内容の補足情報を記載しています。本編と同じ章立てにしていますので、本編を読みながら参照していただければと思います。
はじめに
後編では、Mahoutを実際に実行します。
Mahoutで何をするのか?
そもそも、Mahoutではどのようなことができるのでしょうか。Lucid Imagination社が公開しているMahoutの概念図をご覧ください。
おすすめ商品の提案(Recommendation)、ニュースの分類(Clustering)、メーラのスパムの推定(Classification)などの処理で活用できます。Frequent pattern miningは、頻出するアイテムの組み合わせを抽出することができます。具体的な例を上げると、POSデータからビールとおむつを一緒に購入する消費者が多いことなどの知見を得るために使われます(※参考)。Geneticは、宅急便のトラック配車計画の最適化などに利用することができるでしょう。様々なアルゴリズムが提供されているMahoutですが、今回はRecommendationを取り上げます。
Recommendationのメリット
システムから見れば、利用者が欲しい情報を提示することができれば、より頻繁にシステムを利用して貰えることになります。アクセス数/広告収入/商品売上の増加などが期待できます。ユーザーは、自分が興味を持っている新しい情報を知ることができます。
但し、これは利用者に適切な情報をRecommendationしているときに限ります。興味がない/関連性がない/既知の情報をRecommendationしても、ユーザーは関心を持たないか、煩わしく感じることさえあるでしょう。未成年にアルコール商品を薦めることなどあれば、企業の信用問題にも繋がります。マイナスの評価を受けないためにも、チューニングはしっかりしていく必要があります。
Recommendationの概要
Recommendationの説明する前に使われる用語の説明をしたいと思います。
Recommendationの用語を整理する
Recommendationの方式は、Itemの関連性を分析する方法とCollaborative Filteringの二種類が代表的なものでしょう。前者は、コンテンツベースのRecommendationと言われています。例えば、同じジャンルの商品を提示する方法はシンプルで分かりやすいでしょう。しかし、意外性のある情報が提示される可能性は低く、ユーザーにとって新しい情報である可能性が低いことが欠点です。Collaborative Filteringは、ユーザーの行動履歴をベースにしてRecommendationを行ないます。更に細分化すれば、ItemベースとUserベースの考え方があります。こちらの違いは「Recommendationの用語を整理する」にまとめています。ここまでの話で幾つかの方式が登場したので、以下にまとめておきます。
- Recommendation
- コンテンツベース
- CollaborativeFilteringベース
- Itemベース
- Userベース
Mahoutを動かす
現在、Mahoutの最新版は0.7です。既に0.8の開発がはじまっており、下記コマンドでリポジトリからソースコードをダウンロードすることができます。
svn checkout http://svn.apache.org/repos/asf/mahout/trunk mahout/trunk