Vit*_*non 5 recommendation-engine machine-learning cross-validation
我已经实现了一个基于矩阵分解技术的推荐系统。我想评价一下。
我想将 10 倍交叉验证与 All-but-one 协议一起使用(https://ai2-s2-pdfs.s3.amazonaws.com/0fcc/45600283abca12ea2f422e3fb2575f4c7fc0.pdf)。
我的数据集具有以下结构:
user_id,item_id,rating
1,1,2
1,2,5
1,3,0
2,1,5
...
Run Code Online (Sandbox Code Playgroud)
我很困惑如何分割数据,因为我无法在测试集中放入一些三元组(用户、项目、评级)。例如,如果我选择三元组 (2,1,5) 作为测试集,并且这是用户 2 做出的唯一评分,则不会有关于该用户的任何其他信息,并且训练后的模型不会预测任何对他的价值观。
考虑到这种情况,我应该如何进行拆分?
您的基本逻辑是非常正确的:如果您在一类中只有一个观察结果,则必须将其包含在训练集中,以便模型在该类中具有任何有效性。
然而,将输入划分为这些类别取决于各种观察之间的相互作用。您能否识别数据类别,例如您提到的“唯一评级”问题?当您找到其他小班时,您还需要确保训练数据中有足够的这些观察结果。
不幸的是,这个过程很难实现自动化。大多数一次性应用程序只需从数据中手工挑选这些观察结果,然后按正常划分分配其他观察结果。这确实存在一个问题,即训练集中的特殊情况过多,这可能会在一定程度上偏离训练模型时的正常情况。
当您遇到后续数据时,您是否有能力调整模型?这通常是处理稀疏输入类别的最佳方法。
归档时间: |
|
查看次数: |
4907 次 |
最近记录: |