
摘要
序列动态是许多现代推荐系统的关键特性,旨在通过用户最近执行的动作来捕捉其活动的“上下文”。为了捕捉这些模式,两种方法得到了广泛的应用:马尔可夫链(Markov Chains, MCs)和循环神经网络(Recurrent Neural Networks, RNNs)。马尔可夫链假设用户的下一个动作仅基于其最后一个(或最后几个)动作进行预测,而循环神经网络原则上可以揭示更长期的语义信息。通常来说,基于马尔可夫链的方法在极其稀疏的数据集中表现最佳,因为模型的简洁性至关重要;而循环神经网络在数据较密集的情况下表现更好,因为此时可以承受更高的模型复杂度。我们的研究目标是平衡这两种方法的优势,提出了一种基于自注意力机制的序列模型(Self-Attention based Sequential Recommender, SASRec),该模型既能捕捉长期语义信息(如RNN),又能通过注意力机制基于相对较少的动作进行预测(如MC)。在每个时间步骤中,SASRec试图从用户的行为历史中识别出“相关”项目,并利用它们来预测下一个项目。大量的实证研究表明,我们的方法在稀疏和密集数据集上均优于各种最先进的序列模型(包括基于MC/CNN/RNN的方法)。此外,与类似的CNN/RNN基模型相比,该模型的效率提高了近一个数量级。对注意力权重的可视化也展示了我们的模型如何自适应地处理不同密度的数据集,并揭示了活动序列中的有意义模式。
代码仓库
mangushev/mfgan
tf
GitHub 中提及
pmixer/SASRec.pytorch
pytorch
UlionTse/mlgb
pytorch
GitHub 中提及
paddorch/SASRec.paddle
paddle
GitHub 中提及
facebookresearch/generative-recommenders
pytorch
GitHub 中提及
otto-de/recsys-dataset
GitHub 中提及
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| collaborative-filtering-on-movielens-1m | SASRec | HR@10: 0.8245 HR@10 (full corpus): 0.2821 NDCG@10 (full corpus): 0.1603 nDCG@10: 0.5905 |
| collaborative-filtering-on-movielens-20m | SASRec | HR@10 (full corpus): 0.2889 nDCG@10 (full corpus): 0.1621 |
| recommendation-systems-on-amazon-beauty | SASRec | Hit@10: 0.4854 nDCG@10: 0.3219 |
| recommendation-systems-on-amazon-book | SASRec | HR@10: 0.0306 HR@50: 0.0754 NDCG@10: 0.0164 NDCG@50: 0.0260 |
| recommendation-systems-on-amazon-games | SASRec | Hit@10: 0.7410 nDCG@10: 0.5360 |
| recommendation-systems-on-steam | SASRec | Hit@10: 0.8729 nDCG@10: 0.6306 |
| sequential-recommendation-on-movielens-1m | SASRec | HR@10: 0.2137 HR@10 (99 Neg. Samples): 0.7904 HR@20: 0.3245 HR@5: 0.1374 HR@5 (99 Neg. Samples): 0.6874 MRR (99 Neg. Samples): 0.5020 NDCG@10: 0.1116 NDCG@10 (99 Neg. Samples): 0.5642 NDCG@20: 0.1395 NDCG@5: 0.0873 NDCG@5 (99 Neg. Samples): 0.5308 |