我正在为不平衡的数据建立一个二进制分类模型(例如,90%的Pos类和10%的Neg类)。
我已经平衡了我的训练数据集,以反映一个50/50的类分割,而我的保留(训练数据集)保持与原始数据分布相似(即90%比10%)。我的问题是关于在CV超参数过程中使用的验证数据。在每次迭代折叠过程中,应:
1)平衡训练和考试两部分。
或
2)训练褶皱应保持平衡,验证褶皱应保持不平衡,以反映原始数据分布和持久化数据集。
我目前正在使用第一个选项来优化我的模型;但是,考虑到延迟数据集和验证数据集有不同的分布,这种方法有效吗?
发布于 2020-06-15 14:23:41
测试和验证数据集应该具有相同的分布。在这种情况下,验证数据集上的性能指标是测试数据集上性能指标的良好近似值。但是,培训数据集可能有所不同。此外,平衡训练数据集也很好,有时也很有帮助。另一方面,平衡测试数据集可能导致从模型性能上进行偏差估计,因为测试数据集应该反映原始数据的不平衡。正如我在开始时提到的,测试和验证数据集应该具有相同的分布。由于不允许平衡测试数据集,因此也无法平衡验证数据集。
此外,我应该指出,当平衡测试数据集时,与使用不平衡数据集进行测试相比,您将获得更好的性能。当然,正如上面所解释的那样,使用平衡测试集是没有意义的。因此,除非您使用与实际数据相同的类分布的不平衡数据集,否则所得到的性能是不可靠的。
发布于 2020-06-15 13:20:01
在我看来,验证集应该遵循原始的不平衡分布:最终目标是将模型应用到实际分布中,因此应该选择超参数来最大化该分布的性能。
但是,由于我不完全确定我会建议尝试这两个选项,并采用一个在测试集上提供最佳性能的选项。
发布于 2022-08-03 14:17:29
只是分享一下我认为需要一个平衡的数据集的理由。{假设我们讨论的是监督分类:) }
训练数据集是唯一“教导”模型如何执行分类的数据。如果使用不平衡数据集(A:90;B:10)对模型进行训练,该模型可能会懒惰地将所有事物分类为A,如果没有区分A和B的能力,则准确率将达到90%。损失函数将无法指导训练步骤走向真正的泛化能力。因此,平衡训练数据集迫使模型学习将某物分类为A或B的根本原因。
但是验证和测试应该反映数据的真实分布。验证表明,当模型在训练数据集中变得过于专业化,并且失去泛化能力时。因此,训练所产生的结果与测试之间的联系,将有望在模型确定后作为水晶球得到很好的利用。
测试是在模型选择之后使用的,这是第一次数据没有给出模型应该是什么样子的任何提示。您可以从模型的角度将这部分数据看作是“未来”。
值得一提的是,如果问题集中在异常点的检测上,则可能需要更复杂的方法。
https://datascience.stackexchange.com/questions/76056
复制相似问题