如何在SVM调整中确定超参数空间的范围? (MATLAB)

时间:2018-07-09 18:07:11

标签: matlab machine-learning deep-learning svm hyperparameters

我正在使用for循环调整SVM,以在超参数空间的范围内进行搜索。所学习的from tkinter import * # create canvas root = Tk() root.title("Aktieköp") root.configure(background="white") frame=Frame(root, width=1100, height=1000) frame.grid(row=0, column=0) canvas=Canvas(frame,bg="white",width=1100,height=1000) # my photo photo = PhotoImage(file="aktier.gif") label0 = Label(frame, image = photo, bg="white"). grid(row=0, column=0) # create scrollbar scrollbar=Scrollbar(frame,orient=VERTICAL) scrollbar.pack(side=RIGHT,fill=Y) scrollbar.config(command=canvas.yview) frame.config(width=1100,height=1000) frame.config(yscrollcommand=scrollbar.set) frame.pack(side=RIGHT,expand=True,fill=Y) root.mainloop() 模型包含以下字段

svm

问题1)“得分”字段及其用途是什么意思?

问题2)我正在调整 SVMModel: [1×1 ClassificationSVM] C: 2 FeaturesIdx: [4 6 8] Score: 0.0142 的C值。令特征的数量由变量BoxConstraint表示。变量featsize将包含可以从任何值(例如2 ^ -5、2 ^ -3到2 ^ 15等)开始的搜索空间。因此,gridC。我不明白是否有选择范围的方法?

1 个答案:

答案 0 :(得分:0)

1。score已记录在here中,内容为:

  

分类分数   用于对观察值x进行分类的SVM分类分数是从x到决策边界的有符号距离,范围为-∞到+∞。   类别的正分数表示x预计在   那堂课负分数表示相反。

在两个类别的情况下,如果有六个观察值,并且预测函数为我们提供了一个名为TestScore的得分值,那么我们可以确定特定观察值归于哪个类别:

TestScore=[-0.4497    0.4497
           -0.2602    0.2602;
           -0.0746    0.0746;
            0.1070   -0.1070;
            0.2841   -0.2841;
            0.4566   -0.4566;];
[~,Classes] = max(TestScore,[],2);

在两类分类中,我们也可以使用find(TestScore > 0)替代,很明显,前三个观察值属于第二类,而第四到第六个观察值属于第一类。

在多类情况下,可能会有多个得分> 0,但是代码max(scores,[],2)仍然有效。例如,我们可以使用下面的代码(来自here,该示例称为“使用二进制SVM查找多个类边界”)来确定预测Samples的类。

for j = 1:numel(classes);
    [~,score] = predict(SVMModels{j},Samples);
    Scores(:,j) = score(:,2); % Second column contains positive-class scores
end
[~,maxScore] = max(Scores,[],2);

然后maxScore将表示每个样本的预测类别。

2。。在SVM模型中BoxConstraint表示C,因此我们可以在不同的超参数中训练SVM,并通过以下类似方法选择最佳的参数:

gridC = 2.^(-5:2:15);
for ii=1:length(gridC)
SVModel = fitcsvm(data3,theclass,'KernelFunction','rbf',...
    'BoxConstraint',gridC(ii),'ClassNames',[-1,1]);
%if (%some constraints were meet) 
%  %save the current SVModel
%end
end

注意:另一种实现方法是使用libsvm,这是一个快速且易于使用的SVM工具箱,具有MATLAB接口。