目录
-
-
- 1 INTRODUCTION
- 2 PAPER COLLECTION AND ANALYSIS
-
- 2.1 Paper Collection
- 2.2 Paper Analysis
-
- 2.2.1 数据集
- 2.2.2 数据预处理
- 2.2.3 对比 Baseline
- 2.2.4 目标函数
- 2.2.5 负采样
- 2.2.6 数据划分方法
- 2.2.7 评价指标
- 2.2.8 超参数调整
- 3 IMPACTS OF DIFFERENT FACTORS
-
- 3.1 数据预处理
- 3.2 目标函数
- 3.3 负采样
- 3.4 数据划分方式
- 3.5 评价指标
- 3.6 复杂度分析
- 4 BENCHMARKING EVALUATION
-
- Are We Evaluating Rigorously? Benchmarking Recommendation for Reproducible Evaluation and Fair Comparison
- RecSys 2020
本文针对基于隐式行为的top-N推荐算法,探讨严谨的评估方式。
1 INTRODUCTION
推荐算法的分类:
- 基于内存的方法,MMs
- 基于隐含因素的方法,LFMs
- 基于表示学习的方法,RLMs,包括基于物品嵌入的方法、基于深度学习的方法(DLMs)
一项最新研究(Are we really making much progress? A worrying analysis of recent neural recommendation approaches.)表明通过仔细的设置,baseline方法可以超出很多新提出的方法。基准推荐在两个方面极具挑战性:
- 不同领域、不同平台很多数据集,研究人员只报告挑选数据集的结果
- 不同的数据处理策略、数据划分方法、评估指标和参数设置,多数论文没有报告数据处理和参数设置的详细过程,导致复现结果不一致
2 PAPER COLLECTION AND ANALYSIS
2.1 Paper Collection
近三年2017-2019,8个顶级会议:RecSys, KDD, SIGIR, WWW, IJCAI, AAAI, WSDM and CIKM。侧重于基于隐式行为的top-N推荐算法,最终获得85篇论文。
2.2 Paper Analysis
2.2.1 数据集
数据集上的问题:领域多样性、版本多样性。85篇论文中用到65个数据集(版本不同也算一个)。本文挑选了六个数据集作为研究对象:ML-1M (Movie), Lastfm (Music), Yelp (LBSNs), Epinions (SNs), Book-X (Book) and AMZe (Consumable)。本文还详细说明了这六个数据集的版本以及来源链接。
2.2.2 数据预处理
将显式行为处理成隐式行为,将评分设定一个阈值 ttt, 评分>= ttt的样本处理成正样本。按照主要的研究,对于ML-1M数据集,t=4t=4t=4;其他数据集,t=1t=1t=1。
由于原始数据集都比较稀疏,50%论文明确指出采用了数据预处理策略,大多使用 5-filter setting或者10-filter setting(分别过滤出少于5或10个交互的用户和物品。),也有使用1-,2-,3-,4-,20-,30-设置的。
注意区分K-fiter和K-core:
- 按照K值,用户和物品只过滤一次
- 按照K值,多次过滤,直到所有的用户和物品都至少有K次交互
2.2.3 对比 Baseline
挑选了10个最多使用的,
- 基于记忆的:MostPop,ItemKNN
- 基于隐含因子的:BPRMF, FM, WRMF, PureSVD, SLIM,eALS
- 基于表示学习的:NeuMF,CKE
2.2.4 目标函数
point-wise(49%),pair-wise(42%)
无论用哪种loss,在模型中适当的使用未观察的反馈是很重要的。
其中 ruij=rui?ruj,r^uij=r^ui?r^ujr_{uij}=r_{ui}-r_{uj},\hat r_{uij}=\hat r_{ui}-\hat r_{uj}ruij?=rui??ruj?,r^uij?=r^ui??r^uj?
point-wise经常采用均方根误差和交叉熵,pair-wise经常采用log loss和hinge loss
按照主要研究,将未观察到的反馈看做负样本。
2.2.5 负采样
利用所有的未观察反馈(大量)是不切实际的,因此进行负采样。
- 均匀采样(uniform sampler),所有未观察到的反馈抽取到的概率相同
- 低流行度采样,每个用户的未观察物品中,低流行度的物品抽取到的概率越高
- 高流行度采样,每个用户的未观察物品中,高流行度的物品抽取到的概率越高
2.2.6 数据划分方法
基本上两种方法最常用:
- 按比例划分(split-by-ratio),61%论文,用户-物品交互记录固定比例作为train,(应该是每位用户的交互记录的固定比例吧)
- 留一法(leave-one-out),28%论文,每位用户只选一个交互物品作为test(应该是最新交互吗??)
- 5%的论文直接按照时间戳来,在某个时间戳之前的作为train
按比例划分具体实施上有很多不同:
- 不同的比例,train比例50%、70%、90%
- 全局或者用户级别的划分,直接80%,还是每位用户的80%
- 随机还是按照时间划分,88%的论文随机划分,时间划分就是跳出最新的一定比例的作为test
而留一法,基本都是按照用户来划分的(每位用户一个item作为test),54%留一法的论文考虑了时间(挑最新的一个item作为test)。
为了提升test效率,they(包括两个方法还是只有留一法呢?)总是挑选固定数量的负样本集合(neg_test = 99, 100, 999, 1000),将每个test item在这[neg_test+1]物品集合中进行排序。
本文使用基于时间的、global级别的按80%比例划分方式,未每位用户做test负采样,保证test候选集合数量为1000。
table2b 展示了经过k-filter的数据集上用户、物品的平均交互数
2.2.7 评价指标
本文挑选6个:
- Precision、Recall、MAP、HR,衡量test item在不在top-N推荐列表中
- MRP、NDCG,考虑test item的排序位置
2.2.8 超参数调整
- 验证策略
- 37%的论文直接基于test集合调整参数
- 交叉验证方法
- 主要讲了嵌套验证,当模型在validation集合上达到最好表现时,参数调整结束
- 本文采取嵌套验证,在每一次的交叉验证中,挑选10%的train作为validation,用validation来调参,一旦确定了超参数的最佳设置,将整个train集(包括validation集)送入模型,来训练最终的模型,并且记录模型在test集合上的表现。
- 搜索策略
- 基本所有的论文都采用网格搜索,每个超参数有一组可能的取值,遍历所有可能的超参数取值组合,找到最佳超参数。
- 随机搜索,随机选择预先定义的次数(比如30次就结束),而不是遍历整个空间
- 贝叶斯参数优化,本文针对NDCG采用贝叶斯参数优化
3 IMPACTS OF DIFFERENT FACTORS
3.1 数据预处理
- 采用贝叶斯参数优化,优化NDCG@10的参数
- 在每个数据集上、每种策略下的每个baseline上,30trails(这是参数优化那的名词??)
- 保持table2a的原始目标函数,使用均匀采样,按照时间80%比例、global级别进行数据集划分,10%最新的train集作为验证集
- 目的是探究 [原始数据集、5-filter数据集、10-filter数据集] 三种处理方式的影响
结论:平均每个用户的train数据越多,模型表现越好。
NeuMF虽然是基于深度学习的方法,但在一些数据集上的表现不如调整好参数的baseline。
3.2 目标函数
采用10-filter设置,只对BPRMF、BPRFM和NeuMF对比了目标函数。
结论:pair-wise+log loss基本上对于所有模型实现最好效果;BPRMF+pair-wise+log loss基本是最好的模型。
3.3 负采样
对比随机采样-低流行度采样-高流行度采样对模型的影响
结论:随机采样最好
3.4 数据划分方式
80%比例global划分,对比[随机划分]和[按时间划分]
结论:在按比例划分中,随机选择train效果远远好于按时间划分(自己之前在ml-1m上也发现过 哈哈)
可能是按时间划分的train相当于有了约束,很难学习,但是和实际场景比较接近。
3.5 评价指标
这个贝叶斯参数优化着实没看懂啥意思。
较深的颜色表明两者更加相关,结果显示优化NDCG并不能同时优化其他五个指标。而且交叉矩阵是非对称的。
NDCG-HR-0.72;MRP-MAP-0.78
而5f表示,颜色越深,表示两个指标越可能产生相同的排名
3.6 复杂度分析
4 BENCHMARKING EVALUATION
DaisyRec,https://github.com/AmazingDD/daisyRec