Loading [MathJax]/jax/output/HTML-CSS/jax.js
Hybrid Recommender System based on Autoencoders
src
- https://github.com/fstrub95/Autoencoders_cf
概要
- 行列分解による協調フィルタリングの行列分解部分をニューラルなネットワークでやる
- 結果は、行列分解による既存手法よりも、僅かに良かった
- cold-start に強いと言っている
手法
autoencoder
- ˜x↦σ(W′σ(W˜x+b)+b′)∼x
- 2層に限定してるわけではないが、実験では2層
- loss を ˜x と x の誤差自乗で計算するのだけど、 corrupted したインデックスかどうかで、重みを付けて和を取る
- あとL2正則化もする
こっからやばい気がする
- ユーザーやアイテムに関するさらなる情報を用いたい.
- P次元情報 z を autoencoder の入力に加える:
[x;z]↦σ(W′[σ(W[x;z]+b);z]+b′)∼[x;z]
ここで [;] はベクトルの連結.
- 強引すぎないか?
- "cold start に強い" って言ってるのは、これのことなんだろうな
- 一般に、"各層で、z を加える" とある
- z の影響が強すぎるので、z の次元数をかなり抑えるように、ともある
実験
- V-CFN
- 行列の列 (N users * 1 item) で autoencode
- V-CFN++
- Integrating Side Information を更に乗っける
- Dataset
- Side Information
- ユーザー情報: 年齢、性別
- 映画情報: カテゴリー、タグ
- データセットのサイズによって一部使ったり使わなかったりする. ややこしい.
- 結果
- V-CFN が強い
- ただし本人たちも言ってるように slightly improvement
- Torch はいいぞ!
- でもDAEを書くためのモジュールが整備されてないから書いたので使ってくれ