首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在推荐系统中拆分培训/测试

如何在推荐系统中拆分培训/测试
EN

Data Science用户
提问于 2015-08-17 20:34:15
回答 2查看 11.6K关注 0票数 11

我正在使用MovieLens10M数据集,预测用户的评分。如果我想公平地评估我的算法,我应该如何分割我的训练和测试数据?

默认情况下,我认为数据被分割成火车和测试集,其中“测试”包含以前在培训集中看不到的电影。如果我的模型要求每部电影至少在训练集中被观看一次,我应该如何分割我的数据?对于所有数据,我是否应该从每个用户的评等中获取除N以外的所有数据,并评估我在被搁置的NxUser_num评级上的性能?

EN

回答 2

Data Science用户

发布于 2015-09-24 06:17:23

Leave-one-out交叉验证可能是解决这一问题的最直接的方法。如果您正在使用一个需要大量时间来训练的模型,那么不使用n%可能更合适。

该方法包括消除一个已知的评级,并试图预测它。如果要删除n%的评等,只需随机选择它们,而不是在每个用户的评等中选择特定的数量。把n保持在10%或10%以下。

下面是对推荐系统协同推荐系统的一种评价方法交叉验证方法的一个很好的处理。一般情况:

保留是一种将数据集分成两个部分的方法:训练集和测试集。这些组合可能有不同的比例。在推荐系统的设置中,分区是通过从所有(或部分)用户中随机选择一些评分来执行的。选定的评等构成测试集,其余的是培训集。这种方法也称为“离开-k-out”.载于17,Sarwar等人。将数据集分成80%的训练和20%的测试数据。在18中,选择了几种不同的训练和测试比率(从0.2 %到0.95,增量为0.0 5),并对每一种实验在不同的训练和测试集中重复10次,最后对结果进行平均。在13中,测试集是由10%的用户创建的:测试集中的每个用户都保留了5个等级。左一输出是通过在离开k-输出方法中设置k=1得到的方法.给定一个活动用户,我们依次保留一个分级项目。学习算法是针对剩余数据进行训练的。采用保留元素来评价预测的正确性,并对所有评价结果进行平均,以计算最终的质量估计值。该方法存在过拟合、计算复杂度高等缺点。该技术适用于已经注册为系统成员的用户对模型推荐质量的评估。Karypis等人10采用了一个小版本的休假一出,通过随机选择每个用户的非零条目之一和训练的其余条目来创建测试集。载于7,Breese等人。在训练和测试集中分割URM,然后在测试集中为每个用户保留一个随机选择的评级。持久化方法的一个简单变体是m倍交叉验证。它包括将数据集划分为m个独立的褶皱(这样折叠就不会重叠)。反过来,每个折叠被精确地作为测试集使用一次,其余的折叠用于训练模型。根据20和11,建议的折叠数为10。该技术适用于新用户(即用户不属于模型)加入系统时的推荐能力。通过选择合理的折叠数,可以计算出平均、方差和置信区间。

希望这能有所帮助!

票数 4
EN

Data Science用户

发布于 2022-08-11 14:57:18

你可以,但你会引入“数据泄漏”。为了说明这一点,让我们假设你有这些评级的日期,直到2022年。

您的测试集将包含每个用户的最后n个评级,其中一些评级将在2021年、2020年和过去进一步进行,因为并不是每个用户最近都对某个级别进行了评级。所以约翰可能在2021年获得了所有的最后一次评级,而这就进入了测试集。然而,在2022年,许多用户将获得多重评级,其中大部分将在培训集中。所以现在你正在训练一个直到2022年的数据模型,但是测试一些2022年之前的数据。你的模型本质上是知道未来的!因此,它的表现可能比部署和运行新的收视率时要好。

一个更好的选择是在X个月前对每件事进行训练,并在X个月前到现在进行测试。当然,假设你有足够的时间进行评分,在真实的情况下,你很可能会这样做。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/6814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档