協調フィルタリング#

協調フィルタリング(Collaborative Filtering)は、ユーザーの行動履歴や評価データから「似ているユーザー/アイテム」を見つけて推薦を行う手法

基本の考え方自体はシンプルで

  • 「あなたと似た行動をしている人が好きなものは、あなたも好きな可能性が高い」

  • 「あなたが好きなアイテムに似たアイテムは、他にも好きになる可能性が高い」

というもの。

アルゴリズムはメモリベースとモデルベースに大別される

  1. メモリベース法(memory-based method, instance-based method)

    • ユーザーベース:ユーザの類似性に注目する

    • アイテムベース:アイテムの類似性に注目する

  2. モデルベース法(model-based method):ユーザの嗜好をモデル化して推薦

メモリベース法#

推薦の都度リアルタイムに類似度を計算する方法は メモリベース法(memory-based method) あるいは 事例ベース法(instance-based method) と呼ばれる。

ユーザーベース協調フィルタリング#

ユーザー\(i\)と似たユーザーがアイテム\(j\)に与えた評価に基づいて、ユーザー\(i\)がまだ評価していないアイテム\(j\)に与えるレイティング(またはscore)\(s_{ij}\)を予測する

\[ s_{i j}=\bar{y}_{i \cdot}+\frac{\sum_{\ell \in \mathcal{I}_j(i)} w(i, \ell)\left(y_{\ell j}-\bar{y}_{\ell .}\right)}{\sum_{\ell \in \mathcal{I}_j(i)}|w(i, \ell)|} \]
  • \(\mathcal{I}_j(i)\) :アイテム \(j\) を評価したユーザでユーザ \(i\) に類似するユーザの集合

  • \(w(i, \ell)\):ユーザ\(\ell\)の評価に対する重み

  • \(\bar{y}_{i \cdot}\)はユーザ\(i\)の他のアイテムへの平均レイティング

ユーザ \(i\) に類似するユーザの集合を定義する方法は、最も単純なのはピアソンの相関係数を使って近傍の\(k\)人を選択するもの

アイテムベース協調フィルタリング#

ユーザー\(i\)へのアイテム\(j\)の推薦に使うスコア\(\hat{y}_{ij}\)の推薦について、
あるアイテム\(j\)に似ているアイテムたちへのユーザー\(i\)の過去の応答をもとに\(\hat{y}_{ij}\)を推定する

モデルベース法#

観測データの規則性を学習したモデルを事前に用意しておく方法を モデルベース法(model-based method) という。

モデルには

  • クラスタリング

  • 回帰・分類・ランキング問題として評価値を予測するモデル

  • トピックモデル

    • LDA(Latent Dirichlet Allocation)などで評価値行列を次元削減し、嗜好を表現する情報を獲得する

  • 行列分解(Matrix Factorization)

    • 評価値行列をユーザー行列とアイテム行列に分解し、ユーザーベクトルとアイテムベクトルの類似度で予測評価値を計算する

など様々なモデルが使われる。

データ数#

田村幸之介, & 松原仁. (2008). 協調フィルタリングにおけるデータの必要数の分析 (Doctoral dissertation, Future University Hakodate).

  • ユーザーベースの手法であるGroupLensを使った。

  • データ数を減らしながら精度の変化を見たところ、最低でも8万レコードほしいという結果に

参考#