如何评估序列推荐模型?

有很多论文探讨如何构建优秀的序列推荐模型,但是这篇论文探讨如何评估这些序列推荐模型。最常见的评估方式是用一个较小的item子集,该集合包含所有相关items,和大量负采样的items(从全集中采样),有两种采样方法,一种是均匀随机采样,另一种是用流行度进行采样,这样更符合item在整个集合出现的分布。大部分论文都用基于流行度采样的的方式去评估比较各个序列推荐模型,然而该论文发现这种评估方式是错的,和对不采样进行评估相差很大,所以使用流行度进行负采样和用全部item进行评估是否存在差异呢?这篇论文就比较了当前比较“出众”的序列化模型在不同评估方式的区别,并给出结论。

实验配置

训练集测试集构造方式很简单,每个人都会有个交互序列,去掉后面两个,前面的序列用于训练,倒数第二个是预估,最后一个用于测试。评估指标就是最常见的HR@K和NDCG@K:

该论文比较了以下几种模型:

  • GRU
  • Neural Attentive Recommendation Machine(NARM)
  • Self-Attention based Sequential Recommendation(SAS-Rec)
  • Bert4Rec

实验结果

先比较不同模型在不同数据集,采样HR@10评估,用流行度采样负采样100的结果,如下图所示,这样看BERT4Rec在什么数据集都表现最好:

只能说,不要给上面的结论欺骗了!

我们随机采样20次,取平均,并对不同模型在不同采样方式下进行排序:

我们发现,在full上,bert4rec在某些数据集竟然能倒数第一?在uniform上也表现一般。我们会发现使用uniform和popular的rank和full并不一致。

如果我们使用不同的负采样个数,评估排名变化又很大,如下图所示:

看到这里,是不是不相信任何一个号称自己是最强的序列推荐模型了?使用所有item的集合评估才是最正确的,在看这篇论文之前,十方也坚定的认为按流行度进行负采样评估模型足以,看完这篇才发现这么做完全是错的。

你可能感兴趣的:(机器学习,深度学习,大数据,人工智能,推荐系统)