SlideShare una empresa de Scribd logo
1 de 35
協調フィルタリング入門
牧山 幸史
推薦(レコメンド)
• 推薦方法は大きく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

Más contenido relacionado

La actualidad más candente

Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
Kohta Ishikawa
 

La actualidad más candente (20)

SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
 
Transformer メタサーベイ
Transformer メタサーベイTransformer メタサーベイ
Transformer メタサーベイ
 
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
 
深層生成モデルと世界モデル(2020/11/20版)
深層生成モデルと世界モデル(2020/11/20版)深層生成モデルと世界モデル(2020/11/20版)
深層生成モデルと世界モデル(2020/11/20版)
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
[DL輪読会]GLIDE: Guided Language to Image Diffusion  for Generation and Editing[DL輪読会]GLIDE: Guided Language to Image Diffusion  for Generation and Editing
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 
協調フィルタリングを利用した推薦システム構築
協調フィルタリングを利用した推薦システム構築協調フィルタリングを利用した推薦システム構築
協調フィルタリングを利用した推薦システム構築
 
GAN(と強化学習との関係)
GAN(と強化学習との関係)GAN(と強化学習との関係)
GAN(と強化学習との関係)
 
工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方
 
情報推薦システム入門:講義スライド
情報推薦システム入門:講義スライド情報推薦システム入門:講義スライド
情報推薦システム入門:講義スライド
 
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
 
分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~
 
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
 
Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)Rでisomap(多様体学習のはなし)
Rでisomap(多様体学習のはなし)
 
画像処理AIを用いた異常検知
画像処理AIを用いた異常検知画像処理AIを用いた異常検知
画像処理AIを用いた異常検知
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AI
 
Layer Normalization@NIPS+読み会・関西
Layer Normalization@NIPS+読み会・関西Layer Normalization@NIPS+読み会・関西
Layer Normalization@NIPS+読み会・関西
 

Destacado

20140329 tokyo r lt 「カーネルとsvm」
20140329 tokyo r lt 「カーネルとsvm」20140329 tokyo r lt 「カーネルとsvm」
20140329 tokyo r lt 「カーネルとsvm」
tetsuro ito
 
機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks
Yuya Unno
 

Destacado (11)

Matrix Factorizationを使った評価予測
Matrix Factorizationを使った評価予測Matrix Factorizationを使った評価予測
Matrix Factorizationを使った評価予測
 
Elasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させるElasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させる
 
20140329 tokyo r lt 「カーネルとsvm」
20140329 tokyo r lt 「カーネルとsvm」20140329 tokyo r lt 「カーネルとsvm」
20140329 tokyo r lt 「カーネルとsvm」
 
SMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装するSMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装する
 
非制約最小二乗密度比推定法 uLSIF を用いた外れ値検出
非制約最小二乗密度比推定法 uLSIF を用いた外れ値検出非制約最小二乗密度比推定法 uLSIF を用いた外れ値検出
非制約最小二乗密度比推定法 uLSIF を用いた外れ値検出
 
fastTextの実装を見てみた
fastTextの実装を見てみたfastTextの実装を見てみた
fastTextの実装を見てみた
 
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
 
最新業界事情から見るデータサイエンティストの「実像」
最新業界事情から見るデータサイエンティストの「実像」最新業界事情から見るデータサイエンティストの「実像」
最新業界事情から見るデータサイエンティストの「実像」
 
Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)
 
画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピ画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピ
 
機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks
 

Más de hoxo_m

データの不備を統計的に見抜く (Gelman’s secret weapon)
データの不備を統計的に見抜く (Gelman’s secret weapon)データの不備を統計的に見抜く (Gelman’s secret weapon)
データの不備を統計的に見抜く (Gelman’s secret weapon)
hoxo_m
 
カップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみたカップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみた
hoxo_m
 
Stan で欠測データの相関係数を推定してみた
Stan で欠測データの相関係数を推定してみたStan で欠測データの相関係数を推定してみた
Stan で欠測データの相関係数を推定してみた
hoxo_m
 
チェビシェフの不等式
チェビシェフの不等式チェビシェフの不等式
チェビシェフの不等式
hoxo_m
 
swirl パッケージでインタラクティブ学習
swirl パッケージでインタラクティブ学習swirl パッケージでインタラクティブ学習
swirl パッケージでインタラクティブ学習
hoxo_m
 
RPubs とその Bot たち
RPubs とその Bot たちRPubs とその Bot たち
RPubs とその Bot たち
hoxo_m
 

Más de hoxo_m (20)

Shinyユーザのための非同期プログラミング入門
Shinyユーザのための非同期プログラミング入門Shinyユーザのための非同期プログラミング入門
Shinyユーザのための非同期プログラミング入門
 
Prophet入門【理論編】Facebookの時系列予測ツール
Prophet入門【理論編】Facebookの時系列予測ツールProphet入門【理論編】Facebookの時系列予測ツール
Prophet入門【理論編】Facebookの時系列予測ツール
 
Prophet入門【R編】Facebookの時系列予測ツール
Prophet入門【R編】Facebookの時系列予測ツールProphet入門【R編】Facebookの時系列予測ツール
Prophet入門【R編】Facebookの時系列予測ツール
 
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
 
学習係数
学習係数学習係数
学習係数
 
Prophet入門【Python編】Facebookの時系列予測ツール
Prophet入門【Python編】Facebookの時系列予測ツールProphet入門【Python編】Facebookの時系列予測ツール
Prophet入門【Python編】Facebookの時系列予測ツール
 
AJAXサイトの情報をWebスクレイピング
AJAXサイトの情報をWebスクレイピングAJAXサイトの情報をWebスクレイピング
AJAXサイトの情報をWebスクレイピング
 
高速なガンマ分布の最尤推定法について
高速なガンマ分布の最尤推定法について高速なガンマ分布の最尤推定法について
高速なガンマ分布の最尤推定法について
 
経験過程
経験過程経験過程
経験過程
 
確率論基礎
確率論基礎確率論基礎
確率論基礎
 
シンギュラリティを知らずに機械学習を語るな
シンギュラリティを知らずに機械学習を語るなシンギュラリティを知らずに機械学習を語るな
シンギュラリティを知らずに機械学習を語るな
 
階層モデルの分散パラメータの事前分布について
階層モデルの分散パラメータの事前分布について階層モデルの分散パラメータの事前分布について
階層モデルの分散パラメータの事前分布について
 
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
 
トピックモデルによる統計的潜在意味解析読書会 3.7 評価方法 - 3.9 モデル選択 #トピ本
トピックモデルによる統計的潜在意味解析読書会 3.7 評価方法 - 3.9 モデル選択 #トピ本トピックモデルによる統計的潜在意味解析読書会 3.7 評価方法 - 3.9 モデル選択 #トピ本
トピックモデルによる統計的潜在意味解析読書会 3.7 評価方法 - 3.9 モデル選択 #トピ本
 
データの不備を統計的に見抜く (Gelman’s secret weapon)
データの不備を統計的に見抜く (Gelman’s secret weapon)データの不備を統計的に見抜く (Gelman’s secret weapon)
データの不備を統計的に見抜く (Gelman’s secret weapon)
 
カップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみたカップルが一緒にお風呂に入る割合をベイズ推定してみた
カップルが一緒にお風呂に入る割合をベイズ推定してみた
 
Stan で欠測データの相関係数を推定してみた
Stan で欠測データの相関係数を推定してみたStan で欠測データの相関係数を推定してみた
Stan で欠測データの相関係数を推定してみた
 
チェビシェフの不等式
チェビシェフの不等式チェビシェフの不等式
チェビシェフの不等式
 
swirl パッケージでインタラクティブ学習
swirl パッケージでインタラクティブ学習swirl パッケージでインタラクティブ学習
swirl パッケージでインタラクティブ学習
 
RPubs とその Bot たち
RPubs とその Bot たちRPubs とその Bot たち
RPubs とその Bot たち
 

協調フィルタリング入門