集合知プログラミング Programming Collective Intelligence (Ch.2 推薦を行う) 2010/01/11 id:shiumachi
Agenda 2.1  協調フィルタリング
2.2  嗜好の収集
2.3  似ているユーザを探し出す
2.4  アイテムを推薦する
2.5  似ている製品
2.6 del.icio.us  のリンクを推薦するシステムを作る
2.7  アイテムベースのフィルタリング
2.8 MovieLens  のデータセットを使う
2.9  ユーザベース  VS  アイテムベース
2.10  練習問題
2.1  協調フィルタリング
協調フィルタリングとは? “協調フィルタリング(Collaborative Filtering, CF)は、多くのユーザの嗜好情報を蓄積し、あるユーザと嗜好の類似した他のユーザの情報を用いて自動的に推論を行う方法論である” (wikipedia より)
1992年、Xerox PARC の David Goldberg の論文で初めて使われた用語
協調フィルタリングの例 3 人とも好き 自分と趣味が似てる 似てる二人が好き ↓ じゃあ自分も気に入るかも!
2.2  嗜好の収集
基本はデータ データがないと話にならない
必要なデータは次の3つ ユーザ
アイテム
スコア スコアは Y/N を 1/0 に変換するなどしてもいい。(ソーシャルブックマークなどではこの手法を使う)
スコアの分類 スコアがたくさん出てくるから混乱しないよう注意
アイテムのスコア 前述のスコア 類似性スコア ユーザ間、アイテム間の類似性を表す指標 推薦スコア(shiumachiの造語) 推薦対象のユーザに対してどれだけ強く推薦するかを表す指標
2.3  似ているユーザを探し出す
類似性スコアの算出方法 協調フィルタリングのキモだが、方法はたくさんある http://ja.wikipedia.org/wiki/距離空間  を参照のこと
テキストで取り上げているのは以下の2つ ユークリッド距離
ピアソン相関 ここでいいスコアが出たユーザの嗜好を推薦するのがレコメンデーションの第一歩となる
ユークリッド距離 ごく普通の距離。
ユーザ間の、アイテムごとのスコアの差の2乗の和の平方根。
データが正規化されていないと正しい類似性が得にくい。
ピアソン相関係数 ユーザ間のスコアをそれぞれ x,y とおき、標準偏差をσ(x), 共分散を V(x,y) とすると、ピアソン相関係数は V(x,y)/σ(x)σ(y) となる。
-1 ~ 1 の値をとる。

Programming Collective Intelligence 100111