SlideShare a Scribd company logo
協調フィルタリング入門
牧山 幸史
推薦(レコメンド)
• 推薦方法は大きく2つに分類される
– 内容ベースフィルタリング
– 協調フィルタリング
推薦(レコメンド)
• 推薦方法は大きく2つに分類される
• 例:レンタルビデオ店
– ファンである監督、好みのジャンルを利用者
に尋ねて、その条件に合ったものを選ぶ
⇒ 内容ベースフィルタリング
– 映画の趣味が似ている知り合いに、面白かっ
た映画を教えてもらう
⇒ 協調フィルタリング
内容ベースフィルタリング
利用者 推薦システム
• SFが好き
• スピルバーグ
• 1990年代
アイテム
データベース
ジュラシック
パ-ク
・スピルバーグ
・1993年
スタ-
ウォーズ
・ルーカス
・1977年
協調フィルタリング
利用者 推薦システム
• SFが好き
• スピルバーグ
• 1990年代
ジュラシック
パ-ク
スタ-
ウォーズ
キルビル
• SFが好き
• スピルバーグ
• 1990年代
• SFが好き
• ルーカス
• 2000年代
• アクション
• タランティーノ
• 2000年代
比較
協調フィルタ 内容ベース
セレンディピティ ○ ×
ドメイン知識 ○:不要 ×:必要
Cold-start 問題 × △
利用者数 ×:多数必要 ○:少数可
被覆率 × ○
類似アイテム × ○
少数派の利用者 × ○
推薦(レコメンド)
• 推薦方法は大きく2つに分類される
– 内容ベースフィルタリング
– 協調フィルタリング
• 今回使用する手法は協調フィルタリング
• ここからは、協調フィルタリングについ
て詳しく見ていく
協調フィルタリング
商品1 商品2 商品3 商品4
Aさん ○購入 ○購入 ×未購入 ○購入
Bさん ○購入 ○購入 ×未購入 ???
Bさんは商品4を購入しそう!
⇒ レコメンドしよう!
基本的な考え方
協調フィルタリング
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10
A 1 1 0 0 0 1 0 0 0 0 0.17
B 0 0 1 1 0 0 0 0 0 1 -0.7
C 1 0 0 0 1 0 0 0 1 1 1.0
D 0 0 0 1 1 0 0 1 1 0 0.17
E 1 0 0 0 0 0 0 1 0 0 0.61
X 1 0 0 0 1 ??? ??? ??? ??? ???
1=購入(好き)
0=未購入(嫌い)
嗜好データ
協調フィルタリング
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10
A 1 1 0 0 0 1 0 0 0 0 0.17
B 0 0 1 1 0 0 0 0 0 1 -0.7
C 1 0 0 0 1 0 0 0 1 1 1.0
D 0 0 0 1 1 0 0 1 1 0 0.17
E 1 0 0 0 0 0 0 1 0 0 0.61
X 1 0 0 0 1 ??? ??? ??? ??? ???
0 0 1 1 1
Xと似ているユーザ
Xと似ているユーザが
買っている商品
• 購入していないのは、嫌いだから?
• 閲覧すらしていないかもしれない
• 閲覧データを追加する
協調フィルタリング
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10
A 1 1 0 0 0 1 - - - - 0.17
B - - 1 1 0 - 0 0 0 1 -1
C 1 0 0 0 1 0 0 - 1 1 1
D - - 0 1 1 0 0 1 1 0 0.5
E 1 0 0 0 0 - - 1 0 - 0.61
X 1 0 0 0 1 - - - - -
1 =購入
0 =閲覧したが未購入
-=閲覧していない
協調フィルタリング
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10
A 1 1 0 0 0 1 - - - - 0.17
B - - 1 1 0 - 0 0 0 1 -1
C 1 0 0 0 1 0 0 - 1 1 1
D - - 0 1 1 0 0 1 1 0 0.5
E 1 0 0 0 0 - - 1 0 - 0.61
X 1 0 0 0 1 - - - - -
0 0 2 2 1
Xと似ているユーザが
買っている商品
協調フィルタリング
• ユーザの嗜好データを用いてレコメンドできた
• 手順
1. ユーザの嗜好データを取得する
2. 嗜好データに基づき、ユーザ間の類似度を算出
3. ターゲットのユーザに対して、似ているユーザ
を抽出
4. 似ているユーザが購入している商品をレコメン
ド
協調フィルタリングの特長
• ドメイン知識を必要としない
• 異なるジャンルをまたいだ推薦ができる
• 利用者が多い場合に有利
• 商品が頻繁に入れ替わる場合は不利
⇒ × Cold-Start 問題
問題点
• 全ての商品をカバーできない
⇒ レコメンドに出てこない商品が存在
• 類似品をレコメンドする
⇒ 色違い・サイズ違いなど
• 少数派問題
⇒ 類似した嗜好の人がいなければ、嗜好を予測
できない
Cold-Start 問題
• 新しい商品が推薦されない
– 誰も購入していない商品は推薦されない
• 新しいユーザに推薦できない
– 登録してすぐのユーザは行動履歴が少ないた
め、類似ユーザを見つけることができない
Cold-Start 問題
• 新しいユーザに推薦できない
• 解決案
– アイテム間型協調フィルタリング
– クラスタリングベース協調フィルタリング
• [Xue 05] “Scalable Collaborative Filtering
Using Cluster-based Smoothing”
アイテム間型
協調フィルタリング
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10
A 1 1 0 0 0 1 - - - -
B - - 1 1 0 - 0 0 0 1
C 1 0 0 0 1 0 0 - 1 1
D - - 0 1 1 0 0 1 1 0
E 1 0 0 0 0 - - 1 0 -
X 1 0 0 0 1 - - - - -
0.7 0.1 0.4 0.5 1.0 0.3 0.2 0.8 0.9 0.6
現在閲覧している商品に対して
商品(アイテム)間の類似度を計算し、
類似度の高いものを推薦する
アイテム間型
協調フィルタリング
• 欠点
– すべてのユーザに同じ商品が推薦される
• 解決案
– ユーザ間協調フィルタリングの結果と混ぜる
• どう混ぜる?
– [Sawar 01] “ItemBased Collaborative
Filtering Recommendation Algorithms”
手順
協調フィルタリング
• ユーザの嗜好データを用いてレコメンドできた
• 手順
1. ユーザの嗜好データを取得する
2. 嗜好データに基づき、ユーザ間の類似度を算出
3. ターゲットのユーザに対して、似ているユーザ
を抽出
4. 似ているユーザが購入している商品をレコメン
ド
1. 嗜好データの獲得
• 明示的データ獲得
– ユーザに明示的に評価させる
– YouTube のグッド
– Amazon の星
• 暗黙的データ獲得
– 自動的に取得できる情報のみ使用
– 閲覧データ、購買データなど
1. 嗜好データの獲得
明示的 暗黙的
データ量 ×:少ない ○:多い
データの正確さ ○:正確 ×:不正確
未評価と不支持
の区別
○:明確 ×:不明瞭
利用者の認知度 ○:認知 ×:不認知
暗黙的データ [Nichlos 97]
1. Purchase
2. Assess
3. Repeated Use
4. Save/Print
5. Delete
6. Refer
7. Reply
8. Mark
9. Terminate Search
10. Examine/Read
11. Consider
12. Glimpse
13. Associate
14. Query
2. ユーザ間の類似度算出
• 類似度の種類
– ピアソン相関係数
– 強制ピアソン相関係数
– スピアマン順位相関係数
– ケンドールの τ 相関係数
– コサイン類似度
– 調整済みコサイン類似度
3. 類似ユーザの抽出
• 試行錯誤が必要
– 上位 100 人
– 類似度 0.5 以上
4. 商品のレコメンド
• ユーザ X に対する商品の評価値を算出
– 絶対評価 or 相対評価
– 類似度による重みづけ
チューニング
チューニング
• 様々な選択肢から、精度の良くなるもの
を選び出すことをチューニングと呼ぶ
チューニング
• パラメータを決めるには、実際やってみ
るしかない?
• パラメータの組み合わせは膨大
• すべてやってみることはできない
• 実際に適用しなくても大体わかる方法
⇒ クロスバリデーション
クロスバリデーション
• 現在取得できているデータを「モデル構
築用」と「評価用」に分ける
• 「モデル構築用」だけを使ってモデルを
作成し「評価用」でモデルの精度を評価
する
モデル構築用_______評価用
チューニング
• クロスバリデーションにより良さそうな
モデルを 1 ~ 3 個までしぼり、ユーザー
テストにかけて評価する
• 評価方法:A/B テスト
A/Bテストについて
• レコメンドエンジンを使うことによって、
売り上げが伸びるか?
• ユーザをランダムにレコメンドあり/なし
のページに振り分け、購入回数・購入金
額を比較する
⇒ A/B テスト
参考
• 神嶌敏弘「推薦システムのアルゴリズム」
– http://www.kamishima.net/archive/recsysdo
c.pdf
• 協調フィルタリングとは(株式会社ALBERT)
– http://www.albert2005.co.jp/technology/rec
om/c_filtering.html
• 協調フィルタリングについてまとめてみた。
(Analyze IT.)
– http://d.hatena.ne.jp/EulerDijkstra/20130407
/1365349866

More Related Content

協調フィルタリング入門