推薦システム — 空欄を埋めて「おすすめ」を作る
通販サイトの「この商品を買った人はこちらも」、動画サービスの「あなたへのおすすめ」。その正体は、まだ評価していない商品の点数を予測することです。ユーザー×アイテムの巨大な表には空欄だらけ。その空欄を上手に埋める2つの発想 — 協調フィルタリングと内容ベース — を動かして体感します。
1. 評価行列 — 空欄を埋めるのが推薦
推薦の舞台は、行がユーザー、列がアイテム、マスがその人の評価(★1〜5)という表です。実際にはほとんどのマスが空欄(?)。「あなた」がまだ観ていない作品に何点を付けそうかを予測できれば、点が高そうな作品を薦められます。
下の表の「?」のマスをクリックしてみてください。予測が計算されて埋まります。どうやって埋めているのかは、次の節で分解します。
2. 似たユーザーを探す — 協調フィルタリング
空欄を埋める1つ目の発想が協調フィルタリング。「あなたと好みが似た人を見つけ、その人たちの評価を平均する」だけです。SF好き同士なら、片方が高評価した未知の作品を、もう片方も気に入る可能性が高い、という素朴で強力なアイデアです。
下は「あなた」と各ユーザーの似ている度(評価パターンの近さ)を棒で表したもの。近い人ほど長い棒。使う人数 k を変えると、予測に混ぜる「ご近所さん」の数が変わります。
3. 内容ベース — アイテムの特徴で薦める
2つ目の発想は内容ベース。ユーザーではなくアイテムそのものの特徴(ジャンル・タグ)に注目します。「あなたが好きだった作品のタグ」を集めてプロフィールを作り、タグがよく重なる別の作品を薦めます。他人のデータが要らないのが強みです。
下で左の作品をクリックして「好き ♥」にすると、あなたの好みプロフィールが更新され、右の候補が特徴の重なりで採点されます。重なったタグが光ります。
4. コールドスタート — データが無いと薦められない
推薦の最大の弱点がコールドスタート問題。登録したての新規ユーザーは評価が空っぽで「似た人」を探せず、協調フィルタリングが効きません。新登場のアイテムも、まだ誰も評価していないので表から予測できません。
下で状況を切り替えて、どの手法が使える/使えないかを見てください。データが無い所では、内容ベースや単純な人気順が助けになります。
5. まとめ — おすすめを作る2つの発想
- 評価行列の空欄予測:推薦とは、ユーザー×アイテムの表の「?」を予測し、高そうな順に並べること。
- 協調フィルタリング:好みが似た人を探し、その評価を似ている度で重みづけ平均する。意外な発見に強い。
- 内容ベース:アイテムのタグ/特徴の重なりで薦める。他人のデータが不要だが、似た物ばかりになりやすい。
- コールドスタート:新規ユーザー・新規アイテムはデータが無く協調が効かない。内容ベースや人気順で補う。