将Movielens数据拆分为训练验证测试数据集

问题描述

我正在使用贝叶斯个性化排名优化在python编写的推荐系统上进行项目。我非常有信心模型可以充分了解我提供的数据,但是现在是时候找出确切的模型超参数并尝试避免过拟合。由于movielens数据集仅向我提供了没有验证集的5倍训练测试数据集,因此我想自己分割原始数据集以验证模型。

由于movielens数据集包含943个用户数据,并且每个用户都保证已对至少20部电影进行排名,因此我正在考虑对数据进行拆分,以使TRAIN和TEST数据集都包含相同数量用户(例如943),并且将80%的隐式反馈数据分配给TRAIN,另一个分配给TEST。训练后,将使用所有943位用户的k精度Recall平均值进行验证。

这是分割数据集的正确方法吗?我很好奇,因为原始的movielens测试数据集似乎并不包含所有943位用户的测试数据。如果某个用户没有任何可预测的测试数据,我如何使用callback @ k进行评估-这样做会导致零除?我是否应该跳过该用户并与其他用户一起计算平均值?

感谢您的冗长阅读,希望您不要像我一样困惑。

解决方法

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