レコメンドするにあたり使えそうなEmbeddingを調べたのでまとめます。主に考慮点とリンク集です。
Embeddingするデータ
- テキストデータ: word2vec化
- ID: ニューラルネットワークのEmbedding層
- 購入/閲覧履歴: バスケット単位とするか、ユーザ単位とするかが検討点。
用途
- コサイン類似度レコメンド: 単一アイテムに対してコサイン類似度が近いアイテムをレコメンド
- Embedding層と他層で学習: ニューラルネットワークの1つの層としてEmbedding層を使用
- 特徴量生成: word2vecのように特徴量を生成
- リコール層: レコメンド候補となるアイテムの絞り込み(レコメンド対象は別途分類器/回帰で決定)
アルゴリズムと論文
シーケンシャル系
Item2Vec: Neural Item Embedding for Collaborative Filtering
MSの論文
prod2vec: E-commerce in Your Inbox:
Yahooの論文。Product Recommendations at Scale。
prod2vec: Real-time Personalization using Embeddings for Search Ranking at Airbnb
Aribnbの論文。HostとGuestの双方向なのが特徴的らしい。
BERT4Rec
中身見ていないが論文リンク貼っておきます。
Graph Embedding
Random Walk
Graph Embeddingとは何と思ったときに、この絵がわかりやすい。
Graph NN
Embeddingじゃないけど参考
参考
全般。
レコメンドと埋め込み表現。良くまとまっていて参考にしました。
実装している人。行列転置など参考になるかも。
注意点
ハイパーパラメータ。論文の「Word2Vec applied to Recommendation: Hyperparameters Matter」で、結論だけ知りたければ「4. RESULT」の表の「fully optimized SGNS」を見ればOK。表中の()内4つの数値が、以下のハイパーパラメータに対応。
順番 | ハイパーパラメータ | gensimのWord2Vecパラメータ |
---|---|---|
1 | window-size | window |
2 | number of epochs | epochs |
3 | sub-sampling parameter | sample |
4 | negative sampling distribution parameter | ns_exponent |
gensimはこちら。