🔢

行列分解(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音楽推薦の初期バージョン