【问题标题】:Splitting movielens data into train-validation-test datasets将movielens数据拆分为训练验证测试数据集
【发布时间】: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


    【解决方案1】:

    我将如何拆分它是 80%(训练)- 10%(验证)- 10%(测试)的整个数据集。应该会解决的:)

    【讨论】:

    • 也不要忘记 k-cross 验证。你应该先把它分成训练。然后训练和验证(黄金分割时间为 10),然后测试模型。所以最后你将拥有 100 个模型(如果你不打算优化超参数)和模型的平均性能:)
    猜你喜欢
    • 2019-05-01
    • 2021-04-19
    • 2018-11-19
    • 2013-09-27
    • 2022-11-10
    • 2021-05-08
    • 2021-03-08
    • 2020-12-01
    • 2016-07-04
    相关资源
    最近更新 更多