svm(支援向量機)簡單版本
阿新 • • 發佈:2018-11-12
網上最好的講解版本,我覺得是這個https://blog.csdn.net/v_july_v/article/details/7624837
從推導到說明都很完整。
基於此篇部落格和其他資料,我自己推導了簡單版本,沒有涉及最優化計算和證明,在此記錄,此後再有重要知識點還會補充到這篇中。
在matlab中可以下載libsvm工具箱進行實驗,有很多引數可以調節,比如核函式,懲罰係數等等。SVMcg函式可以用來直接尋找c和g的最佳值。思想是不斷改變c和g的值,然後將每次的正確率進行儲存比較。
函式呼叫的簡單例項如下
CC=cell2mat(C);
traindata=CC(:,1:16);
labeldata=CC(:,17);
% rn=randperm(4521);
% traindata=traindata(rn,:);
% labeldata=labeldata(rn,:);
train=traindata(1:3616,:);
trainlabel=labeldata(1:3616,:);
text=traindata(3617:4521,:);
textlabel=labeldata(3617:4521,:);
model = svmtrain(trainlabel,train,'-s 0 -t 2 -c 3.5 -g 8.9 -v 3');
% [pre,acc ,dec] = svmpredict(textlabel,text,model);
% options = optimset('MaxIter',1000);
% [bestacc,bestc,bestg] = SVMcg(trainlabel,train,-15,15,-15,15,3,1,1,1);
% cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];
% model = svmtrain(trainlabel,train,cmd);
% [pre,acc,dec] = svmpredict(textlabel,text,model);