協調フィルタリングと行列分解は、推薦システム(Recommendation System)における中核的な手法であり、特に教師なし学習の文脈で広く用いられています。以下では、それぞれの理論と数学的背景、アルゴリズム、実用上の考慮点を詳しく説明します。
1. 協調フィルタリング(Collaborative Filtering)
概要
協調フィルタリングは、ユーザーとアイテムの**相互作用データ(例:評価、クリック、購入履歴など)**に基づいて、ユーザーの好みに合うアイテムを推薦する手法です。
種類
-
ユーザーベース協調フィルタリング(User-based CF)
-
類似するユーザーの行動を参考にして推薦を行う。
-
例:「あなたと似たユーザーAがこの映画を高評価したので、あなたにも推薦」
-
-
アイテムベース協調フィルタリング(Item-based CF)
-
類似するアイテムを元に推薦を行う。
-
例:「この映画を見た人は、似たジャンルのこの映画も見ている」
-
ユーザー×アイテム行列
データは通常、次のような疎な行列として表されます:
| 映画A | 映画B | 映画C | 映画D | |
|---|---|---|---|---|
| ユーザー1 | 5 | 3 | ||
| ユーザー2 | 4 | 2 | ||
| ユーザー3 | 2 | 4 | 5 |
この行列を使って、評価値が空白の部分を予測することが推薦につながります。
2. 行列分解(Matrix Factorization)
概要
行列分解は、上記のユーザー×アイテム評価行列を、低次元の潜在特徴空間に分解することで、欠損部分を予測する教師なし学習的アプローチです。
数学的定式化
観測された評価行列 を、
-
ユーザーの潜在特徴行列
-
アイテムの潜在特徴行列
に分解して、近似します:
ここで:
-
:ユーザー数
-
:アイテム数
-
:潜在特徴次元(通常 )
学習の目的
目的関数(損失関数)として、以下の正則化付き誤差最小化を行います:
-
:観測された評価のインデックス集合
-
:過学習を防ぐための正則化項
学習アルゴリズム
-
確率的勾配降下法(SGD)
-
交互最小二乗法(ALS: Alternating Least Squares)
3. 協調フィルタリング vs 行列分解
| 特徴 | 協調フィルタリング(CF) | 行列分解(MF) |
|---|---|---|
| データの利用 | 明示的または暗黙的な評価 | 明示的評価が中心 |
| モデルの構築 | 類似度計算による非モデル型 | 潜在因子によるモデル型 |
| 計算量 | ユーザーやアイテム数に依存 | 潜在因子次元に依存 |
| スケーラビリティ | 低い | ALS などで高スケーラビリティ |
| 新規ユーザー/アイテム問題 | 弱い(コールドスタート問題) | 強い(特徴がないと予測不可) |
4. 応用例
-
Netflix:視聴履歴に基づく映画推薦(行列分解が中心)
-
Amazon:購入履歴に基づく類似商品の推薦(アイテムベースCF)
-
Spotify:再生履歴に基づく楽曲推薦
5. まとめ
協調フィルタリングと行列分解は、教師なし学習における次元削減・潜在特徴抽出の応用であり、大量のユーザー行動データから有用な構造を抽出し、個人化された推薦を実現するための有力な手法です。とくに行列分解は、次元削減(PCA)や潜在意味解析(LSA)に類似した枠組みであり、理論的にも実用的にも重要な位置を占めています。
生成日:2025/06/01