如何在交叉验证中使用数据增强

时间:2020-09-07 17:12:57

标签: python keras

我需要对数据增强步骤中的训练数据使用数据增强。问题是我正在使用交叉验证,因此找不到如何调整模型以使用数据增强的参考。我的交叉验证是对我的数据进行手动索引。

有关于数据增强的文章和一般内容,但是很少,也没有关于使用数据增强进行交叉验证的概括

我需要通过简单地旋转并添加缩放来对训练数据使用数据增强,交叉验证最佳权重并保存它们,但是我不知道如何。

可以复制粘贴此示例以提高重现性,简而言之,我将如何使用数据增强功能并以最佳的精度保存权重?

1 个答案:

答案 0 :(得分:3)

在训练机器学习模型时,不应在模型训练阶段使用的样本上测试模型(如果您希望获得真实的结果)。

交叉验证是一种估算模型准确性的方法。该方法的本质是将可用的标记数据分为几部分(或折叠),然后将其中一部分用作测试集,对其余所有模型进行训练,然后重复此过程所有部分一一对应。这样,您实质上可以在所有可用数据上测试模型,而不会过多地伤害训练。根据经验,交叉验证的倍数通常为5或7。这取决于标记数据的数量-如果您有很多数据,则可以保留较少的数据来训练模型,增加测试集的大小。折叠次数越多,随着训练量部分的增加,您可以获得的准确度估计就越好,并且您必须花费更多的时间进行该过程。因此,对于5折简历,您需要训练5种不同的模型,这些模型在训练数据上有很大的重叠。因此,您应该获得5个性能相似的模型。 (如果不是这种情况,则说明您有问题;))获得测试结果后,您丢弃所有已经训练的5个模型,然后在 all < / strong>可用数据,假设其性能将是您在CV阶段获得的值的平均值。

现在有关扩充数据。您不应将通过增加训练部分泄漏而获得的数据允许进入测试。从训练部分创建的每个数据点仅应用于训练,同样适用于测试集。

因此,您应将原始数据拆分为 k个折叠(例如,使用KFoldGroupKFold),然后为每个折叠创建增强数据并将它们连接到原版的。然后,您将按照常规的简历程序进行操作。

对于您而言,您可以在将各个组(例如x_group1)连接起来之前简单地通过扩充过程,这应该没事。

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