SSブログ

アイテムベースの協調フィルタリングの作り方 その2 [データサイエンス、統計モデル]

アイテムベースの協調フィルタリングの作り方 その2

★ アイテムベースの協調フィルタリングの作り方 その1 ★
http://skellington.blog.so-net.ne.jp/2009-08-20
の続き。

前回終了した時点でのデータは、

という形になっている。

Step3 のイメージは、

というデータを作りたい。

Step3 のストリームは、

で作られる。

最初のレコード集計ノードは、


レコード集計_合計ノードは、


レコード結合は、


score(フィールド作成)は、

となる。

最後、Step4では、データを整形するだけなので、簡単。


フィルタノードは、


ソートノードは、

となる。

最後にデータを出力してみると

となる。

例えば、商品a を買った人に、何をリコメンドするかってことを考えたら、
商品c の score が一番高いので、商品c をリコメンドしよう!ってのに使えるかもしれない。

ただ、実データで計算したところ、アイテムベースの協調フィルタリングの計算は確かに速い。
ただ、商品Xを買ったときに何がリコメンドされるかを見たときに、
「あ~、こういうのがリコメンドされちゃうのかぁ。」
っていうがっかり感や失望感がでかい気がする。

ざっとした問題点でいえば、たくさん売られている/長期間売られているアイテムが出やすいことだろう。
この結果に、最適化ロジックを組み込んで制御するのが実際に使う上では良いと思われる。

nice!(3) 
共通テーマ:学問

nice! 3