MATLAB fitcSVM 权重向量
Posted
技术标签:
【中文标题】MATLAB fitcSVM 权重向量【英文标题】:MATLAB fitcSVM weight vector 【发布时间】:2018-12-15 04:41:37 【问题描述】:我正在 MATLAB 中使用 fitcsvm 函数训练线性 SVM 分类器:
cvFolds = crossvalind('Kfold', labels, nrFolds);
for i = 1:nrFolds % iterate through each fold
testIdx = (cvFolds == i); % indices of test instances
trainIdx = ~testIdx; % indices training instances
cl = fitcsvm(features(trainIdx,:),
labels(trainIdx),'KernelFunction',kernel,'Standardize',true,...
'BoxConstraint',C,'ClassNames',[0,1], 'Solver', solver);
[labelPred,scores] = predict(cl, features(testIdx,:));
eq = sum(labelPred==labels(testIdx));
accuracy(i) = eq/numel(labels(testIdx));
end
从这部分代码可以看出,经过训练的 SVM 模型存储在 cl 中。检查 cl 中的模型参数我看不到哪些参数对应于分类器权重 - 即。线性分类器的参数,反映每个特征的重要性。 哪个参数代表分类权重?我在MATLAB documentation 中看到“向量 β 包含定义与超平面正交向量的系数”——因此 cl.beta 代表分类权重吗? p>
【问题讨论】:
【参考方案1】:正如你在这个documentation 中看到的,hyperplane
在fitcsvm
中的等式是
f(x)=x′β+b=0
如你所知,这个等式显示以下关系:
f(x)=w*x+b=0 or f(x)=x*w+b=0
因此,β 等于 w(权重)。
【讨论】:
以上是关于MATLAB fitcSVM 权重向量的主要内容,如果未能解决你的问题,请参考以下文章
Matlab-libsvm - 从原始权重向量、线性核再现决策值
在 matlab 中使用 perfcurve 和 SVM (fitcsvm) 的 ROC 和 AUC
[MATLAB][原创]Matlab添加libsvm后报错svmtrain已被删除, 请改用fitcsvm解决办法