教程>支持向量机(SVM)

VLFeat公司包括快速SVM解算器,新加坡通用汽车公司[1]和(S)DCA[2],两者实施于vlsvm系列。该功能还实现特性,如同质核映射扩展和在线支持向量机统计数据。(S) DCA也可以用于不同的损耗函数。

支持向量机

如何使用的简单示例vlsvm系列如下所示。首先加载并绘制训练数据:

%加载训练数据X及其标签yvl_setup demo%以加载演示数据负载('vl_demo_svm_data.mat');Xp=X(:,y==1);Xn=X(:,y==-1);图形绘图(Xn(1,:)、Xn(2,:)和'*r')等一下绘图(Xp(1,:)、Xp(2,:)和'*b')轴相等;

现在我们有了教程培训数据的绘图:

培训数据。

现在,我们将设置学习参数:

λ=0.01;%正则化参数最大值=1000;%最大迭代次数

学习线性分类器可以很容易地完成以下1代码行:

[w b info]=vl_svmtrain(X,y,lambda,'MaxNumIterations',maxIter)

现在我们可以在训练中绘制输出模型数据。

%可视化eq=[num2str(w(1))'*x+'数值2str;线=ezplot(eq,[-0.9 0.9-0.9 0.9]);设置(线条,‘颜色’,[0 0.80],‘线宽’,2);

结果如下图所示。

学习模型。

输出信息是包含一些关于学习的SVM的统计:

信息=解算器:“sdca”λ:0.0100偏差乘数:1偏差:0.0657目标:0.2105正则化因子:0.0726损失:0.1379双重目标:0.2016双损失:0.2742双重性差距:0.0088迭代次数:525历元:3经过时间:0.0300

在某些情况下也可以使用假设[3]在内部在线扩展的同构内核映射解算器。这可以通过以下命令完成:

%使用内核映射参数创建结构hom.kernel='KChi2';hom.order=2;%创建数据集结构数据集=vl_svmdataset(X,'homkermap',hom);%利用数据集结构在线扩展核函数学习支持向量机[w b info]=vl_svmtrain(数据集,y,lambda,'MaxNumIterations',maxIter)

上述代码创建了一个训练集,但没有应用任何同质内核映射到数据。调用解算器时,它将使用X平方核扩展每个数据点第2段。

诊断

VLFeat允许在培训过程中获取统计信息。它是足以将函数句柄传递给解算器。功能然后将每隔诊断频率时间。

(S) DCA诊断还提供了二元间隙值(原始能量和双能量之间的差异),这是原始任务次优的上界。

%诊断功能功能诊断(svm)能量=[能量[svm目标;svm.dualObjective;svm.dualityGap]];结束%训练支持向量机能量=[];[w b info]=vl_svmtrain(X,y,λ,。。。“MaxNumIterations”,maxIter,。。。“DiagnosticFunction”,@diagnostics,。。。“诊断频率”,1)

过去迭代的目标值保存在矩阵能量现在我们可以绘制学习过程中的目标值。

图形等一下图(能量(1,:),‘--b’);图(能量(2,:),‘-.g’);图(能量(3,:),‘r’);图例(“主要目标”、“双重目标”、‘双重差距’)xlabel(“诊断迭代”)伊拉贝尔(“能源”)
SVM目标值绘图。

工具书类

  • [1] Y.Singer和N.Srebro。Pegasos:原始支持向量机的估计子梯度解算器.进行中。ICML、,2007
  • [2] S.Shalev-Schwartz和T.Zhang。正则化损失最小化的随机双坐标上升法. 2013.
  • [3] A.Vedaldi和A.Zisserman。高效添加剂基于显式特征映射的核函数PAMI,2011年。