協調フィルタリングを用いた推薦システムの概要
※こんな概念があるんだ、と知れるくらいの内容です
推薦システムの概要と存在理由
推薦システムとは「特定のユーザに最も興味を持たれそなアイテムを提案するソフトウェアツール及び技術」を指す
推薦システムの存在理由は主に下の二つ
世の中が「情報過多」状態にあるから
Web、SNS、ECなどで目にする情報が大量になっている
推薦システムによって、ユーザが本当に求めている情報にたどり着けるようにする
ニッチなコンテンツへの需要を引き出すため
まだ需要がわずかであるが、0ではない商品やサービスが多数存在する
いわゆる「ロングテール(分布)」のテールの部分
消費者側は自分の知らない商品の存在に気付くことができる!供給者側は需要を喚起し消費へ繋げることができる!(win-win)
好みを予測する対象であるユーザを「対象ユーザ」、アイテムを「対象アイテム」と呼んでいる
「協調フィルタリング」とは
好みが似ている他者の嗜好を手がかりに対象ユーザの好き嫌いを予測してアイテムを推薦する手法や技術
評価値行列を基に予測
ユーザのアイテムに対する評価値を並べた行列が「評価値行列」
下記は行がユーザ、列がアイテムの行列
「+1」が好き、「-1」を指す
(例)taroとhanakoがappleとbananaとgrapeに付けた評価値から、tatsuyaのgrapeに対する評価を予測
欠損値が多い場合は、主成分分析等を用いて次元圧縮する
(行列の欠損値を埋めることを「行列補完問題」と呼ぶ)
code:評価値行列
apple banana grape
taro +1 +1 -1
hanako -1 +1 -1
tatsuya -1 +1 ? ←ここが知りたい!
協調フィルタリングによる推薦は、アプローチの方法で「近傍ベース協調フィルタリング」と「モデルベース協調フィルタリング」に大別できる
協調フィルタリング以外の推薦システムとして、アイテムの特徴を基に推薦をおこなう「内容ベース推薦システム」や、ユーザとのインタラクションから適切なアイテムを探し出す「知識ベース推薦システム」等がある
code:協調フィルタリングの分類
協調フィルタリング-----近傍ベース協調フィルタリング-----ユーザベース協調フィルタリング
| |--アイテムベース協調フィルタリング
|
|--モデルベース協調フィルタリング-----ルールベース協調フィルタリング
|--単純ベイズ協調フィルタリング
|--決定儀に基づく協調フィルタリング
|--潜在因子モデル協調フィルタリング
近傍ベース協調フィルタリング
近傍のユーザやアイテムを基に評価値を予測する協調フィルタリング
「ユーザベース協調フィルタリング」と「アイテムベース協調フィルタリング」に大別できる
ユーザベース協調フィルタリング
対象ユーザと嗜好が類似するユーザの評価値を基に、対象アイテムの評価値を予測する手法
ユーザ間の類似度を定量化する指標として、評価値を基に算出したピアソンの相関係数がよく用いられる
類似ユーザが対象アイテムに与えた評価値の平均と、対象ユーザが全アイテムに与えた評価値の平均を用いて、対象アイテムの評価値を算出(計算式省略)
アイテムベース協調フィルタリング
対象アイテムの類似アイテムを選定し、類似アイテムの評価値を基に、対象ユーザの対象アイテムに対する評価値を予測する手法
アイテム間の類似度を定量化する指標として、「調整コサイン類似度」が有効と知られている
調整コサイン類似度とは、ユーザごとの評価基準を正規化したうえで求めるコサイン類似度
例えば、ユーザAは全アイテムに対してゆるめの評価基準を持っているが、ユーザBは厳しめの評価基準を持っている可能性がある(ユーザバイアスという)
コサイン類似度計算時に、平均中心化評価値を用いることで算出可能
ユーザベース協調フィルタリングとアイテムベース協調フィルタリングの比較
正確性:対象ユーザの嗜好に合った推薦ができているか
ユーザベース協調フィルタリングの方が良い
類似アイテムに対する対象ユーザ自身の評価を手がかりに予測するため
セレンディピティ:予想外のもの・ことを発見できるか
ユーザベース協調フィルタリングの方が良い
アイテムベースの推薦は自明な場合もあるため(賢者の石を読んだ人は、当然秘密の部屋も好むだろうという話)
説明性:推薦理由を説明可能であるか
それぞれの良さあり
ユーザベース:「あなたの嗜好と類似したユーザはこのようなアイテムを買っています」
アイテムベース:「このアイテムを買ったユーザは他にこんなアイテムを買っています」
計算効率性
アイテムベース協調フィルタリングの方が良い
一般的に、「ユーザ数>アイテム数」となる場合が多い
∴ユーザ類似度の計算量はアイテム類似度の計算量に比べて膨大になる
モデルベース協調フィルタリング
評価値行列から学習モデルを構築し、評価値を予測する協調フィルタリング
学習モデルを構築するためのアプローチによって「ルールベース協調フィルタリング」「単純ベイズ協調フィルタリング」「決定木に基づく協調フィルタリング」等に分類される
ルールベース協調フィルタリング
ルールベースの分類器を用いて評価値を予測する協調フィルタリング
「ルール」とは、例えば『りんごが「好き」でバナナが「嫌い」ならば、ぶどうは「好き」』というもの
『りんごが「好き」でバナナが「嫌い」』を条件部、『ぶどうは「好き」』を帰結部と呼ぶ
対象アイテムの評価が帰結部に来る
協調フィルタリングにおいては、評価値行列からルールを抽出する
ルールの決定方法
①帰結部に対象アイテムが現れるルールを洗い出す(例:「ぶどう」を対象アイテムとするとき、『りんごが「好き」ならばぶどうは「嫌い」』など)
②出現回数と支持度を求める
「出現回数」は、評価値行列内でのルールの出現回数を表す
「支持度」は、「(ルールAの出現回数)/(全ユーザ数)」で求められる
③確信度を求める
支持度を使って求まるが、式を変形すると「(ルールAの出現回数)/(アイテムXが好き(または嫌い)かつアイテムYを評価済みのユーザ数)」で求まる
(例)ルール:『りんごが「好き」ならばぶどうは「嫌い」』の場合
分母の「アイテムXが好き(または嫌い)かつアイテムYを評価済みのユーザ数」とは、「りんごが「好き」かつぶどうを評価済みのユーザ数」を表す(評価済み:好き嫌いを問わない)
④支持度と確信度の閾値を決め、閾値以上のルールを採用する
抽出したルールにおいて、条件部に対象ユーザが評価済みのアイテムが含まれていて、かつ帰結部に対象アイテムの評価が含まれるルールを「発火ルール」という
発火ルールにおける対象アイテムの評価の平均(または確信度を重みとする加重平均)が、対象ユーザの対象アイテムに対する評価である
単純ベイズ協調フィルタリング
単純ベイズ分類器を用いて評価値を予測する協調フィルタリング
ベイズの定理と単純ベイズ過程により、対象ユーザが対象アイテムを「好き」である確率、「嫌い」である確率を求める
決定木に基づく協調フィルタリング
文字通り、評価値行列から決定木を作成して評価値を予測する協調フィルタリング
評価値行列では、説明変数と目的変数の区別が存在しない→アイテムの数だけ決定木を作成することで対応
協調フィルタリングが抱える「コールドスタート問題」
「コールドスタート問題」とは、評価値が与えられていない新規アイテムや新規ユーザに対して、類似アイテムや類似ユーザを選定できず、適切な推薦をおこなうことができないという問題
アイテムの特徴に基づく「内容ベース推薦」では、これらの問題が発生しない
(時系列データを使うとコールドスタート問題に対応できた、みたいな研究を筆者は見たことがありますが言及しません)