K折交叉验证降低准确性

数据挖掘 机器学习 分类 交叉验证 准确性
2022-03-05 20:06:32

我正在研究机器学习分类器,当我将数据划分为训练集和测试集时,我想面对两种不同的方法。在一种方法中,我只是将数据集拆分为训练集和测试集,而在另一种方法中,我使用 k 折交叉验证。

奇怪的是,交叉验证的准确性会降低,所以如果第一个方法我有 0.87,交叉验证我有 0.86。

交叉验证不应该提高我的准确性吗?提前致谢。

3个回答

当数据被拆分时,机会扮演着重要的角色。例如,训练集可能包含特定的特征组合,也可能不包含;也许测试集包含很大比例的常规“简单”实例,也许它没有。因此,性能因拆分而异。

假设您的分类器的性能会在 0.80 和 0.90 之间变化:

在一种方法中,我只是将数据集拆分为训练集和测试集

使用这种方法,您只需掷一次骰子:也许您很幸运,性能会接近 0.9,或者您不是,它会接近 0.8。

而在另一种方法中,我使用 k 折交叉验证。

使用这种方法,您掷骰子 k 次,性能是这些的平均值k运行。它比前一个更准确,因为通过多次运行的平均,性能更有可能接近平均值,即最常见的情况。

结论:k-fold 交叉验证并不是为了提高性能,而是为了提供更准确的性能度量。

K-fold 交叉验证训练 k 个不同的模型,每个模型都在学习过程中未使用的观察值上进行测试。没有理由在交叉验证中获得更高或更低的分数,因为您没有使用与参考案例中相同的模型,也没有使用相同的测试集。您描述的方法是不同的,尽管我不建议只进行交叉验证。

实际上,将交叉验证视为验证您的方法而不是测试分类器的一种方式。通常,交叉验证的使用会发生在以下情况:考虑大型数据集;将其拆分为训练和测试,仅对训练集进行 k 折交叉验证模型超参数的优化由交叉验证分数指导。一旦你获得了最佳的超参数设置,在整个训练集上使用这些参数训练你的模型,然后简单地计算它在测试集上的准确度。

对 Erwan 的回答稍加补充。了解“准确性”的定义很重要。这不仅仅是分数,而是分数的质量——这是衡量准确性的标准。我的意思是你的交叉验证分数的可变性会更低——我想每个人都会同意这是一个更高质量的估计。在某些情况下,正如 Erwan 所暗示的那样,我们可能会使用正常的训练测试拆分获得更高的分数,但那是因为我们在掷骰子时很幸运。我们也可能同样不走运并获得较低的分数。您可以对报告的 CV 分数更有信心。

使用我们的直觉进行健全性检查也可能会有所帮助。忽略获得高分的肤浅目标,并考虑很好地概括数据中的潜在模式的主要潜在目标(分数只是衡量标准),直观地说,给出算法将使实现这一目标更容易。这与我们积极限制算法查看某些数据的训练测试拆分相反。