为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过交叉验证使用数据增强

如何通过交叉验证使用数据增强

有只小跳蛙 2023-07-18 16:38:49
我需要对数据增强步骤中的训练数据使用数据增强。问题是我正在使用交叉验证,所以我找不到如何调整模型以使用数据增强的参考。我的交叉验证有点手动索引我的数据。有关于数据增强的文章和一般内容,但很少,而且没有对数据增强的交叉验证进行概括我需要通过简单地旋转和添加缩放来对训练数据使用数据增强,交叉验证最佳权重并保存它们,但我不知道如何操作。这个例子可以复制粘贴以获得更好的再现性,简而言之,我将如何使用数据增强并以最佳精度保存权重?
查看完整描述

1 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

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

交叉验证是一种估计模型准确性的方法。该方法的本质是将可用的标记数据分成几个部分(或折叠),然后使用一个部件作为测试集,在所有其余部件上训练模型,并对所有部件一一重复此过程。通过这种方式,您基本上可以在所有可用数据上测试您的模型,而不会对训练造成太大影响。有一个隐含的假设,即所有折叠中的数据分布都是相同的。根据经验,交叉验证折叠的数量通常为 5 或 7。这取决于可处理的标记数据量 - 如果您有大量数据,则可以留下更少的数据来训练模型,并且增加测试集大小。折叠次数越多,您可以实现的准确度估计就越高,因为训练规模部分会增加,并且您必须在该过程中投入更多时间。在极端情况下,有一个留一法训练程序:对除一个样本之外的所有内容进行训练,

因此,对于 5 倍 CV,您需要训练 5 个不同的模型,这些模型的训练数据有很大的重叠。因此,您应该获得 5 个具有相似性能的模型。(如果不是这种情况,那么你就有问题了;))在获得测试结果后,你扔掉你训练过的所有 5 个模型,并在所有可用数据上训练一个新模型,假设它的性能是平均值您在 CV 阶段获得的值。

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

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

在您的情况下,您可以简单地在连接每个组(例如x_group1)之前通过增强过程,然后就可以了。

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


查看完整回答
反对 回复 2023-07-18
  • 1 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信