我是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来减少特征维度,但分类错误和成功率的表现方式相同。
有谁能意识到这里发生的事情让我感到满意吗?非常感谢。
答案 0 :(得分:0)
成本惩罚越高,样本内预测就越好。然而,高成本惩罚也会导致过度拟合问题,这意味着它不能很好地预测新观察到的数据。