🔢
行列分解(Matrix Factorization)
Netflix Prizeを制した潜在因子モデル
2006-2009年のNetflix Prizeで最も強力だったアプローチだ。SVD、ALS、BPRなどの変種があるが核心アイデアは同じ。
ユーザー-アイテムマトリクスR(m×n)をユーザー行列P(m×k)とアイテム行列Q(n×k)に分解する。kは潜在因子(latent factor)の数。k=50なら各ユーザーとアイテムが50次元ベクトルで表現される。
なぜ機能するのか
「アクション好き度」「ロマンス好き度」のような隠れた要因を自動的に発見する。明示的にジャンルを教えなくても、データからパターンを見つけ出す。
これは事実上の埋め込み学習だ。Word2Vecより先に登場した埋め込みと言える。
動作原理
1
ユーザー-アイテムマトリクスRを構築(スパース)
2
P(ユーザー)とQ(アイテム)行列をランダム初期化
3
SGDまたはALSでR ≈ P × Qᵀとなるよう最適化
4
空セルをP_u · Q_iの内積で予測
メリット
- ✓ スパースデータでも潜在因子をよく学習
- ✓ 結果の解釈が比較的容易
デメリット
- ✗ ユーザー/アイテムのサイド情報を活用しにくい
- ✗ 新データごとに全体再学習が必要になる場合がある
ユースケース
Netflix Prize優勝ソリューションの核心
Spotify音楽推薦の初期バージョン