機械学習
論文読み

論文読み "Collaborative Filtering for Implicit Feed Dataset"

概要

  • 今回読む論文
    • Collaborative Filtering for Implicit Feed Dataset (pdf)
    • 余談: googleで確認すると "cited by 1201" ですごい。
    • 内容
    • Latent factor modelの拡張を行っている。
    • 一般的にユーザーからの負のフィードバックは少ない(or 集めるのが困難)。
    • そこで、フィードバックに対して信頼度という概念を導入している。
      • 例えば、ある商品の購入歴がない場合、"商品の存在に気づいていないだけ" or "興味がない"のどちらなのかが不明。

準備

まず、この記事で使う記号の整理を行う。

ユーザーを表すときは$u$、$v$を使い、アイテムを表すときは$i$、$j$を使う。
ユーザー $u$ のアイテム $i$ に関する観測データを $r_{ui}$ と書く。

Latent factor model

下記の最小化問題を解く。
$$
\min_{x, y} \sum_{r_{ui} \text{ is known}} (r_{ui} - \,^tx_u y_i)^2 + \lambda (\sum_{u} ||x_u||^2 + \sum_{i} ||y_i||^2)
$$

提案しているModel

もしユーザーuがアイテムiを消費していたら( $r_{ui}>0$ )、好み$p_{ui}$ が1。 逆に消費していなかったら、好み$p_{ui}$ が0。これを数式で表すと、

$$p_{ui} = 1_{r_{ui} > 0}$$

しかし、好みが1である場合、データをして信頼度が高いが、0の場合は信頼度が低い。というのも0というのは、興味が無いわけではなくアイテムを知らなかった場合や何らかの事情で消費できなかった場合も0になるから。

また、消費している場合も、一概に信頼度が高いとは言い切れない。ユーザが自分のためではなくプレゼントとして購入しただけかもしれない。

そこで、データに対する信頼度 $c_{ui}$ をモデル化する。

$$c_{ui} = 1 + \alpha r_{ui}$$

(この論文の実験では $\alpha = 40$ としている。)

モデリングのゴールは
* 各ユーザー $u$ に対して、 $x_u \in R^f$
* 各アイテム $i$ に対して、 $y_i \in R^f$

を求めることである。
ここで、好みは次のように書けることを仮定する。

$$p_{ui} = \,^tx_u y_i $$

このような設定は既存のFactorizationテクニックと一致する。
異なる点は次の2つ。

  • 信頼度 $c_{ui}$ を使用する。
  • 最適化を観測した $r_{ui}$ だけではなく、全ての $u$、$i$ の組み合わせに対して行う。

つまり解くべき問題は下記のようになる。

$$
\min_{x, y} \sum_{u, i} c_{ui} (p_{ui} - \,^tx_u y_i)^2 + \lambda (\sum_{u} ||x_u||^2 + \sum_{i} ||y_i||^2)
$$

正則化を調整するパラメータ $\lambda$ は、クロスバリデーションで決定する。

この最適化でデータの組み合わせ数は $m \times n$ (ユーザ数 ✕ アイテム数) になる。実際のデータでは10億以上になることも稀ではない。

この状況では、一般的に使われているSGD等は使えない。 そこで次のような方法を採用する。

ユーザー要素 $x_u$ とアイテム要素 $y_i$ を交互に最適化する。つまり、片方を固定してもう片方を最適化を行い、これを交互に繰り返す。この方法はスケーラブルである。

$y_i$ を固定したとき、目的関数を最小化する $x_u$ は

$$x_u = (\,^tY C^u Y + \lambda I)^{-1} \,^t Y C^u p(u)$$

となる。同様に $x_u$ を固定したとき、$y_i$ は

$$y_i = (\,^tX C^i X + \lambda I)^{-1} \,^t X C^i p(i)$$

となる。

これを収束するまで繰り返すことにより、$x_u$、$y_i$ を求める。