1. 程式人生 > >svm(支援向量機)簡單版本

svm(支援向量機)簡單版本

網上最好的講解版本,我覺得是這個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);