30分でできる分散レコメンデーション:パラメータを決定する。
先のログでは、Parallel ALS(Alternating Least Squares)による分散レコメンデーション環境を手っ取り早く用意して、チェコスロバキアの「Libimseti.czという出会い系サイト(http://www.libimseti.cz/)」の1700万件の評価データで、分散レコメンデーションを実行した。
Mahoutでの、Parallel ALSの実装には、2つのパラメータ(λと、フィーチャーの数)がある。実行用に用意したShellでは、λ=0.20、フィーチャーの数を20とした。これは、この2つのパラメータを変えて、簡単なシミュレーションをした結果から決定した。
Featuresの数
フィーチャーの数を20と50にし、RMSEを比較したところ以下の結果を得た。
フィーチャーの数は、縮約する次元を表しており、一見、多いほうがよい精度を得られるように感じられる。反面、以前のログに示したように、フィーチャーの次元は「行列積演算」と「掃出し法による逆行列計算」を単一ノードで動かす次数を意味しており、これを増やすことでフィーチャー数の3乗以上のオーダーで演算回数が増加する。
上の結果をみると、直感に反して、20の方がよい予測精度となっており、かつ、演算速度も速い。よって、フィーチャー数は20とした。
λの値
Mahoutで提供されているサンプル(factorize-movielens-1M.sh)では、λ=0.065とされており、この値は、原論文「Large-scale Parallel Collaborative Filtering for the Netflix Prize」でNetflix Prizeデータを使った場合の最適値である。
今回のサンプルデータで実験したところ、以下の結果を得た。
RMSEの評価
Mahoutイン・アクションの中で、Libimsetiのデータがユーザーベース・レコメンデーション、アイテムベース・レコメンデーション、Slope Oneレコメンデーションの3通りの方法で評価されている。
そこから引用すると、
- ユーザーベースのレコメンダー(距離尺度=ユークリッド距離、近傍=2):平均絶対誤差=1.12
- アイテムベースのレコメンダー(距離尺度=Pearsonの相関係数):平均絶対誤差=2.32
- Slope Oneレコメンダー:平均絶対誤差=1.41
という精度が得られるとのこと。
これらは分散レコメンデーションではなく、1つのマシンで実行された結果であって、平均絶対誤差で評価されている。
これに対して、Parallel ALSは分散レコメンデーション・エンジンである。RMSEの方が、平均絶対誤差よりも大きくでることを考えれば、他の結果に見劣りしない結果と言えるだろう。
- 作者: Sean Owen,Robin Anil,Ted Dunning,Ellen Friedman,伊東直子,真鍋加奈子,堀内孝彦,都元ダイスケ
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/10/26
- メディア: 大型本
- 購入: 3人 クリック: 26回
- この商品を含むブログ (11件) を見る