推荐系统常见问题(七):惊讶!为什么训练集比例越大,效果越差?

一、苦恼的一周

最近做实验,被一个问题苦恼了一周。本来想要验证算法在40%、60%、80%数据集比例情况下的不同实验效果。结果发现,训练集比例越大,效果竟然越差!!!这和我以往的–训练集越多,训练效果越好的认知完全相违背!!!

然后我开始一个个的排除这样情况的原因:

  1. 先看看是不是我训练集和测试集的弄反了,结果没有反;
  2. 再看看我的实验方法是不是哪里有错误,结果找不出错误;
  3. 然后我又在想我划分数据集是按总的评分数据量随机划分的,或者换成按每个用户留一定比例在训练集,一定比例在测试集的方法划分试试,结果还是训练集比例越大,效果越差;
  4. 简直无奈了,我就想是不是数据集的问题,结果换了几个数据集还是同样的问题;
  5. 最后我不用我自己写的算法了,我用 LibRec 中已经实现的方法看看,结果发现那些算法的结果也是这样,我都震惊了!!!到底是哪里出错了???

二、附上证据

下面附上我跑 LibRec 中已经实现算法的实验结果:

1、证据1:MostPopular方法

首先是最基本的 pop 方法,使用的数据集是 movielens/ml-100kTopN=10,参数配置都是 LibRec 中的默认配置

TrainingPrecisionRecallNDCGAUCNoveltyAPRR
0.80.19020.11320.18600.880911.10200.110680.40134
0.60.31070.10020.27510.956010.60270.19720.5676
0.40.39490.09180.33740.994410.19710.2699 0.6476
0.20.45380.08520.37781.011510.00710.32060.7045

从实验结果可以看出准确性指标 Precision 以及 AUC 随着训练集数据越少,效果越好,排序指标 NDCG、AP(是MAP)、RR(是MRR)也是随着训练集越少,效果越好,只有 Recall 和 新颖性指标 Novelty 随着训练集越少,效果在不断的下降。

2、证据2:BPR方法

Rendle et al., BPR: Bayesian Personalized Ranking from Implicit Feedback, UAI 2009.

下面换一个经典的 BPR 算法,使用的数据集是 movielens/ml-100kTopN=10

TrainingPrecisionRecallNDCGAUCNoveltyAPRR
0.80.25630.16520.31010.922214.82160.18640.5502
0.60.37440.13700.41410.976312.63140.27020.6798
0.40.38950.10050.41960.997011.15620.26710.6855
0.20.36860.08340.38900.987514.57350.24950.6075

从实验结果可以看出在训练比例大于0.2以上时,准确性指标 Precision 以及 AUC 随着训练集数据越少,效果越好,排序指标 NDCG、AP(是MAP)、RR(是MRR)也是随着训练集越少,效果越好,只有 Recall 和 新颖性指标 Novelty 随着训练集越少,效果在不断的下降。

或者你会问,训练集比例都 0.2了,这训练有啥用???没有训练好进行推荐那不就是随机推荐???所以我看了下随机推荐的结果,随机推荐跟训练集的多少没有关系,完全就是随机给每一个用户进行推荐,压根就不需要训练集,实验结果显示在 movielens/ml-100k 数据集下,它的 precision效果是远远 < 0.1的~ 所以训练还是有些用处的。

3、证据3:CADE方法

Collaborative Denoising Auto-Encoders for Top-N Recommender Systems,WSDM 2016

下面换CADE方法,使用的数据集是 movielens/ml-100kTopN=10,参数配置都是 LibRec 中的默认配置。

TrainingPrecisionRecallNDCGAUCNoveltyAPRR
0.80.16610.09770.20880.846920.68020.10470.3914
0.60.24160.07350.30090.908420.58230.15380.4936
0.40.26810.05720.17460.933421.27370.16650.5143
0.20.23130.03630.11460.927324.32410.13270.4644
从实验结果看来,CADE也一定程度上验证了我的说法是对的,在0.2以上的训练集划分情况下,训练集越大,Precision效果越差。

在这里插入图片描述
在这里插入图片描述
值得一提的是,在CADE这篇论文原文中,是有和 pop 以及 BPR 方法做对比的,但效果和论文中表现的并不一致,在我这里显示的是 CADE 不如 pop 和 BPR方法,当然我我这里用的是movielens 100k的数据集,而原文中用的是movielens 10M 的数据集,同时数据集的处理方式以及参数并没有达到与论文中一致,所以先不纠结这个~

4、证据4

我在最近看的一篇论文中找到了这样一段话,贴上来给大家看看
在这里插入图片描述

5、小结

从以上三个实验结果中,不难得出确实是训练集比例越大,precision效果越差,但是同时也可以发现,recall 效果是越好的,所以如果真的想要验证算法在40%、60%、80%数据集比例情况下的不同实验效果。还是选择 Recall 指标吧。我就先暂时不纠结为什么和我以往的认知不一样了~

三、另外的突发奇想

Biased Matrix Factorization Recommender

我有在思考是不是因为这是TopN推荐的原因,如果是评分预测,是不是会符合这个事实???
下面使用的方法是bias-MF,使用的数据集是 movielens/ml-100kTopN=10,参数配置都是 LibRec 中的默认配置。

TrainingMSEMPERMSEMAE
0.80.87090.98620.93320.7379
0.60.89330.98810.94510.7457
0.40.90860.98830.95320.7521
0.20.94700.98830.97310.7682

看了结果之后我放心了,评分预测任务并不符合这个这个事实,在这里,训练集越多,效果确实是越好的。(这些指标都是值越小代表越好的)

但如果我要用这个评分预测算法去做 TopN 推荐的话,和之前的结论一样!训练集比例越大,precision 效果越差。而且把实验结果与上面几个算法,比如Pop、BPR、CADE方法比较的话,也验证了我之前提过的推荐系统常见问题(二):可以使用评分预测方法去做 TopN 推荐吗?是正确的,只是利用评分预测方法去做 TopN 推荐的效果不太好而已!

TrainingPrecisionRecallNDCGAUCNoveltyAPRR
0.80.05740.02180.04750.663631.07000.01800.0839
0.60.09900.02050.07830.727029.65380.03710.1306
0.40.15170.02240.14390.784124.69020.08840.3107
0.20.21340.02560.19310.855822.93280.13390.3701

四、总结

综上,我不再纠结是不是我的代码写错了,是不是我应该换个数据集(这里没有写其他数据集,但是验证效果是一样的),是不是我哪里应该调一调,找原因找到自我怀疑!!!然后接着很崩溃!

就像贴的那篇论文里写的一样,如果这是我做实验发现的事实,那论文里写出来就好了!


以上是一家之言,欢迎道友一起交流~

  • 18
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值