糞糞糞ネット弁慶

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

Inferring networks of substitute and complementary products (KDD 2015) 読んだ

[1506.08839] Inferring Networks of Substitutable and Complementary Products
http://www.slideshare.net/dato-inc/inferring-networks-of-substitute-and-complementary-products
著者に Pinterest の人が入ってる.
2つ商品の関係が経済学用語で言う代替財(どちらか一方があれば良い商品)か補完財(片方があるともう片方も必要になる商品)かを推定する.
似た問題設定の論文を昔読んだことがあるが(Substitutes or complements: another step forward in recommendations(EC 2009) 読んだ - 糞ネット弁慶),こちらはユーザの行動ログは使わず,商品情報のみから推定する.

アプローチ

リンク予測の問題として解く.すなわち,商品対について,代替関係および補完関係の二種類の有向グラフを考え,それぞれについて

  • 2商品に関係があるか (エッジは存在するか)
  • エッジの向きはどちらか

を推定する.

定式化

次の尤度を最大化する.TeXで手打ちしたらエラーが出るので画像で引用する.この式はtypoを含んでいる(二つ目のは(i, j)ではなく(j, i)).

尤度の項は大きく分けて二つ存在する.
まず,前半は商品に紐づく単語集合から得られるLDA(厳密にはLDAではないと思う)によるトピック比率とトピック毎の単語生成確率の積.これは皆様お馴染み.
次の項はリンク予測に関する項.アプローチでも述べたように,今回は2段階で解く.
なのでシグモイド関数を使って

  • でグラフgにおいて商品iと商品jの間になんらかの関係があるか
  • でグラフgにおいて商品iから商品jに向けてエッジが存在するか

を表現する.
これを踏まえてこの尤度を見ると,各グラフ(代替財,補完財),及び商品 i,商品 j について

  • エッジが存在する時は
    • i と j に関係があり
    • i から j に関してエッジが伸び
    • j から i にはエッジが伸びない
  • エッジが存在しない時には
    • i と j には関係がない

というのを全ノード間で計算している事になる.
この時及びは入力として2商品の特徴量を取り,スカラを返す関数であることが想像がつくはず.各商品は値段などに加え,LDAで得られた商品ごとのトピック比率を特徴量として持つ.こうやって得られた2商品の特徴ベクトルの要素ごとの差分に対して重み付き和を計算するのが及び.この設計は非常にシンプル.
3.2.3については,カテゴリの階層構造をうまく使うという話に見えるけど,何が述べられているのか理解できない.
最適化は確率的EMでやる.すなわちトピックzをサンプリング・固定,LBFGSでパラメータ最適化,再度サンプリング,を繰り返す.

実験

ここまで読むと「そうか教師あり学習を解くのだから正解データセット作りが大変だろう」という気持ちになる.
しかし正解データセット作りは非常に豪快.Amazonをデータソースにし,大量にクロールした上で

  • 「商品Xを見た人は商品Yも見ています」
  • 「商品Xを見た人は商品Yを買っています」
  • 「商品Xを買った人は商品Yも買っています」
  • 「商品Xと商品Yはよく一緒に買われています」

を集めて,前者二つを代替財,後者二つを補完財としている.これでいいのか.