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

时间:2016-04-17 20:34:28

标签: matlab machine-learning computer-vision svm cross-validation

我是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 个答案:

答案 0 :(得分:0)

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