为啥我的交叉验证错误分类错误率与测试数据集成功率相矛盾

Posted

技术标签:

【中文标题】为啥我的交叉验证错误分类错误率与测试数据集成功率相矛盾【英文标题】:why my cross validation misclassification error rate contradicts testing dataset success rate为什么我的交叉验证错误分类错误率与测试数据集成功率相矛盾 【发布时间】:2016-08-09 11:29:45 【问题描述】:

我是 ML 的初学者。

我正在尝试使用 600 个图像(300 个 pos 和 300 个 neg)在 Matlab 中训练线性 SVM;然后,我将训练好的模型应用于我的 400 张测试图像。如果我将线性 SVM 的成本设置为 [0,1;1,0],结果成功率在 65% 左右,而交叉验证分类误差在 0.28 左右,然后我尝试了各种成本值,发现[0,1;x,0],x越高,分类误差越小。然而,令我困惑的是,虽然分类错误不断降低,但成功率也在急剧下降。以下是我的代码:

% each row represents an image and each column represents a pixel value.
% each image row has been normalized.
SVMModel = fitcsvm(imgVector, Class, 'Cost', [0,1;1,0], 'Standardize', true, 'KernelScale', 'auto'); 
% cross validate the model
CVSVMModel = crossval(SVMModel);
classLoss = kfoldLoss(CVSVMModel);

我也尝试过 PCA 来降低特征维度,但分类错误和成功率表现相同。

有没有人知道这里发生了什么让我有点启发?非常感谢。

【问题讨论】:

你可能是过拟合了,即你的模型对训练数据的分类越来越好,但是在新的看不见的测试数据上泛化能力很差...... 【参考方案1】:

成本惩罚越高,样本内预测的效果就越好。然而,高成本惩罚也会导致过拟合问题,这意味着它不能很好地预测新观察到的数据。

【讨论】:

以上是关于为啥我的交叉验证错误分类错误率与测试数据集成功率相矛盾的主要内容,如果未能解决你的问题,请参考以下文章

为啥决策树显示正确分类而某些实例被错误分类

使用交叉验证的 KNN 分类器

为啥我的交叉验证始终比训练测试分割表现更好?

多标签分类的交叉验证错误

使用 R 的 CMA Bioconductor 包时,解决 SVM 分类交叉验证中的“模型空”错误

为啥 scikit-learn SVM 分类器交叉验证这么慢?