Mahoutイン・アクション

Mahoutイン・アクション

Mahoutイン・アクション

レコメンデーションの質は、データの質と量に大きく左右される。「ガーベッジ・イン・ガーベッジ・アウト(ゴミを入れればゴミが出てくる)」がこれほど当てはまるものはないと言っても良い。質の高いデータは良い結果を生み、その量が多ければ多いほど、さらに良い結果を得ることができる。
レコメンダのアルゴリズムには元来、データ集約性(data-intensive)がある。その計算では多くの情報を扱う。このため、実行性能はデータの量とその表現法に大きく影響を受ける。賢く選択されたデータ構造は、文字通り桁違いの影響を性能に与える。データの規模が大きい場合には、これは大きな違いである。

Hadoopベースの機械学習エンジンであるMahoutの解説書。
学習アルゴリズムとして「レコメンデーション」「クラスタリング」「分類」という三種類について、アルゴリズムの基本から実装上の留意点までを詳細に解説されている。
各種機械学習アルゴリズムは10年以上前から実用化されているものの、学習に利用するデータ量が100万件のオーダを超過すると、次第に計算量の限界が到来して、実用的な処理時間で望む結果を得ることが難しくなる。
分散バッチ処理のMap-Reduceアルゴリズムオープンソース実装であるHadoop上で、効果的に問題を分割して処理できるようなアルゴリズムをMahoutが提供するために、このような規模の問題に取り組むことができるようになったとのこと。
Javaのベクトル型などのデータ表現ではオブジェクト参照のためのオーバヘッドがあるために、Mahoutでは独自の高速なデータ型を提供している。また、学習用データとテスト用データを適切に分割して、モデル品質検証を効率的に実現できるようにしたり、twitterwikipediaなどのテキストデータを説明変数に加工するための特徴選択の手法についても提供されている。
対応する機械学習アルゴリズムについても、分散実行が可能でデータ規模に対するスケールが十分確保されているものから、単語の出現頻度をトピックという単位でグループ化する「潜在ディリクレ配分法」という手法などの新しいアルゴリズムまでカバーをしている。
Mahout自体は、このような機械学習のプラットホームとしての位置づけにあたる。
Hadoopを含めたお試し環境の構築に踏み切れずにいるものの、一度実際に触って試してみたい。