リコメンデーションのための相関係数1
ユーザーに対して類似のアイテムを推薦すること、いわゆるリコメンデーションを機械にさせるのが、浸透している。リコメンデーションのアルゴリズムというのは興味深い。
item A | item B | item C | item D | |
---|---|---|---|---|
user 1 | 2 | 0 | 2 | 1 |
user 2 | 3 | 0 | 1 | 3 |
user 3 | 2 | 1 | 3 | 1 |
user 4 | 2 | 2 | 4 | X |
4人のユーザーと4個のアイテムがあったとして、それぞれのユーザーが各アイテムに上の表のような評価を与えているとする。user4のitem Dに対する評価は不明で、今これを推定したいとする。
アプローチとしては2つあって、
- ユーザーの相関をとるアプローチ、
- アイテムの相関をとるアプローチ
がある。
今回は1について。
ユーザーごとの相関を計算には、ビアソンの相関係数がもっとも基本的な形だ。
user a, item b との相関係数は以下で計算できる。
ここで、 P はアイテムの集合であり、 r_i, j は user i のitem j に対する評価であり、 \bar{r_i} は user i のアイテムの評価の平均値である。
相関係数なので[-1, 1]の範囲を取り、1に近いほど類似度が高いことを示している。
今回は user 4 に似たユーザーを知りたいので、 user 4 と user 1, 2, 3 の相関係数を求める。 user 4 には item D の値がないので、 P = {A, B, C} です。
計算してみると、
C(A, D) = 0.50
C(B, D) = - 0.19
C(C, D) = 0.87
となり、user A は user D と高い相関があることが分かる。
user a の item p に対する評価の予測値は、以下の式から求められる。
ここで、Nは最近傍ユーザーの集合である。
user C を user D の再近傍ユーザーとすると、 user D の item 4 に対する評価の予測値は、
r_pred(D, 4) = 2.67 + 0.87 * (1 - 2.0) / 0.87 = 1.67
となる。