我正在尝试训练和验证包含 17 个数据集的数据集。我将它们划分为 15 个用于训练,2 个用于验证。在此过程中,我在 15 个数据集上进行训练,并使用生成的模型来预测剩余 2 个数据集的结果。在我的理解中,这个过程被称为遗漏验证。无论我使用哪种分类器(SVM、可优化 SVM、knn、可优化 KNN),我总是能获得接近 90-100% 的非常高的训练准确率。验证准确度相对较差,接近 50-60%。在某些运行中,验证集中的数据集将成为训练的一部分。在这种情况下,我无法理解他们是否在训练中做得这么好,为什么验证结果如此糟糕。?
留下一对交叉验证
数据挖掘
交叉验证
2022-02-25 11:18:46
1个回答
[在OP澄清后编辑]
我不明白他们在训练中做得这么好,为什么验证结果这么差。?
这当然是由于数据集之间的重大差异。监督学习依赖于假设训练集和测试集都是来自同一群体的样本(即它们遵循相同的分布)。在您的情况下,模型假设用作训练数据的 15 个数据集是“该”数据分布的代表性样本。如果用作测试集的两个数据集具有非常不同的分布,那么模型学到的东西根本不适用于测试集。
我认为这是过度拟合的一种形式:模型学习实例的一些细节,而不是学习对目标变量重要的真实模式。这些细节实际上发生在训练集中,因此在它上面表现不错。但是它们不会在验证集中发生(至少不会以相同的方式发生),因此真正的性能很差。
注意:您的评估设置类似于遗漏 (LOO) 交叉验证,但这不是 LOO,因为 LOO 意味着将单个实例作为测试集。
其它你可能感兴趣的问题