templateSVM

万博1manbetx支持向量机模板

描述

例子

t= templateSVM ()返回一个支持向量机(万博1manbetxSVM)学习者模板适合于训练纠错输出码(ECOC)多类模型。

如果指定一个默认模板,则软件使用默认值在训练期间的所有输入参数。

指定t作为一个二进制学习者,或者一个二进制学习者,在fitcecoc训练的ECOC多类分类。

例子

t= templateSVM(名称,值)返回带有由一个或多个名称-值对参数指定的附加选项的模板。

例如,您可以指定框约束、内核函数或是否标准化谓词。

如果你显示t在命令窗口中,所有选项显示为空([]),除非使用名称-值对参数指定。在培训期间,软件对空选项使用默认值。

例子

全部收缩

templateSVM指定一个默认的SVM模板。

t = templateSVM ()
T =用于分类SVM拟合模板。阿尔法:为0x1双] BoxConstraint:[] CacheSize的:[] CachingMethod: '' ClipAlphas:[] DeltaGradientTolerance:[]小量:[] GapTolerance:[] KKTTolerance:[] IterationLimit:[] KernelFunction: '' KernelScale:[]KernelOffset:[] KernelPolynomialOrder:[] NumPrint:[]女:[] OutlierFraction:[] RemoveDuplicates:[] ShrinkagePeriod:[]求解: '' StandardizeData:[] SaveSupportVectors:万博1manbetx[] VerbosityLevel:[]版本:2所述的方法:“SVM”类型:‘分类’

模板对象的所有属性,除了空方法类型。当你通过t对于训练函数,软件用它们各自的默认值填充空属性。例如,软件填充KernelFunction与财产“线性”。有关其他默认值的详细信息,请参见fitcsvm

t是支持向量机学习器的计划,当指定它时不发生计算。你可以通过tfitcecoc为ECOC多类学习指定支持向量机二进制学习器。然而,默认情况下,fitcecoc使用默认SVM二进制学习者。

创建使用非默认模板SVMfitcecoc

加载费舍尔的虹膜数据集。

负载fisheriris

创建SVM二元分类模板,并指定要使用高斯核函数。

T = templateSVM('KernelFunction',“高斯”)
T =用于分类SVM拟合模板。阿尔法:为0x1双] BoxConstraint:[] CacheSize的:[] CachingMethod: '' ClipAlphas:[] DeltaGradientTolerance:[]小量:[] GapTolerance:[] KKTTolerance:[] IterationLimit:[] KernelFunction: '高斯' KernelScale:[] KernelOffset:[] KernelPolynomialOrder:[] NumPrint:[]女:[] OutlierFraction:[] RemoveDuplicates:[] ShrinkagePeriod:[]求解: '' StandardizeData:[] SaveSupportVectors:万博1manbetx[] VerbosityLevel:[]版本:2的方法:“SVM”类型:“分类”

模板对象的所有属性,除了空DistributionNames,方法类型。当上训练,该软件填补了各自的默认值的空属性。

指定t作为ECOC多类模型的二元学习者。

MDL = fitcecoc(MEAS,物种,“学习者”t);

MDL是一个ClassificationECOC多类分类。默认情况下,软件列车MDL使用一对一编码设计。

显示在样品中-(resubstitution)误分。

L = resubLoss(MDL,“LossFun”,'classiferror')
L = 0.0200

当你训练线性SVM二进制学习者的ECOC模型,fitcecoc清空α,万博1manbetxSupportVectorLabels万博1manbetxSupportVectors默认二进位学习器的性质。您可以选择保留支持向量和相关值,然后在以后从模型中丢弃它们。万博1manbetx

加载费舍尔的虹膜数据集。

负载fisheririsRNG(1);%用于重现

使用整个数据集训练ECOC模型。指定通过传递适当的支持向量机模板来保留支持向量。万博1manbetx

T = templateSVM(“Save万博1manbetxSupportVectors”,真正的);MdlSV = fitcecoc(量、种类、“学习者”t);

MdlSV是一个培训ClassificationECOC模型与线性SVM二进制学习者。默认,fitcecoc实现了一个一对一的编码设计,需要三个二进制学习者来进行三门课的学习。

访问估计 α (阿尔法)使用点符号值。

阿尔法=细胞(3,1);阿尔法{1} = MdlSV.BinaryLearners {1}。阿尔法;阿尔法{2} = MdlSV.BinaryLearners {2}。阿尔法;阿尔法{3} = MdlSV.BinaryLearners {3}。阿尔法;α
阿尔法=3×1单元阵列{3x1双}{3x1双}{23x1双}

α一个3×1的单元格数组是否存储的估计值 α

丢弃来自ECOC模型的支万博1manbetx持向量及相关的值。

MDL = discard万博1manbetxSupportVectors(MdlSV);

MDL类似于MdlSV,除了α,万博1manbetxSupportVectorLabels万博1manbetxSupportVectors所有线性支持向量机二值学习器的性质为空([])。

areAllEmpty = @(X)的isEmpty([x.Alpha x万博1manbetx.SupportVectors x.SupportVectorLabels]);cellfun(areAllEmpty,Mdl.BinaryLearners)
ans =3 x1逻辑阵列1 1 1

比较两个ECOC模型的大小。

var =谁(“铜牌”,'MdlSV');100 * (1 - var (1) .bytes / var (2) .bytes)
ANS = 4.8394

MDL小于约5%MdlSV

通过压缩减少你的内存使用情况MDL然后清除MDLMdlSV从工作空间。

CompactMdl =紧凑(Mdl);清晰的MDLMdlSV;

使用更有效的SVM模型预测训练数据的随机行标签。

IDX = randsample(大小(MEAS,1),1)
idx = 63
predictedLabel =预测(CompactMdl量(idx,:))
predictedLabel =1x1的单元阵列{“癣”}
trueLabel =物种(idx)
trueLabel =1x1的单元阵列{“癣”}

输入参数

全部收缩

名称 - 值对参数

的可选逗号分隔对名称,值参数。的名字参数名和是对应的值。的名字必须出现引号内。您可以按照任何顺序指定多个名称和值对参数名1,值1,...,NameN,值N

例:'BoxConstraint',0.1, 'KernelFunction', '高斯', '标准化',1指定的盒子约束0.1,使用高斯(RBF)核,并标准化预测器。

箱约束,指定为逗号分隔的一对组成的“BoxConstraint”和正标量。

对于单班学习,软件总是将box约束设置为1

的关系和算法行为的详细信息BoxConstraint,成本,,标准化权重,请参阅算法

例:“BoxConstraint”, 100年

数据类型:|

缓存大小,指定为逗号分隔对所组成的'的CacheSize'“最大”或正标量。

如果CacheSize“最大”,然后软件就会保留足够的内存来保存整个内存n-通过-n格拉姆矩阵

如果CacheSize是正标量,那么软件储备呢CacheSize兆字节的内存用于训练模型。

例:“CacheSize”、“最大”

数据类型:||烧焦|字符串

标记来剪辑系数,指定为逗号分隔对所组成的'ClipAlphas',要么真正要么

假设α系数进行观察jαj和观察箱约束jCj,j= 1,…,n,在那里n是训练样本的大小。

描述
真正 在每次迭代中,如果αj接近0或接近Cj,然后用MATLAB®αj到0或到Cj,分别。
MATLAB在优化过程中不会改变alpha系数。

MATLAB存储的最终值α在里面α经过训练的SVM模型对象的属性。

ClipAlphas可以影响SMO和ISDA的收敛。

例:“ClipAlphas”,假的

数据类型:逻辑

公差用于通过顺序最小优化(SMO)或迭代单数据算法(ISDA)中得到上下违反之间的梯度差,指定为逗号分隔的一对组成的“DeltaGradientTolerance”和一个非负标量。

如果DeltaGradientTolerance0,那么软件不使用的容差梯度差,检查最优化收敛。

默认值是:

  • 1 e - 3如果求解器是SMO(例如,您设置'求解', 'SMO')

  • 0如果求解器是ISDA(例如,您可以设置'求解', 'ISDA')

例:依照“DeltaGradientTolerance”, 1

数据类型:|

通过SMO或ISDA获得可行性间隙公差,指定为逗号分隔的一对组成的'GapTolerance'和一个非负标量。

如果GapTolerance0,然后软件不用可行性差容检验优化收敛性。

例:依照“GapTolerance”, 1

数据类型:|

数值优化迭代的最大次数,指定为逗号分隔对所组成的“IterationLimit”和一个正整数。

无论优化程序成功收敛的软件返回训练模型。Mdl.ConvergenceInfo含有收敛信息。

例:“IterationLimit”, 1 e8

数据类型:|

核函数用于计算的元素格拉姆矩阵,指定为逗号分隔的一对组成的'KernelFunction'和一个内核函数名。假设G(xj,xk)是元素(j,k)的,其中xjxkp表示观测值的维向量jkX。该表描述了受支持的内核函数名称及其函数形式万博1manbetx。

内核函数名 描述
“高斯”要么“rbf” 高斯或径向基函数(RBF)核,默认为一类学习

G ( x j , x k ) = EXP ( - x j - x k 2 )

“线性” 线性内核,默认为两班学习

G ( x j , x k ) = x j x k

“多项式” 多项式内核。用“PolynomialOrder”,指定的阶多项式内核

G ( x j , x k ) = ( 1 + x j x k )

您可以设置自己的内核的功能,例如,内核, 通过设置“KernelFunction”、“内核”。的值内核必须有这种形式。

功能G =内核(U,V)
地点:

  • U是一个-通过-p矩阵。列对应于预测变量,行对应于观察值。

  • V是一个n-通过-p矩阵。列对应于预测变量,行对应于观察值。

  • G是一个-通过-n格拉姆矩阵一行中的UV

kernel.m必须在MATLAB的路径。

避免对内核函数使用通用名称是一种很好的做法。例如,调用一个s型核函数'mysigmoid'而不是“乙状结肠”

例:'KernelFunction', '高斯'

数据类型:烧焦|字符串

内核偏移参数,指定为逗号分隔的一对组成的“KernelOffset”和一个非负标量。

该软件增加了KernelOffset到革兰氏​​矩阵的每个元素。

默认值是:

  • 0如果求解器是SMO(即,您设置'求解', 'SMO')

  • 0.1如果求解器是ISDA(即,您设置'求解', 'ISDA')

例:“KernelOffset”, 0

数据类型:|

内核尺度参数,指定为逗号分隔的一对组成的“KernelScale”“汽车”或正标量。该软件将预测矩阵中的所有元素X通过价值KernelScale。然后,软件应用适当的内核规范计算格拉姆矩阵。

  • 如果您指定“汽车”,那么软件选择使用启发式算法的适当比例因子。这种启发式过程使用二次抽样,所以估计可以从一个电话而异。因此,为了再现结果,使用设定的随机数种子RNG前培训。

  • 如果您指定KernelScale和自己的内核的功能,例如,“KernelFunction”、“内核”,然后软件抛出一个错误。您必须在内部应用伸缩内核

例:'KernelScale', '汽车'

数据类型:||烧焦|字符串

Karush-库恩 - 塔克(KKT)互补条件违反公差,指定为逗号分隔的一对组成的'KKTTolerance'和一个非负标量。

如果KKTTolerance0,那么软件不使用KKT互补条件违反公差检查最优化收敛。

默认值是:

  • 0如果求解器是SMO(例如,您设置'求解', 'SMO')

  • 1 e - 3如果求解器是ISDA(例如,您可以设置'求解', 'ISDA')

例:'KKTTolerance',1E-2

数据类型:|

优化诊断消息输出之间的迭代数,指定为逗号分隔的一对组成的'NumPrint'一个非负整数。

如果您指定“详细”,1'NumPrint',numprint,然后软件显示来自SMO和ISDA的所有优化诊断消息numprint迭代在命令窗口。

例:“NumPrint”, 500年

数据类型:|

训练数据中离群值的期望比例,指定为由'OutlierFraction'和在区间[0,1)的数值标量。

假设你让OutlierFraction, OutlierFraction,在那里outlierfraction是大于0的值。

  • 对于两班学习,该软件工具强大的学习。换句话说,软件试图删除100*outlierfraction%的意见时,优化算法收敛的。除去的观测对应于在幅度上大梯度。

  • 对于单一课程的学习,软件会找到一个合适的偏差术语,例如outlierfraction在训练组的意见有负分。

例:'OutlierFraction',0.01

数据类型:|

多项式核函数的阶数,指定为逗号分隔对所组成“PolynomialOrder”和一个正整数。

如果设置“PolynomialOrder”KernelFunction不是“多项式”,然后软件抛出一个错误。

例:“PolynomialOrder”, 2

数据类型:|

存储支持向量万博1manbetx,它们的标签,以及估计α系数所得到的模型的性质,指定为逗号分隔的一对组成的“Save万博1manbetxSupportVectors”真正要么

如果Save万博1manbetxSupportVectors真正时,所得的模型存储在支持向量万博1manbetx万博1manbetxSupportVectors财产,他们的标签万博1manbetxSupportVectorLabels财产,和估计α在系数α紧凑,SVM学习者的财产。

如果Save万博1manbetxSupportVectorsKernelFunction“线性”,得到的模型不存储支持向量和相关估计。万博1manbetx

为了减少紧凑车型SVM​​内存消耗,指定Save万博1manbetxSupportVectors

对于线性,SVM二进制学习者在ECOC模型中,默认值是。否则,默认值是真正

例:“Save万博1manbetxSupportVectors”,真的

数据类型:逻辑

活动集的减少之间的迭代数,指定为逗号分隔的一对组成的“ShrinkagePeriod”一个非负整数。

如果设置“ShrinkagePeriod”, 0,那么软件不收缩的活动集。

例:'ShrinkagePeriod',1000

数据类型:|

优化例程,指定为逗号分隔的一对组成的“求解”和表中的值。

描述
ISDA的 迭代单数据算法(见[30])
“L1QP” 用途quadprog实施l1二次规划的软裕度最小化。此选项需要一个优化工具箱™许可。有关更多细节,请参见二次规划的定义(优化工具箱)。
SMO的 序贯最小优化(见[17])

默认值是ISDA的如果你设置'OutlierFraction'为两班学习,正值SMO的否则。

例:'求解', 'ISDA'

标志以规范的预测数据,指定为逗号分隔的一对组成的“标准化”真正(1) 要么(0)

如果设置“标准化”,真的:

  • 软件对预测数据的每一列进行中心和缩放(X)的加权列平均值和标准差(有关加权标准化的详细信息,请参见算法)。MATLAB没有标准化包含在用于分类预测生成的虚拟变量列中的数据。

  • 该软件使用的列车标准化预测矩阵分类,而是存储在分类属性的非标准化数据X

例:“标准化”,真的

数据类型:逻辑

冗长级别,指定为逗号分隔的对,由“详细”0,1,或2。的价值详细控制软件在命令窗口中显示的优化信息的数量,并将信息保存为结构Mdl.ConvergenceInfo.History

此表总结了可用的详细级别选项。

描述
0 该软件不显示或保存收敛信息。
1 该软件显示诊断信息,并保存收敛标准每numprint迭代,其中numprint是名称 - 值对参数的值'NumPrint'
2 该软件在每次迭代时显示诊断信息并保存收敛标准。

例:“详细”,1

数据类型:|

输出参数

全部收缩

适合训练纠错输出码(ECOC)多类模型的SVM分类模板,作为模板对象返回。通过tfitcecoc指定如何创建的ECOC模型SVM分类。

如果你显示t在命令窗口,那么所有,未指定的选项显示为空([])。但是,在训练过程中,软件会将空选项替换为相应的默认值。

提示

默认情况下和效率,fitcecoc清空α,万博1manbetxSupportVectorLabels万博1manbetxSupportVectors对所有线性SVM二进制学习者性质。fitcecoc名单Beta版,而不是α,在模型中显示。

储藏α,万博1manbetxSupportVectorLabels万博1manbetxSupportVectors,传递一个指定存储支持向量的线性SVM模板万博1manbetxfitcecoc。例如,输入:

T = templateSVM(“Save万博1manbetxSupportVectors”,真)MDL = fitcecoc(X,Y,“学习者”t);

您可以通过使所得除去支持向量及相关的值万博1manbetxClassificationECOC模型discard万博1manbetxSupportVectors

参考

[1] Christianini,N.,和J. C. Shawe-泰勒。介绍支持向量机和其他基于内核的学习方法万博1manbetx。英国剑桥:剑桥大学出版社,2000。

[2]球迷,R.-E。,林志信。陈,C.-J。"训练支持向量机使用二阶信息的工作集选择"。万博1manbetx机器学习研究杂志, 2005年第6卷,第189 - 1918页。

[3] Hastie的,T.,R. Tibshirani,和J.弗里德曼。统计学习的要素, 第二版。纽约:施普林格,2008年。

[4] Kecman V, t -M。和m·沃格特。从巨大的数据集训练内核机器的迭代单数据算法:理论和性能。“在万博1manbetx支持向量机:理论与应用。王立波编辑,255-274。柏林:斯普林格出版社,2005年版。

B.斯科普夫,J. C.普拉特,J. C.沙-泰勒,A. J.斯莫拉和R. C.威廉姆森。"估算高维分布的支持度"万博1manbetx神经COMPUT。,第13,7号,2001年,第1443至1471年。

B. Scholkopf和A. Smola。支持向量机,规范化,优化和超越,自适应计算和机万博1manbetx器学习:与内核学习。马萨诸塞州剑桥:麻省理工学院出版社,2002年。

介绍了在R2014b