使用交叉验证提高准确性,不使用交叉验证降低准确性

Posted

技术标签:

【中文标题】使用交叉验证提高准确性,不使用交叉验证降低准确性【英文标题】:Accuracy increases using cross-validation and decreases without 【发布时间】:2015-04-21 14:25:01 【问题描述】:

我有一个关于交叉验证的问题:我正在使用朴素贝叶斯分类器按作者对博客文章进行分类。当我在没有 k 折交叉验证的情况下验证我的数据集时,我得到了 0.6 的准确度得分,但是当我进行 k 折交叉验证时,每折都呈现更高的准确度(大于 0.8)。

例如:

(手动拆分):验证集大小:1452,训练集大小:13063,准确度:0.6033057851239669

然后

(使用 k 折叠):折叠 0 -> 训练集大小:13063,验证集大小:1452 准确度:0.8039702233250621(所有折叠都超过 0.8)

等等……

为什么会这样?

【问题讨论】:

请不要在多个 SE 网站上交叉发布您的问题...stats.stackexchange.com/questions/138449/… 【参考方案1】:

发生这种情况的原因有几个:

    您的“手动”拆分不是随机的,您碰巧选择了更多难以预测的异常值。你是如何进行这种拆分的?

    k-fold CV 中的k 是什么?我不确定您所说的验证集大小是什么意思,您在 k-fold CV 中有一个折叠大小。没有验证集,您使用整个数据运行交叉验证。您确定您正在正确运行 k 折交叉验证吗?

通常,选择k = 10 进行 k 折交叉验证。如果您使用整个数据正确运行它,您应该依赖它的结果而不是其他结果。

【讨论】:

k = 10,发现分裂没有很好地进行,训练和测试集也没有完全脱节。现在精度是一致的。谢谢

以上是关于使用交叉验证提高准确性,不使用交叉验证降低准确性的主要内容,如果未能解决你的问题,请参考以下文章

libsvm java中的交叉验证准确性

如何在交叉验证时获得AUC-ROC而不是准确度?

交叉验证中的准确性和混淆矩阵

在 LIBSVM 中的 SVM 中进行交叉验证时停止打印准确性 [关闭]

C4.5 决策树算法没有提高准确性

为啥交叉验证结果显示高准确率而存在过度拟合?