糞糞糞ネット弁慶

読んだ論文についてメモを書きます.趣味の話は http://repose.hatenablog.com

TrustWalker: a random walk model for combining trust-based and item-based recommendation(KDD 2009) 読んだ

TrustWalker: a random walk model for combining trust-based and item-based recommendation
タイトルに釣られて読んだ.内容がシンプルなだけでなく,いちいち添字を略す理由だのが書いてあり,非常に読みやすかった.

概要

  • 協調フィルタリングでのコールドスタート問題(評価がほとんどないユーザにアイテムを推薦できない)に対応したい
  • 新規ユーザであっても,他のユーザとの信頼関係のデータ(trust network)があれば対応できる

notation

ユーザ及びアイテムについて,ユーザがアイテムについてと評価した(大抵これは[1,5]の整数値である)アイテム集合がある.また,ユーザがユーザを信頼している状態をで表現するtrust networkもあるとする.以下では0/1で信頼している/していないとしているが,これは[0,1]の実数値で表現したとしても容易に拡張可能である.trust networkにおけるユーザに対する隣接ユーザ(『信頼ユーザ』)集合をとする.
問題定義としては,ユーザがまだ評価していないアイテムについて評価を予測する.

TrustWalker概要

アルゴリズムを簡単に書くとこうなる

協調フィルタリングとtrust networkをうまく組み合わせていて,なおかつわかりやすい.

詳細な数式

ランダムウォーク

ユーザからランダムウォークで移動する確率を

とする.trust networkのエッジが実数値でもここに代入してやるだけで済む.

類似度

2つのアイテム間の類似度[sim(i,j)]は,アイテムにおけるユーザ評価を用いたピアソン相関係数を用いて

とする.
はアイテムを両方評価しているユーザの人数.なのでこれが大きければ類似度を下げる.

ランダムウォークを続けるかどうかの判定

ランダムウォークを続けるか,それとも現在のユーザの別アイテムの評価を返すかの判定にはを用いる.
これは,

とする.
つまり,評価したアイテムがと類似していればしているほど,ランダムウォークのステップ数が大きいほど打ち切りやすくなる.

似たアイテムを返す確率

ランダムウォークを打ち切る際,アイテムを返すわけだがこれもで選ぶ.つまりは似たアイテムほど選ばれやすくなる.

補足

論文では厳密にやるために色々追加してる.

  • kが深くなりすぎてもだるいので,k=6で打ち切る.

Based on the idea of "six-degrees of separation" [11], we set max-depth = 6.

  • 閉じた形で書くために"dead state"を導入

TrustWalkerの性質

  • と固定すれば協調フィルタリングの亜種,と固定すれば,trust networkのみを用いる既存手法にほぼ近い形になる
  • 推薦の信頼度を得ることできる
    • 複数のランダムウォークによる評価値の分散をとすれば,それが低いほど信頼できる(?)
  • 推薦の説明しやすさ