【发布时间】:2021-01-19 05:01:30
【问题描述】:
我正在开发一个使用贝叶斯个性化排名优化由 python 编写的推荐系统项目。我非常有信心我的模型能够很好地学习我提供的数据,但现在是时候找出确切的模型超参数并尽量避免过度拟合了。由于movielens数据集只为我提供了没有验证集的5倍训练测试数据集,我想自己拆分原始数据集来验证我的模型。
由于 movielens 数据集包含 943 个用户数据,每个用户保证至少对 20 部电影进行排名,我正在考虑拆分数据,以便 TRAIN 和 TEST 数据集包含相同数量的用户(例如 943),并且将 80% 的隐式反馈数据分配给 TRAIN,其他分配给 TEST。训练后将使用所有 943 个用户的 k 精度召回率平均值进行验证。
这是拆分数据集的正确方法吗?我很好奇,因为原始的 movielens 测试数据集似乎并不包含所有 943 个用户的测试数据。如果某个用户没有任何测试数据要预测,我如何使用recall@k 进行评估——这样做会导致零除法?我应该跳过该用户并计算其余用户的平均值吗?
感谢您的阅读,希望您不会像我一样困惑。
【问题讨论】:
标签: python bayesian precision-recall recommender-systems