首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在分裂成折叠之前对数据进行洗牌。

在分裂成折叠之前对数据进行洗牌。
EN

Data Science用户
提问于 2020-02-27 19:39:09
回答 2查看 1.2K关注 0票数 3

我正在运行一个4倍交叉验证的超参数调优使用sklearn的'cross_validate‘和'KFold’函数。假设我的训练数据集已经被洗牌了,那么在分割成批/折叠(即KFold函数中的洗牌参数)之前,我是否应该对每一次超调参数调优重新洗牌数据?我注意到,超参数调优过程的结果将是不同的,这取决于在将数据分割成折叠之前对数据进行洗牌。

我假设,如果结果取决于洗牌,那么模型就不稳定了。这是正确的吗?然而,这也可能对模型“不公平”,因为结果是不可复制的,因为每次我运行交叉验证时,每个折叠的数据都是不同的(也就是说,每个超参数组合都在完全不同的褶皱上进行评估。例如,第一次调优迭代的折叠#1中的训练/验证数据集与第二次调优迭代的折叠#1数据集不同。

EN

回答 2

Data Science用户

回答已采纳

发布于 2020-02-28 12:40:14

这是个很好的问题。对每个超参数点使用相同的折叠分裂可以将超参数调整为数据分割。然而,对于每个超参数点使用不同的折叠分裂使得它们之间的比较不是(准确地)苹果对苹果。

我认为为每个超参数设置相同的折叠更好。作为参考,请注意sklearn的xyzSearchCV函数的执行方式是这样的:它们采用带有折叠的搜索点的乘积,并适合这些组合中的每一个。你可以通过反复的k-折叠来缓解过度分裂的问题。

票数 2
EN

Data Science用户

发布于 2020-02-27 20:38:10

我正在运行一个4倍交叉验证的超参数调优使用sklearn的'cross_validate‘和'KFold’函数。假设我的训练数据集已经被洗牌了,那么在分割成批/折叠(即KFold函数中的洗牌参数)之前,我是否应该对每一次超调参数调优重新洗牌数据?

不,它不需要,在分裂之前需要洗牌。

我假设,如果结果取决于洗牌,那么模型就不稳定了。这是正确的吗?

你说得对,好模型在每一个数据组合上都有很好的表现。

然而,这对模型也可能不公平,因为每次我运行交叉验证时,每个折叠的数据都是不同的(也就是说,每个超参数组合都是在完全不同的折叠上评估的),所以结果是不可复制的。例如,第一次调优迭代的折叠#1中的训练/验证数据集与第二次调优迭代的折叠#1数据集不同。

您可以进行交叉验证以检查每个数据块的性能。你的任务完成得非常慷慨。

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

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

复制
相关文章

相似问题

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