1 回答
TA贡献1851条经验 获得超4个赞
训练机器学习模型时,不应在模型训练阶段使用的样本上测试模型(如果您关心实际结果)。
交叉验证是一种估计模型准确性的方法。该方法的本质是将可用的标记数据分成几个部分(或折叠),然后使用一个部件作为测试集,在所有其余部件上训练模型,并对所有部件一一重复此过程。通过这种方式,您基本上可以在所有可用数据上测试您的模型,而不会对训练造成太大影响。有一个隐含的假设,即所有折叠中的数据分布都是相同的。根据经验,交叉验证折叠的数量通常为 5 或 7。这取决于可处理的标记数据量 - 如果您有大量数据,则可以留下更少的数据来训练模型,并且增加测试集大小。折叠次数越多,您可以实现的准确度估计就越高,因为训练规模部分会增加,并且您必须在该过程中投入更多时间。在极端情况下,有一个留一法训练程序:对除一个样本之外的所有内容进行训练,
因此,对于 5 倍 CV,您需要训练 5 个不同的模型,这些模型的训练数据有很大的重叠。因此,您应该获得 5 个具有相似性能的模型。(如果不是这种情况,那么你就有问题了;))在获得测试结果后,你扔掉你训练过的所有 5 个模型,并在所有可用数据上训练一个新模型,假设它的性能是平均值您在 CV 阶段获得的值。
现在关于增强数据。您不应允许通过增强训练部分获得的数据泄漏到测试中。从训练部分创建的每个数据点只能用于训练,这同样适用于测试集。
因此,您应该将原始数据拆分为k 折叠(例如使用KFold或GroupKFold),然后为每个折叠创建增强数据并将它们连接到原始数据。然后您遵循常规的简历程序。
在您的情况下,您可以简单地在连接每个组(例如x_group1
)之前通过增强过程,然后就可以了。
请注意,以线性方式分割数据可能会导致数据集不平衡,这不是分割数据的最佳方式。您应该考虑我上面提到的功能。
添加回答
举报