糞糞糞ネット弁慶

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

自分で実装した Factorization Machines による Bayesian Personalized Ranking を用いた implicit feedback の推定はうまくいった

Factorization Machines で Bayesian Personalized Ranking を用いた implicit feedback の推定を行いたかったけどうまくいかなかった - 糞ネット弁慶
Matrix Factorization で Bayesian Personalized Ranking を用いた implicit feedback の推定はうまくいった - 糞ネット弁慶

の続き.

要約

  • Bayesian Personalized Ranking がまだまだ諦められない
  • 前回の実装を発展させ, Factorization Machines を実装して推定したところ AUC が適切な値になった
  • fastFM の使い方が本当に謎.

手法

Factorization Machines である.
入力が「誰が何を買ったか」の 0/1 のみであるとし,その他の特徴量を用いないとすると,
Matrix Factorization は に対する評価は前回同様 となる.この時 は共に 次元の低次元表現ベクトル.
Factorization Machines の交互作用を色々と含んだ式をこれに当てはめると となる.ただ が加わっただけであwることがわかる. 次元の行列であり, 次元のベクトル.

実装

推定する際,本来は であるのだけど, となるため,勾配の計算時にが消えてしまう.そのため今回は 次元で推定している.

実験

データセットMovieLens 100K Dataset | GroupLens . 5-fold CV 用にデータが既に分かれているのでそれに従う.
元データは Rating だが, implicit feedback の状況を作りたいので,「ユーザが映画をレビューしたかどうか」とし,レビューしていた場合は '1' とする.
学習率は 0.01 ,正則化は V/W 共に = 0.01,行列分解の次元数を 10 とした時,SGD のステップ数とテストデータに対する AUC の平均値との関係を以下に記す.

ステップ数 AUC
1 * 80000 0.5537658848362093
10 * 80000 0.7635102655525375
50 * 80000 0.8624333710084262
50 * 80000 (MF) 0.8091419600355472

適切に学習できており,ナイーブな Matrix Factorization より改善している.やはり Factorization Machines は少なくともこのデータ,および限定された特徴量ではうまく動いていることがわかる.
ここからは特徴量を増やすことで精度が改善するか確認したい.

では何が問題か

GitHub - ibayer/fastFM: fastFM: A Library for Factorization Machinesの正しい使い方がわかっていない.
自分だけが勘違いしているのかもしれないが,他の人も同じように失敗しているし,そもそもこれで成功している人を見かけない.