使用 K 折交叉验证时,每个 k 折的准确度变化是否可接受?

数据挖掘 机器学习 交叉验证
2022-03-13 07:42:16

我有一个相对较小的数据集,包含 1432 个样本。

我训练了一个随机森林分类器并执行了 KFold CV。运行 10 Fold CV 的结果如下:

=== 10 Fold Cross Validation Scores ===

CVFold 1 = 90.2%
CVFold 2 = 87.6%
CVFold 3 = 86.7%
CVFold 4 = 86.7%
CVFold 5 = 83.9%
CVFold 6 = 75.8%
CVFold 7 = 87.2%
CVFold 8 = 82.8%
CVFold 9 = 86.1%
CVFold 10 = 89.3%

Mean Cross Validation Score:  85.6%

我只是不知道如何解释为什么某些折叠之间存在如此大的差异,即从第 6 折叠的 75.8% 到第 1 折叠的 90.2%。

我的理解是,分类器发现第 1 折 (90%) 中的样本比第 6 折 (75%) 中的样本更容易分类,但我实际上并不完全确定是否是这种情况。

我知道每种情况都不同,但这种差异是否常见?它可以接受吗?

编辑:关于我的数据的一些细节

我有 5 个不平衡的类:

1级 - 5%

2 级 - 10%

3 级 - 15%

4级 - 60%

5级 - 10%

我正在使用 SMOTE 来平衡课程。

2个回答

这确实是一个相当大的变化,但没有什么令人担忧的,因为 10 个折叠中有 9 个在 0.8 到 0.9 的范围内。

有很多可能的因素:是的,一个折叠可能比另一个更容易,但这也表明训练过程有点不稳定。增加实例的数量和/或减少特征的数量通常有助于减少变化。

老实说,我不会平衡课程。我不知道您通过 SMOTE 生成了多少条目,但在我看来,这些课程相当平衡,除了第四个。

如果你有足够的数据,我会简单地使用 CrossValidation 和对类进行分层抽样,你甚至可能对较大的数据进行轻微的抽样不足。