首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用交叉验证的数据增强

如何使用交叉验证的数据增强
EN

Stack Overflow用户
提问于 2020-09-07 17:12:57
回答 1查看 1.9K关注 0票数 0

我需要对数据增强步骤中的培训数据使用数据增强。问题是,我使用交叉验证,所以我找不到参考如何调整我的模型使用数据增强。我的交叉验证有点像手工索引我的数据。

有关于数据增强的文章和一般内容,但很少,也没有泛化的交叉验证与数据增强。

我需要使用数据增强的训练数据,简单地旋转和增加缩放,交叉验证的最佳重量和保存,但我不知道如何。

这个例子可以复制粘贴以获得更好的重现性,简而言之,我如何使用数据增强并以最好的精度节省权重?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-13 18:01:27

当训练机器学习模型时,你不应该在模型训练阶段使用的样本上测试模型(如果你关心真实的结果)。

交叉验证是一种估计模型精度的方法。该方法的本质是将可用的标记数据分成几个部分(或折叠),然后使用一个部分作为测试集,在所有其他部分上对模型进行培训,并对所有部分逐一重复此过程。通过这种方式,您基本上可以在所有可用数据上测试您的模型,而不会对培训造成太大的伤害。有一个隐含的假设,即所有褶皱中的数据分布是相同的。根据经验,交叉验证折叠的数量通常是5或7。这取决于一个人可支配的标记数据的数量--如果你有大量的数据,你可以留下更少的数据来训练模型并增加测试集的大小。随着训练规模的增加,折叠的次数越多,你就能达到更好的精确估计,并且你必须投入更多的时间在这个过程中。在极端情况下,一个人有一个请假一次的培训程序:除了一个样本之外,对所有的东西进行培训,有效地使折皱数等于数据样本的数量。

因此,对于一个5倍的简历,你会训练5种不同的模式,其中有大量的培训数据重叠。因此,您应该得到5个具有类似性能的模型。(如果不是这样的话,你就有问题了;)在你得到测试结果之后,扔掉了你训练过的的所有5个模型,并在 all 上训练了一个新的模型--所有可用的数据,假设它的性能是你在CV阶段得到的值的平均值。

现在是关于增强数据。您不应该允许通过增加培训部分而获得的数据泄漏到测试中。从培训部分创建的每个数据点应仅用于培训,同样适用于测试集。

因此,您应该将原始数据拆分为k-折叠(例如使用KFoldGroupKFold),然后为每个折叠创建增广数据,并将它们连接到原始数据。然后你遵循常规的简历程序。

在您的情况下,您可以简单地在连接每个组(如x_group1)之前通过增强过程传递它们,您应该没事。

请注意,以线性方式分割数据会导致数据集不平衡,这不是数据分割的最佳方法。您应该考虑我前面提到的函数。

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

https://stackoverflow.com/questions/63781722

复制
相关文章

相似问题

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