協調フィルタリングと行列分解(推薦システム)

協調フィルタリングと行列分解は、推薦システム(Recommendation System)における中核的な手法であり、特に教師なし学習の文脈で広く用いられています。以下では、それぞれの理論と数学的背景、アルゴリズム、実用上の考慮点を詳しく説明します。


1. 協調フィルタリング(Collaborative Filtering)

概要

協調フィルタリングは、ユーザーとアイテムの**相互作用データ(例:評価、クリック、購入履歴など)**に基づいて、ユーザーの好みに合うアイテムを推薦する手法です。

種類

  1. ユーザーベース協調フィルタリング(User-based CF)

    • 類似するユーザーの行動を参考にして推薦を行う。

    • 例:「あなたと似たユーザーAがこの映画を高評価したので、あなたにも推薦」

  2. アイテムベース協調フィルタリング(Item-based CF)

    • 類似するアイテムを元に推薦を行う。

    • 例:「この映画を見た人は、似たジャンルのこの映画も見ている」

ユーザー×アイテム行列

データは通常、次のような疎な行列として表されます:

映画A 映画B 映画C 映画D
ユーザー1 5 3
ユーザー2 4 2
ユーザー3 2 4 5

この行列を使って、評価値が空白の部分を予測することが推薦につながります。


2. 行列分解(Matrix Factorization)

概要

行列分解は、上記のユーザー×アイテム評価行列を、低次元の潜在特徴空間に分解することで、欠損部分を予測する教師なし学習的アプローチです。

数学的定式化

観測された評価行列 RRm×nR \in \mathbb{R}^{m \times n} を、

  • ユーザーの潜在特徴行列 URm×kU \in \mathbb{R}^{m \times k}

  • アイテムの潜在特徴行列 VRn×kV \in \mathbb{R}^{n \times k}

に分解して、近似します:

RUVTR \approx U V^T

ここで:

  • mm:ユーザー数

  • nn:アイテム数

  • kk:潜在特徴次元(通常 km,nk \ll m, n

学習の目的

目的関数(損失関数)として、以下の正則化付き誤差最小化を行います:

minU,V(i,j)K(RijUiVjT)2+λ(U2+V2)\min_{U, V} \sum_{(i,j) \in \mathcal{K}} (R_{ij} – U_i \cdot V_j^T)^2 + \lambda(\|U\|^2 + \|V\|^2)

  • K\mathcal{K}:観測された評価のインデックス集合

  • λ\lambda:過学習を防ぐための正則化項

学習アルゴリズム

  • 確率的勾配降下法(SGD)

  • 交互最小二乗法(ALS: Alternating Least Squares)


3. 協調フィルタリング vs 行列分解

特徴 協調フィルタリング(CF) 行列分解(MF)
データの利用 明示的または暗黙的な評価 明示的評価が中心
モデルの構築 類似度計算による非モデル型 潜在因子によるモデル型
計算量 ユーザーやアイテム数に依存 潜在因子次元に依存
スケーラビリティ 低い ALS などで高スケーラビリティ
新規ユーザー/アイテム問題 弱い(コールドスタート問題) 強い(特徴がないと予測不可)

4. 応用例

  • Netflix:視聴履歴に基づく映画推薦(行列分解が中心)

  • Amazon:購入履歴に基づく類似商品の推薦(アイテムベースCF)

  • Spotify:再生履歴に基づく楽曲推薦


5. まとめ

協調フィルタリングと行列分解は、教師なし学習における次元削減・潜在特徴抽出の応用であり、大量のユーザー行動データから有用な構造を抽出し、個人化された推薦を実現するための有力な手法です。とくに行列分解は、次元削減(PCA)や潜在意味解析(LSA)に類似した枠組みであり、理論的にも実用的にも重要な位置を占めています。

生成日:2025/06/01