主要内容

fitcsvm

训练支持向量金宝app机分类器用于一类分类和二元分类

描述

fitcsvm在低维或中维预测器数据集上训练或交叉验证支持向量机(SV金宝appM)模型,用于一类和两类(二进制)分类。fitcsvm金宝app支持使用核函数映射预测器数据,并支持顺序最小优化(SMO),迭代单数据算法(ISDA),或l1目标函数最小化的二次规划软边际最小化。

要在高维数据集(即包含许多预测变量的数据集)上训练用于二元分类的线性支持向量机模型,请使用fitclinear代替。

对于使用组合二进制支持向量机模型的多类学习,使用纠错输出代码(ECOC)。详情请参见fitcecoc

要训练SVM回归模型,请参见fitrsvm对于低维和中维预测器数据集,或fitrlinear对于高维数据集。

Mdl= fitcsvm (资源描述ResponseVarName返回一个金宝app支持向量机(SVM)分类器Mdl使用表中包含的示例数据进行训练资源描述ResponseVarName变量名在吗资源描述其中包含用于一级或二级分类的类标签。

Mdl= fitcsvm (资源描述公式返回使用表中包含的样本数据训练的SVM分类器资源描述公式是否有响应的解释模型和预测变量的子集资源描述曾经适合Mdl

Mdl= fitcsvm (资源描述Y返回使用表中的预测变量训练的SVM分类器资源描述类的标签是向量Y

例子

Mdl= fitcsvm (XY返回使用矩阵中的预测器训练的SVM分类器X类的标签是向量Y用于一级或二级分类。

例子

Mdl= fitcsvm (___名称,值除以前语法中的输入参数外,还使用一个或多个名称-值对参数指定选项。例如,您可以指定交叉验证的类型、错误分类的代价以及分数转换函数的类型。

例子

全部折叠

加载费雪的虹膜数据集。去除萼片的长度和宽度以及所有观察到的虹膜。

负载fisheririsInds = ~strcmp(种,“setosa”);X = meas(inds,3:4);Y = species(inds);

使用处理过的数据集训练支持向量机分类器。

svm模型= fitcsvm(X,y)
SVMModel = ClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 100 Alpha: [24x1 double] Bias: -14.4149 KernelParameters: [1x1 struct] BoxConstraints: [100x1 double] ConvergenceInfo: [1x1 struct] Is金宝appSupportVector: [100x1 logical] Solver: 'SMO' Properties, Methods

SVMModel是受过训练的ClassificationSVM分类器。显示的属性SVMModel.例如,要确定类顺序,可以使用点表示法。

classOrder = SVMModel。一会
classOrder =2 x1细胞{'versicolor'} {'virginica'}

第一堂课(“多色的”)是否定类,而第二个(“virginica”)是正类。类可以在训练期间更改类顺序“类名”名称-值对参数。

绘制数据散点图并圈出支持向量。金宝app

sv = SVMModel.金宝appSupportVectors;图gscatter(X(:,1),X(:,2),y)保持情节(sv (: 1), sv (:, 2),“柯”“MarkerSize”10)传说(“多色的”“virginica”“金宝app支持向量”)举行

图中包含一个轴。坐标轴包含3个line类型的对象。这些对象代表彩色,维珍,支持向量。金宝app

支持向量金宝app是发生在其估计类别边界上或超出其估计类别边界的观测值。

方法在训练期间设置框约束,可以调整边界(以及支持向量的数量)金宝app“BoxConstraint”名称-值对参数。

加载电离层数据集。

负载电离层rng (1);%用于再现性

使用径向基核训练SVM分类器。让软件为内核函数找到一个缩放值。标准化预测器。

SVMModel = fitcsvm(X,Y,“标准化”,真的,“KernelFunction”“RBF”...“KernelScale”“汽车”);

SVMModel是受过训练的ClassificationSVM分类器。

交叉验证SVM分类器。默认情况下,该软件使用10倍交叉验证。

CVSVMModel = crossval(SVMModel);

CVSVMModel是一个ClassificationPartitionedModel旨在分类器。

估计样本外误分类率。

classLoss = kfoldLoss(CVSVMModel)
classLoss = 0.0484

泛化率约为5%。

修改Fisher的虹膜数据集,将所有虹膜分配到同一类。在修改后的数据集中检测异常值,并确认异常值观测值的预期比例。

加载费雪的虹膜数据集。去掉花瓣的长度和宽度。将所有虹膜视为来自同一类。

负载fisheririsX = meas(:,1:2);y = ones(size(X,1),1);

使用修改后的数据集训练SVM分类器。假设5%的观测值是异常值。标准化预测器。

rng (1);SVMModel = fitcsvm(X,y,“KernelScale”“汽车”“标准化”,真的,...“OutlierFraction”, 0.05);

SVMModel是受过训练的ClassificationSVM分类器。默认情况下,软件使用高斯内核进行单类学习。

绘制观察结果和决策边界。标记支持向量和潜在金宝app的异常值。

svInd = SVMModel.Is金宝appSupportVector;H = 0.02;%网格步长[X1,X2] = meshgrid(min(X(:,1)):h:max(X(:,1)),,...min (X (:, 2)): h:马克斯(X (:, 2)));[~,score] = predict(SVMModel,[X1(:),X2(:)]);scoreGrid =重塑(分数,大小(X1,1),大小(X2,2));图绘制(X (: 1), (:, 2),“k”。)举行情节(X (svInd, 1), X (svInd, 2),“罗”“MarkerSize”,10)轮廓(X1,X2,scoreGrid)色条;标题(“{\bf基于一类支持向量机的虹膜离群值检测}”)包含(“萼片长度(厘米)”) ylabel (“萼片宽度(厘米)”)传说(“观察”“金宝app支持向量”)举行

图中包含一个轴。标题为{\bf Iris Outlier Detection via One-Class SVM}的轴包含类型线、轮廓线3个对象。这些对象代表观测,支持向量。金宝app

将异常值与其余数据分开的边界发生在等高线值所在的位置0

验证交叉验证数据中观察值为负值的比例接近5%。

CVSVMModel = crossval(SVMModel);[~,scorePred] = kfoldPredict(CVSVMModel);outlierRate = mean(scorePred<0)
outlierRate = 0.0467

的散点图fisheriris数据集。将图中网格的坐标视为来自数据集分布的新观测值,并通过将坐标分配给数据集中的三个类之一来查找类边界。

加载费雪的虹膜数据集。使用花瓣的长度和宽度作为预测因子。

负载fisheririsX = meas(:,3:4);Y =物种;

检查数据的散点图。

图gscatter (X (: 1), (:, 2), Y);H = gca;Lims = [h;Xl我米h.YLim];提取x轴和y轴限制标题(“{\bf虹膜测量散点图}”);包含(“花瓣长度(厘米)”);ylabel (“花瓣宽度(厘米)”);传奇(“位置”“西北”);

图中包含一个轴。标题为{\bf Scatter Diagram of Iris Measurements}的轴包含3个类型为line的对象。这些物品代表了setosa, versicolica, virgica。

数据包含三个类别,其中一个类别与其他类别线性可分。

每个班级:

  1. 创建逻辑向量(indx)表示观察值是否属于该类。

  2. 使用预测数据和训练支持向量机分类器indx

  3. 将分类器存储在单元格数组的单元格中。

定义类的顺序。

svm模型= cell(3,1);类=唯一的(Y);rng (1);%用于再现性j = 1: number (classes) index = strcmp(Y,classes(j));为每个分类器创建二进制类SVMModels{j} = fitcsvm(X,indx,“类名”(虚假的真实),“标准化”,真的,...“KernelFunction”“rbf”“BoxConstraint”1);结束

SVMModels是一个3 × 1单元格数组,每个单元格包含一个ClassificationSVM分类器。对于每个细胞,阳性类分别是setosa, versicolor和virginica。

在图中定义一个精细的网格,并将坐标视为来自训练数据分布的新观测值。使用每个分类器估计新观测值的分数。

D = 0.02;[x1Grid, x2Grid] = meshgrid (min (X (: 1)): d:马克斯(X (: 1))...min (X (:, 2)): d:马克斯(X (:, 2)));xGrid = [x1Grid(:),x2Grid(:)];N = size(xGrid,1);分数=零(N,数字(类));j = 1: number (classes) [~,score] = predict(SVMModels{j},xGrid);分数(:,j) =分数(:,2);第二列包含积极的班级分数结束

每行分数包含三个分数。得分最大的元素的索引是新类观测值最有可能归属的类的索引。

将每个新的观察结果与给出最高分的分类器关联起来。

[~,maxScore] = max(Scores,[],2);

根据对应的新观测值所属的类别,在图的区域中添加颜色。

图h(1:3) = gscatter(xGrid(:,1),xGrid(:,2),maxScore,...[0.1 0.5 0.5;0.5 0.1 0.5;0.5 0.5 0.1]);持有h(4:6) = gscatter(X(:,1),X(:,2),Y);标题(“{\bf虹膜分类区域}”);包含(“花瓣长度(厘米)”);ylabel (“花瓣宽度(厘米)”);传奇(h, {“setosa地区”“杂色的地区”“virginica地区”...“观察setosa”的观察到的多色的“观察virginica”},...“位置”“西北”);轴持有

图中包含一个轴。标题为{\bf虹膜分类区域}的轴包含6个类型为line的对象。这些物体分别代表积灰区、彩霞区、维珍区、观测到的积灰区、观测到的彩霞区、观测到的维珍区。

自动使用超参数优化fitcsvm

加载电离层数据集。

负载电离层

通过使用自动超参数优化,找到最小化5倍交叉验证损失的超参数。为了重现性,设置随机种子并使用“expected-improvement-plus”采集功能。

rng默认的Mdl = fitcsvm(X,Y,“OptimizeHyperparameters”“汽车”...“HyperparameterOptimizationOptions”结构(“AcquisitionFunctionName”...“expected-improvement-plus”))
|=====================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | BoxConstraint | KernelScale | | |结果| |运行时| | (estim(观察) .) | | | |=====================================================================================================| | 最好1 | | 0.20513 | 16.36 | 0.20513 | 0.20513 | 64.836 | 0.0015729 | | 2 |接受| 0.35897 | 0.11688 | 0.20513 | 0.21471 | 0.036335 | 5.5755 ||3.|Best | 0.13105 | 6.4256 | 0.13105 | 0.14133 | 0.0022147 | 0.0023957 | | 4 | Accept | 0.35897 | 0.11438 | 0.13105 | 0.13109 | 5.1259 | 98.62 | | 5 | Accept | 0.13675 | 13.117 | 0.13105 | 0.13111 | 0.0011599 | 0.0010098 | | 6 | Accept | 0.13675 | 2.8275 | 0.13105 | 0.13119 | 0.0010151 | 0.0059137 | | 7 | Accept | 0.1339 | 8.0601 | 0.13105 | 0.13127 | 0.0010281 | 0.0027003 | | 8 | Accept | 0.13675 | 13.277 | 0.13105 | 0.13232 | 0.016269 | 0.0024597 | | 9 | Accept | 0.13105 | 10.552 | 0.13105 | 0.13137 | 0.0021526 | 0.0025081 | | 10 | Best | 0.12821 | 14.166 | 0.12821 | 0.12841 | 0.0086928 | 0.0010304 | | 11 | Accept | 0.12821 | 14.547 | 0.12821 | 0.12828 | 0.010039 | 0.0010077 | | 12 | Accept | 0.13675 | 14.233 | 0.12821 | 0.13162 | 0.0071238 | 0.0010245 | | 13 | Accept | 0.1339 | 13.196 | 0.12821 | 0.13179 | 0.0050166 | 0.0016385 | | 14 | Best | 0.11966 | 14.624 | 0.11966 | 0.12919 | 0.013746 | 0.0010181 | | 15 | Accept | 0.13105 | 15.437 | 0.11966 | 0.1294 | 0.025222 | 0.001012 | | 16 | Accept | 0.13105 | 15.316 | 0.11966 | 0.12958 | 0.024019 | 0.001013 | | 17 | Accept | 0.35897 | 0.16209 | 0.11966 | 0.12962 | 0.0010245 | 994.95 | | 18 | Accept | 0.13675 | 14.017 | 0.11966 | 0.12925 | 990.28 | 0.36736 | | 19 | Accept | 0.18234 | 16.694 | 0.11966 | 0.12917 | 949.33 | 0.082849 | | 20 | Accept | 0.1339 | 6.0125 | 0.11966 | 0.12914 | 979.17 | 1.3107 | |=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | BoxConstraint| KernelScale | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 21 | Accept | 0.14245 | 15.34 | 0.11966 | 0.13062 | 0.024598 | 0.0010041 | | 22 | Accept | 0.13675 | 11.276 | 0.11966 | 0.13058 | 907 | 0.70254 | | 23 | Accept | 0.35897 | 0.097641 | 0.11966 | 0.13062 | 999.82 | 995.02 | | 24 | Accept | 0.15385 | 0.090972 | 0.11966 | 0.13042 | 0.001002 | 0.30762 | | 25 | Accept | 0.12251 | 0.11237 | 0.11966 | 0.12275 | 0.0010105 | 0.056734 | | 26 | Accept | 0.1339 | 0.19372 | 0.11966 | 0.12251 | 0.021279 | 0.054708 | | 27 | Accept | 0.12821 | 0.10274 | 0.11966 | 0.12517 | 0.0010127 | 0.064566 | | 28 | Accept | 0.12821 | 0.12003 | 0.11966 | 0.12557 | 0.0010014 | 0.036667 | | 29 | Accept | 0.1339 | 0.10127 | 0.11966 | 0.12743 | 0.0010509 | 0.078319 | | 30 | Accept | 0.12251 | 0.1367 | 0.11966 | 0.12706 | 0.0030057 | 0.028009 |

图中包含一个轴。标题为Min目标vs.函数计算数量的轴包含2个类型为line的对象。这些对象代表最小观测目标,估计最小目标。

图中包含一个轴。目标函数模型的轴包含直线、曲面、轮廓等5个对象。这些对象代表观测点,模型均值,下一个点,模型最小可行。

__________________________________________________________ 优化完成。最大目标达到30个。总函数评估:30总运行时间:278.6746秒总目标函数评估时间:236.8276最佳观测可行点:BoxConstraint KernelScale _____________ ___________ 0.013746 0.0010181观测目标函数值= 0.11966估计目标函数值= 0.13091函数评估时间= 14.6241最佳估计可行点(根据模型):BoxConstraint KernelScale _____________ ___________ 0.0010105 0.056734估计目标函数值= 0.12706估计函数评估时间= 0.10367
Mdl = ClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 HyperparameterOptimizationResults: [1x1 bayesioptimization] Alpha: [117x1 double] Bias: -2.6521 KernelParameters: [1x1 struct] BoxConstraints: [351x1 double] ConvergenceInfo: [1x1 struct] IsSu金宝apppportVector: [351x1 logical] Solver: 'SMO' Properties, Methods

输入参数

全部折叠

用于训练模型的示例数据,指定为表。每行资源描述对应一个观测值,每一列对应一个预测变量。可选地,资源描述可以为响应变量包含一个额外的列。不允许使用字符向量的单元格数组以外的多列变量和单元格数组。

  • 如果资源描述包含响应变量,您希望在中使用所有剩余变量资源描述作为预测器,然后通过使用指定响应变量ResponseVarName

  • 如果资源描述包含响应变量,并且您希望仅在中使用其余变量的子集资源描述作为预测器,然后通过使用指定一个公式公式

  • 如果资源描述不包含响应变量,然后通过使用Y.响应变量的长度和其中的行数资源描述必须是相等的。

数据类型:表格

响应变量名,指定为中的变量名资源描述

您必须指定ResponseVarName作为字符向量或字符串标量。例如,如果响应变量Y存储为资源描述。Y,然后指定为“Y”.否则,软件处理的所有列资源描述,包括Y,作为训练模型时的预测因子。

响应变量必须是类别、字符或字符串数组;向量:逻辑或数字向量;或者是字符向量的单元格数组。如果Y是字符数组,则响应变量的每个元素必须对应于数组中的一行。

类指定类的顺序是一个很好的实践一会名称-值参数。

数据类型:字符|字符串

响应变量和预测变量子集的解释模型,在表单中指定为字符向量或字符串标量“Y ~ x1 + x2 + x3”.在这种形式下,Y表示响应变量,和x1x2,x3表示预测变量。

中指定变量的子集资源描述使用公式作为训练模型的预测因子。如果您指定了一个公式,那么该软件不使用任何变量资源描述没有出现在公式

公式中的变量名必须同时为资源描述Tbl.Properties.VariableNames)和有效的MATLAB®标识符。中的变量名可以验证资源描述通过使用isvarname函数。变量名无效,则可以使用matlab.lang.makeValidName函数。

数据类型:字符|字符串

SVM模型训练到的类标签,指定为类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。

  • Y最多只能包含两个不同的类。关于多课学习,请参见fitcecoc

  • 如果Y是字符数组,则类标签的每个元素必须对应于数组中的一行。

  • 的长度Y和进去的行数资源描述X必须是相等的。

  • 类指定类顺序是一个很好的实践一会名称-值对参数。

数据类型:分类|字符|字符串|逻辑|||细胞

支持向量机分类器训练的预测器数据,指定为数值矩阵。

每行X对应一个观察结果(也称为实例或示例),每一列对应一个预测器(也称为特征)。

的长度Y和进去的行数X必须是相等的。

中出现的顺序指定预测符的名称X,使用“PredictorNames”名称-值对参数。

数据类型:|

名称-值对参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:fitcsvm (X, Y, KFold, 10日,“成本”,[0 2;1 0],“ScoreTransform”、“标志”)执行10倍交叉验证,对假阳性与假阴性应用两倍的惩罚,并使用符号函数转换分数。
支持向量机的选择

全部折叠

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

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

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

例子:“BoxConstraint”,100年

数据类型:|

核函数用来计算元素的格拉姆矩阵,指定为逗号分隔的对,由“KernelFunction”和一个核函数名。假设Gxjxk)是元素(jk),其中xj而且xkp表示观测值的-维向量j而且kX.该表描述了支持的内核函数名称及其函数形式。金宝app

内核函数名称 描述 公式
“高斯”“rbf” 高斯或径向基函数(RBF)内核,默认为单类学习

G x j x k 经验值 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格拉姆矩阵这一行的U而且V

kernel.m必须在MATLAB路径上。

避免对内核函数使用泛型名称是一个很好的实践。例如,调用一个sigmoid核函数“mysigmoid”而不是“乙状结肠”

例子:“KernelFunction”、“高斯”

数据类型:字符|字符串

内核规模参数,指定为逗号分隔的对,由“KernelScale”而且“汽车”或者一个正标量。该软件划分预测矩阵的所有元素X的值KernelScale.然后,应用相应的核范数计算Gram矩阵。

  • 如果你指定“汽车”,然后软件使用启发式程序选择合适的比例因子。这个启发式过程使用子抽样,所以估计值可以在不同的调用中有所不同。因此,为了重现结果,设置一个随机数种子使用rng前培训。

  • 如果你指定KernelScale比如你自己的核函数,“KernelFunction”、“内核”,然后软件抛出一个错误。您必须在内部应用缩放内核

例子:“KernelScale”、“汽车”

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

多项式核函数顺序,指定为逗号分隔的对,由“PolynomialOrder”一个正整数。

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

例子:“PolynomialOrder”,2

数据类型:|

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

软件添加KernelOffset格拉姆矩阵的每个元素。

默认值为:

  • 0如果解算器是SMO(也就是说,你设置“规划求解”、“SMO的

  • 0.1如果求解器是ISDA(也就是说,您设置“规划求解”、“ISDA的

例子:“KernelOffset”,0

数据类型:|

标志来标准化预测器数据,指定为由逗号分隔的对组成“标准化”而且真正的1)或(0)

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

  • 软件的中心和规模每个预测变量(X资源描述)对应的加权列均值和标准差。关于加权标准化的详细信息,请参见算法.MATLAB没有对为分类预测器生成的虚拟变量列中包含的数据进行标准化。

  • 该软件使用标准化预测器训练分类器,但将非标准化预测器存储为分类器属性中的矩阵或表X

例子:“标准化”,真的

数据类型:逻辑

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

价值 描述
ISDA的 迭代单数据算法(见[30]
“L1QP” 使用quadprog(优化工具箱)来实现l利用二次规划实现软裕度最小化。此选项需要“优化工具箱”许可证。详情请参见二次规划定义(优化工具箱)
SMO的 顺序最小优化(参见[17]

默认值为ISDA的如果你设置“OutlierFraction”以正值为二班学习,且SMO的否则。

例子:“规划求解”、“ISDA的

alpha系数的初始估计,指定为逗号分隔的对,由“α”和一个非负值的数值向量。的长度α必须等于里面的行数X

  • 的每个元素“α”对应于X

  • “α”不能包含年代。

  • 如果你指定“α”和交叉验证名称-值对参数中的任何一个(“CrossVal”“CVPartition”“坚持”“KFold”,或“Leaveout”),则软件会返回一个错误。

如果Y的所有行,然后删除YX,“α”对应于缺失的值。也就是说,输入:

idx = ~isundefined(分类(Y));Y = Y(idx,:);X = X(idx,:);Alpha = Alpha (idx);
然后通过YX,α分别作为响应、预测因子和初始alpha估计值。

默认值为:

  • 0.5 * 1(大小(X, 1), 1)一节课学习

  • 0(大小(X, 1), 1)对于两节课的学习

例子:“阿尔法”,0.1 *(大小(X, 1), 1)

数据类型:|

缓存大小,由逗号分隔的对组成“CacheSize”而且“最大”或者一个正标量。

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

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

例子:“CacheSize”、“最大”

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

标记来剪辑alpha系数,指定为逗号分隔的对,由“ClipAlphas”,要么真正的

假设观测的系数jαj以及观察的方框约束jCjj= 1,…,n,在那里n是训练样本量。

价值 描述
真正的 在每次迭代中,如果αj是接近0还是接近Cj,然后MATLAB集αjTo 0或ToCj,分别。
MATLAB在优化过程中不改变alpha系数。

的最终值由MATLAB存储αα训练后的SVM模型对象的属性。

ClipAlphas会影响SMO和ISDA的收敛性。

例子:“ClipAlphas”,假的

数据类型:逻辑

ν参数看到下面成了一个学习,指定为逗号分隔的对,由“怒”一个正标量。ν必须大于0最多1

ν为了控制在确保大多数训练示例属于正类和最小化得分函数中的权重之间的权衡。

例子:“怒”,0.25

数据类型:|

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

如果你指定“详细”,1而且NumPrint, NumPrint,软件显示SMO和ISDA的所有优化诊断信息numprint在命令窗口中的迭代。

例子:“NumPrint”,500年

数据类型:|

训练数据中异常值的期望比例,指定为逗号分隔的对,由“OutlierFraction”和区间[0,1]中的数值标量。

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

  • 对于两课学习,软件实现强劲的学习.换句话说,软件试图删除100*outlierfraction优化算法收敛时观测值的%。被移除的观测值对应的是幅度较大的梯度。

  • 对于单类学习,软件会找到一个合适的偏差项outlierfraction训练集中所有的观察结果都是负的。

例子:“OutlierFraction”,0.01

数据类型:|

标记,以将重复观测值替换为训练数据中的单个观测值,指定为逗号分隔的对,由“RemoveDuplicates”而且真正的

如果RemoveDuplicates真正的,然后fitcsvm用相同值的单个观测值替换训练数据中的重复观测值。单个观测值的权重等于相应去除的重复项的权重之和(参见权重).

提示

如果您的数据集包含许多重复的观察,那么指定“RemoveDuplicates”,真的可以大大减少收敛时间。

数据类型:逻辑

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

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

价值 描述
0 软件不显示和保存收敛信息。
1 该软件显示诊断信息,并保存每个收敛条件numprint迭代,numprint名称-值对参数的值“NumPrint”
2 该软件在每次迭代中显示诊断信息并保存收敛条件。

例子:“详细”,1

数据类型:|

其他分类选择

全部折叠

类别预测符列表,指定为此表中的值之一。

价值 描述
正整数向量

向量中的每个条目都是一个索引值,对应于包含分类变量的预测器数据的列。索引值在1和之间p,在那里p用于训练模型的预测器的数量。

如果fitcsvm使用输入变量的子集作为预测器,然后函数仅使用该子集对预测器进行索引。的“CategoricalPredictors”值不计算响应变量、观察权重变量和函数不使用的任何其他变量。

逻辑向量

一个真正的条目意味着预测器数据的对应列是分类变量。向量的长度是p

字符矩阵 矩阵的每一行都是一个预测变量的名称。名称必须与中的条目匹配PredictorNames.用额外的空格填充名字,这样字符矩阵的每一行都有相同的长度。
字符向量的字符串数组或单元格数组 数组中的每个元素都是一个预测变量的名称。名称必须与中的条目匹配PredictorNames
“所有” 所有预测因素都是绝对的。

默认情况下,如果预测器数据在表(资源描述),fitcsvm如果一个变量是逻辑向量、分类向量、字符数组、字符串数组或字符向量的单元格数组,则假定该变量是分类的。如果预测器数据为矩阵(X),fitcsvm假设所有预测因子都是连续的。要将任何其他预测符标识为类别预测符,请使用“CategoricalPredictors”名称-值参数。

对于已识别的分类预测因子,fitcsvm使用两种不同的方案创建虚拟变量,具体取决于分类变量是无序的还是有序的。对于一个无序分类变量,fitcsvm为分类变量的每一层创建一个虚拟变量。对于有序分类变量,fitcsvm创建的虚拟变量比类别数少一个。详细信息请参见自动创建虚拟变量

例子:“CategoricalPredictors”、“所有”

数据类型:||逻辑|字符|字符串|细胞

用于训练的类名,指定为类别、字符或字符串数组;向量:逻辑或数字向量;或者是字符向量的单元格数组。一会必须具有与响应变量相同的数据类型资源描述Y

如果一会是字符数组,则每个元素必须对应数组中的一行。

使用一会:

  • 在培训期间指定课程的顺序。

  • 指定与类顺序对应的任何输入或输出参数维度的顺序。例如,使用一会指定…尺寸的顺序成本或返回的分类分数的列顺序预测

  • 选择用于培训的类的子集。例如,假设集合中所有不同的类名Y{' a ', ' b ', ' c '}.用课堂上的观察来训练模型“一个”而且“c”只是,指定“类名”,{' a ', ' c '}

的默认值一会响应变量中所有不同类名的集合在吗资源描述Y

例子:“类名”,{' b ', ' g '}

数据类型:分类|字符|字符串|逻辑|||细胞

错误分类代价指定为逗号分隔的对,由“成本”一个方阵或结构数组。

  • 如果你指定了方阵成本观察的真正类别是,然后成本(i, j)将一个点分类的成本是多少j.也就是说,行对应于真实的类,列对应于预测的类。的相应行和列的类顺序成本,也指定一会名称-值对参数。

  • 如果你指定了结构年代,那么它必须有两个字段:

    • S.ClassNames,其中包含类名作为与Y

    • S.ClassificationCosts,其中包含成本矩阵,其行和列的顺序为S.ClassNames

对于两类学习,如果你指定了一个成本矩阵,那么软件会通过合并成本矩阵中描述的惩罚来更新先验概率。因此,成本矩阵重置为默认值。的关系和算法行为的详细信息BoxConstraint成本之前标准化,权重,请参阅算法

默认值为:

  • 成本= 0一节课学习

  • 成本(i,j) = 1如果I ~= j而且Cost(i,j) = 0如果I = j对于两节课的学习

例子:“成本”,(0,1,2,0)

数据类型:||结构体

预测器变量名,指定为唯一名称的字符串数组或唯一字符向量的单元格数组。的功能PredictorNames这取决于你提供训练数据的方式。

  • 如果你提供X而且Y,那么你就可以使用了PredictorNames中预测变量的名称X

    • 里面名字的顺序PredictorNames必须对应的列顺序X.也就是说,PredictorNames {1}名字是X (: 1)PredictorNames {2}名字是X (:, 2)等等。同时,大小(X, 2)而且元素个数(PredictorNames)必须是相等的。

    • 默认情况下,PredictorNames{x1, x2,…}

  • 如果你提供资源描述,那么你就可以使用了PredictorNames选择在训练中使用哪些预测变量。也就是说,fitcsvm中仅使用预测变量PredictorNames以及训练中的响应变量。

    • PredictorNames的子集Tbl.Properties.VariableNames并且不能包括响应变量的名称。

    • 默认情况下,PredictorNames包含所有预测变量的名称。

    • 一个好的实践是使用其中一种来指定训练的预测器“PredictorNames”公式,但不是两者都有。

例子:PredictorNames,{‘SepalLength’,‘SepalWidth’,‘PetalLength’,‘PetalWidth}

数据类型:字符串|细胞

每个类的先验概率,由逗号分隔的对组成“之前”和这个表中的一个值。

价值 描述
“经验” 类先验概率是类的相对频率Y
“统一” 所有类先验概率都等于1/K,在那里K是类的数量。
数值向量 向量中的每个元素都是一个类先验概率。对元素进行排序Mdl。ClassNames或使用一会名称-值对参数。软件对要求和的元素进行规范化1
结构

一个结构年代有两个字段:

  • S.ClassNames作为相同类型的变量包含类名Y

  • S.ClassProbs包含相应先验概率的向量。该软件规范化向量的元素求和1

对于两类学习,如果你指定了一个成本矩阵,那么软件会通过合并成本矩阵中描述的惩罚来更新先验概率。的关系和算法行为的详细信息BoxConstraint成本之前标准化,权重,请参阅算法

例子:结构(“类名”,{{setosa,杂色的,‘virginica}}, ClassProbs, 1:3)

数据类型:字符|字符串|||结构体

响应变量名,指定为字符向量或字符串标量。

  • 如果你提供Y,那么你就可以使用了“ResponseName”为响应变量指定名称。

  • 如果你提供ResponseVarName公式,那么你就不能用了“ResponseName”

例子:“ResponseName”、“响应”

数据类型:字符|字符串

分数转换,指定为字符向量、字符串标量或函数句柄。

该表总结了可用的字符向量和字符串标量。

价值 描述
“doublelogit” 1 / (1 +e2x
“invlogit” 日志(x/ (1 -x))
“ismax” 将得分最大的类的得分设置为1,并将所有其他类的得分设置为0
分对数的 1 / (1 +e- - - - - -x
“没有”“身份” x(转换)
“标志” 1x< 0
为0x= 0
1x> 0
“对称” 2x- 1
“symmetricismax” 将得分最大的类的得分设置为1,并将所有其他类的得分设置为-1
“symmetriclogit” 2 / (1 +e- - - - - -x) - 1

对于MATLAB函数或您定义的函数,使用其函数句柄进行分数转换。函数句柄必须接受一个矩阵(原始分数)并返回一个相同大小的矩阵(转换后的分数)。

例子:“ScoreTransform”、“分对数的

数据类型:字符|字符串|function_handle

观察权重,由逗号分隔的对组成“重量”和一个正数值向量或变量的名称资源描述.软件对每一行的观察结果进行加权X资源描述中对应的值权重.的大小权重必须等于行数X资源描述

如果将输入数据指定为表资源描述,然后权重可以是变量名中的资源描述它包含一个数值向量。在这种情况下,您必须指定权重作为字符向量或字符串标量。例如,如果权重向量W存储为资源描述。W,然后指定为' W '.否则,软件处理的所有列资源描述,包括W,作为预测因子或训练模型时的响应变量。

默认情况下,权重(n, 1),在那里n观察的数量在吗X资源描述

软件规范化权重求和为各类的先验概率值。的关系和算法行为的详细信息BoxConstraint成本之前标准化,权重,请参阅算法

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

请注意

方法时,不能使用任何交叉验证名称-值对参数“OptimizeHyperparameters”名称-值对参数。您可以修改交叉验证“OptimizeHyperparameters”只有使用“HyperparameterOptimizationOptions”名称-值对参数。

交叉验证选择

全部折叠

标记来训练交叉验证的分类器,指定为逗号分隔的对,由“Crossval”而且“上”“关闭”

如果你指定“上”,然后该软件用10次折叠训练交叉验证的分类器。

方法重写此交叉验证设置CVPartition坚持KFold,或Leaveout名称-值对参数。在创建交叉验证模型时,一次只能使用一个交叉验证名称-值对参数。

或者,稍后通过传递进行交叉验证Mdlcrossval

例子:“Crossval”,“上”

交叉验证分区,指定为cvpartition创建的分区对象cvpartition.分区对象指定交叉验证的类型以及训练集和验证集的索引。

要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition坚持KFold,或Leaveout

例子:假设您创建一个随机分区,对500个观察结果进行5次交叉验证,使用cvp = cvpartition(500,'KFold',5).然后,您可以通过使用指定交叉验证的模型“CVPartition”,本量利

用于拒绝验证的数据的百分比,指定为范围(0,1)中的标量值。如果你指定‘坚持’,p,然后软件完成以下步骤:

  1. 随机选择并保留p * 100%的数据作为验证数据,并使用其余数据训练模型。

  2. 将紧凑的、训练过的模型存储在训练有素的交叉验证模型的属性。

要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition坚持KFold,或Leaveout

例子:“坚持”,0.1

数据类型:|

交叉验证模型中使用的折叠数,指定为大于1的正整数值。如果你指定KFold, k,然后软件完成以下步骤:

  1. 将数据随机划分为k集。

  2. 对于每个集合,保留该集合作为验证数据,并使用另一个集合训练模型k- 1集。

  3. 存储k紧凑,训练有素的模型k的-by-1单元格向量训练有素的交叉验证模型的属性。

要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition坚持KFold,或Leaveout

例子:“KFold”,5

数据类型:|

省略一个交叉验证标志,指定为“上”“关闭”.如果你指定“Leaveout”,“上”,然后对每个的n观察(n(不包括遗漏的观测数据)的观测数据数目是否已列明NumObservations属性的模型),软件完成这些步骤:

  1. 保留一个观察数据作为验证数据,并使用另一个数据训练模型n- 1次观察。

  2. 存储n紧凑,训练有素的模型在一个n的-by-1单元格向量训练有素的交叉验证模型的属性。

要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition坚持KFold,或Leaveout

例子:“Leaveout”,“上”

收敛控制选项

全部折叠

由顺序最小优化(SMO)或迭代单数据算法(ISDA)获得的上下违规者之间梯度差的容差,指定为由逗号分隔的对组成“DeltaGradientTolerance”一个非负标量。

如果DeltaGradientTolerance0,则软件不使用梯度差公差来检查优化收敛性。

默认值为:

  • 1 e - 3如果解算器是SMO(例如,您设置“规划求解”、“SMO的

  • 0如果求解器是ISDA(例如,您设置“规划求解”、“ISDA的

例子:依照“DeltaGradientTolerance”,1

数据类型:|

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

如果GapTolerance0,则软件不使用可行性间隙容差来检查优化收敛。

例子:依照“GapTolerance”,1

数据类型:|

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

不管优化例程是否成功收敛,软件都会返回一个训练好的模型。Mdl。C在vergenceInfo包含收敛信息。

例子:“IterationLimit”,1 e8

数据类型:|

Karush-Kuhn-Tucker (KKT)互补条件违规容忍度,指定为由逗号分隔的对组成“KKTTolerance”一个非负标量。

如果KKTTolerance0,则该软件不使用KKT互补条件的违规容忍度来检查优化收敛性。

默认值为:

  • 0如果解算器是SMO(例如,您设置“规划求解”、“SMO的

  • 1 e - 3如果求解器是ISDA(例如,您设置“规划求解”、“ISDA的

例子:依照“KKTTolerance”,1

数据类型:|

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

如果你设置“ShrinkagePeriod”,0,则软件不收缩活动集。

例子:“ShrinkagePeriod”,1000年

数据类型:|

超参数优化选项

全部折叠

参数进行优化,指定为由逗号分隔的对组成“OptimizeHyperparameters”其中一个价值观是:

  • “没有”-不要优化。

  • “汽车”——使用{“BoxConstraint”、“KernelScale”}

  • “所有”-优化所有符合条件的参数。

  • 符合条件的参数名的字符串数组或单元格数组。

  • 向量的optimizableVariable对象的输出hyperparameters

优化尝试最小化交叉验证损失(错误)fitcsvm通过改变参数。有关交叉验证损失的信息,请参阅分类损失.若要控制交叉验证类型和优化的其他方面,请使用HyperparameterOptimizationOptions名称-值对参数。

请注意

“OptimizeHyperparameters”值覆盖使用其他名称-值对参数设置的任何值。例如,设置“OptimizeHyperparameters”“汽车”导致“汽车”要应用的值。

符合条件的参数fitcsvm是:

  • BoxConstraint- - - - - -fitcsvm在正数值中搜索,默认情况下在范围内按对数缩放(1 e - 3, 1 e3)

  • KernelScale- - - - - -fitcsvm在正数值中搜索,默认情况下在范围内按对数缩放(1 e - 3, 1 e3)

  • KernelFunction- - - - - -fitcsvm搜索中“高斯”“线性”,多项式的

  • PolynomialOrder- - - - - -fitcsvm搜索范围内的整数(2、4)

  • 标准化- - - - - -fitcsvm搜索中“真正的”而且“假”

通过传递的向量来设置非默认参数optimizableVariable具有非默认值的对象。例如:

负载fisheririsParams =超参数(“fitcsvm”量,物种);参数(1)。Range = [1e-4,1e6];

通过参数个数作为价值OptimizeHyperparameters

默认情况下,在命令行上出现迭代显示,并根据优化中的超参数数量显示图形。对于优化和绘图,目标函数为Log(1 +交叉验证损失)用于回归和分类的误分类率。要控制迭代显示,请设置详细的字段“HyperparameterOptimizationOptions”名称-值对参数。为了控制情节,设置ShowPlots字段“HyperparameterOptimizationOptions”名称-值对参数。

有关示例,请参见优化SVM分类器

例子:“汽车”

用于优化的选项,指定为逗号分隔的对,由“HyperparameterOptimizationOptions”还有一个结构。的效果OptimizeHyperparameters名称-值对参数。结构中的所有字段都是可选的。

字段名 默认的
优化器
  • “bayesopt”-使用贝叶斯优化。在内部,此设置调用bayesopt

  • “gridsearch”-使用网格搜索NumGridDivisions每个维度的值。

  • “randomsearch”-在其中随机搜索MaxObjectiveEvaluations点。

“gridsearch”以随机顺序进行搜索,使用统一抽样而不从网格中替换。优化后,可以使用命令获取网格顺序的表sortrows (Mdl.HyperparameterOptimizationResults)

“bayesopt”
AcquisitionFunctionName

  • “expected-improvement-per-second-plus”

  • “expected-improvement”

  • “expected-improvement-plus”

  • “expected-improvement-per-second”

  • “lower-confidence-bound”

  • “probability-of-improvement”

名称包括的获取函数每秒不能产生可重复的结果,因为优化依赖于目标函数的运行时间。名称包括的获取函数+当他们过度开发一个区域时,修改他们的行为。详情请参见采集函数类型

“expected-improvement-per-second-plus”
MaxObjectiveEvaluations 目标函数求值的最大个数。 30.“bayesopt”“randomsearch”,而整个电网为“gridsearch”
MaxTime

时间限制,指定为正实数。时间限制以秒为单位,由抽搐而且toc.运行时可能超过MaxTime因为MaxTime不中断函数求值。

NumGridDivisions “gridsearch”,表示每个维度中值的数量。该值可以是一个正整数向量,给出每个维度的值的数量,也可以是一个适用于所有维度的标量。对于分类变量,该字段将被忽略。 10
ShowPlots 指示是否显示图的逻辑值。如果真正的,该字段根据迭代次数绘制最佳目标函数值。如果有一个或两个优化参数,如果优化器“bayesopt”,然后ShowPlots还绘制了目标函数对参数的模型。 真正的
SaveIntermediateResults 时是否保存结果的逻辑值优化器“bayesopt”.如果真正的,此字段将覆盖名为“BayesoptResults”在每次迭代中。变量是aBayesianOptimization对象。
详细的

显示到命令行。

  • 0-无迭代显示

  • 1-迭代显示

  • 2-带有额外信息的迭代显示

详细信息请参见bayesopt详细的名称-值对参数。

1
UseParallel 指示是否并行运行贝叶斯优化的逻辑值,这需要并行计算工具箱™。由于并行计时的不可再现性,并行贝叶斯优化不一定产生可再现的结果。详细信息请参见并行贝叶斯优化
重新分区

指示是否在每次迭代中重新划分交叉验证的逻辑值。如果,优化器使用单个分区进行优化。

真正的通常会给出最健壮的结果,因为此设置考虑了分区噪声。然而,为了获得好的结果,真正的需要至少两倍的函数求值。

使用以下三个字段名中的一个。
CVPartition 一个cvpartition对象创建的cvpartition “Kfold”,5如果您没有指定任何交叉验证字段
坚持 范围内的标量(0,1)表示抵抗分数。
Kfold 大于1的整数。

例子:“HyperparameterOptimizationOptions”、结构(MaxObjectiveEvaluations, 60)

数据类型:结构体

输出参数

全部折叠

训练过的SVM分类模型,返回为ClassificationSVM模型对象或ClassificationPartitionedModel交叉验证的模型对象。

如果您设置了任何名称-值对参数KFold坚持LeaveoutCrossVal,或CVPartition,然后Mdl是一个ClassificationPartitionedModel旨在分类器。否则,Mdl是一个ClassificationSVM分类器。

引用Mdl,使用点表示法。例如,输入Mdl。一个lpha在命令窗口中显示训练好的拉格朗日乘法器。

限制

  • fitcsvm训练支持向量机分类器用于单类或两类学习应用。要使用两个以上类别的数据训练SVM分类器,请使用fitcecoc

  • fitcsvm金宝app支持低维和中维数据集。对于高维数据集,使用fitclinear代替。

更多关于

全部折叠

箱约束

盒子约束是一个参数,它控制对违反边距的观测值施加的最大惩罚,这有助于防止过拟合(正则化)。

如果增加框约束,那么SVM分类器分配更少的支持向量。金宝app然而,增加框约束会导致更长的训练时间。

格拉姆矩阵

一组的克矩阵n向量{x1, . .xnxjRp}是一个n——- - - - - -n带有元素(jk)定义为Gxjxk) = <ϕxj),ϕxk)>,使用核函数转换的预测函数的内积ϕ

对于非线性支持向量机,算法使用预测器数据的行组成Gram矩阵X.对偶形式化代替了中观测值的内积X与生成的Gram矩阵的相应元素(称为“核技巧”)。因此,非线性支持向量机在转换后的预测器空间中寻找分离的超平面。

Karush-Kuhn-Tucker (KKT)互补条件

KKT互补条件是非线性规划最优解的优化约束条件。金宝搏官方网站

在SVM中,KKT互补条件为

α j y j f x j 1 + ξ j 0 ξ j C α j 0

对所有j= 1,…,n,在那里 f x j ϕ x j β + b ϕ是核函数(参见格拉姆矩阵),ξj是松弛变量。如果类是完全可分离的,那么ξj= 0j= 1,…,n

看到下面成了一个学习

单类学习,或无监督SVM,旨在将数据从高维预测器空间(而不是原始预测器空间)中分离出来,是一种用于离群值检测的算法。

的算法用于二元分类的支持向量机.目标是尽量减少双重表达

0.5 j k α j α k G x j x k

关于 α 1 ... α n ,以

α j n ν

而且 0 α j 1 对所有j= 1,…,n.的价值Gxjxk)位于元素(jk)的格拉姆矩阵

一个很小的值ν导致更少的支持向量,因此,一个金宝app平滑,粗糙的决策边界。很大的价值ν导致更多的支持向量,因此,一金宝app个弯曲的,灵活的决策边界。的最优值ν应该足够大以捕获数据复杂性,并且足够小以避免过度训练。同样,0 <ν≤1。

详情请参见[5]

金宝app支持向量

金宝app支持向量是与的严格正估计相对应的观测值α1、……αn

对给定训练集产生较少支持向量的SVM分类器是首选。金宝app

金宝app二元分类的支持向量机

SVM二元分类算法搜索一个最优超平面,将数据分为两类。对于可分离类,最优超平面使a保证金(不包含任何观测值的空间)围绕着自己,这就为正类和负类创造了边界。对于不可分割的类,目标是相同的,但算法对每一个在其类边界错误一侧的观察值施加了边缘长度的惩罚。

线性SVM得分函数为

f x x β + b

地点:

  • x观察值(是否对应于一行X).

  • 向量β包含定义超平面的正交向量的系数(对应于Mdl。β).对于可分离数据,最优边缘长度为 2 / β

  • b偏差项(对应于Mdl。偏见).

的根源fx)为特定系数定义一个超平面。对于一个特定的超平面,fz)为到点的距离z到超平面。

该算法搜索最大边缘长度,同时保持观测值为正(y= 1)和负(y= -1)类分离。

  • 对于可分离类,目标是最小化 β 关于β而且byjfxj)≥1,对于所有j= 1 . .n.这是原始的可分离类的形式化。

  • 对于不可分割的类,算法使用松弛变量(ξj),以惩罚目标函数的观测值,因为这些观测值跨越了它们类的边界。ξj= 0表示未跨越类的边缘边界的观察值,否则ξj≥0。

    目标是最小化 0.5 β 2 + C ξ j 关于βb,ξj y j f x j 1 ξ j 而且 ξ j 0 对所有j= 1 . .n,对于正标量箱约束C.这是不可分割类的原始形式化。

该算法采用拉格朗日乘子法对目标进行优化,其中介绍n系数α1、……αn(对应于Mdl。一个lpha).线性支持向量机的双重形式化如下:

  • 对于可分离类,最小化

    0.5 j 1 n k 1 n α j α k y j y k x j x k j 1 n α j

    关于α1、……αn,以 α j y j 0 αj所有≥0j= 1,…,n,Karush-Kuhn-Tucker (KKT)互补条件

  • 对于不可分割的类,除了附加条件外,目标与可分离类相同 0 α j C 对所有j= 1 . .n

得到的分数函数为

f x j 1 n α j y j x x j + b

b 估计的偏差和 α j j向量的估计 α j= 1,…,n.这样写,分数函数不需要估计β作为原始形式化的结果。

SVM算法对一个新的观测数据进行分类z使用 标志 f z

在某些情况下,一个非线性边界将类分开。非线性支持向量机在转换后的预测空间中寻找一个最优的分离超平面。

非线性支持向量机的对偶形式化是

0.5 j 1 n k 1 n α j α k y j y k G x j x k j 1 n α j

关于α1、……αn,以 α j y j 0 0 α j C 对所有j= 1 . .n, KKT互补条件。Gxkxj)的元素格拉姆矩阵.得到的分数函数为

f x j 1 n α j y j G x x j + b

详情请参见理解支持向量机金宝app[1],[3]

提示

  • 除非您的数据集很大,否则总是尝试标准化预测器(参见标准化).标准化使得预测因子对测量它们的尺度不敏感。

  • 方法进行交叉验证是一种很好的实践KFold名称-值对参数。交叉验证结果决定了SVM分类器的泛化效果。

  • 一节课学习:

    • 名称-值对参数的默认设置α会导致很长的训练时间。为加快训练速度,设置α到一个向量主要由0年代。

    • 设置名称-值对参数ν更接近的值0为了产生更少的支持向量,因此,金宝app一个更平滑但粗糙的决策边界。

  • 支持向量的稀疏性是支持向金宝app量分类器的理想特性。若要减少支持向量的数量,请设置金宝appBoxConstraint到一个较大的值。这个动作增加了训练时间。

  • 最佳训练时间,请设置CacheSize尽可能高的内存限制您的计算机允许。

  • 如果你期望的支持向量比训练集中的观察数据要少得多,金宝app那么你可以通过使用名值对参数缩小活动集来显著地加快收敛速度“ShrinkagePeriod”.指定是一个很好的实践“ShrinkagePeriod”,1000年

  • 远离决策边界的重复观测不影响收敛。然而,在决策边界附近出现的少数重复观测结果会大大减慢收敛速度。要加快收敛速度,请指定“RemoveDuplicates”,真的如果:

    • 你的数据集包含许多重复的观察结果。

    • 您怀疑一些重复的观察结果落在决策边界附近。

    为了在训练过程中维护原始数据集,fitcsvm必须临时存储单独的数据集:原始的和没有重复观测的数据集。因此,如果指定真正的对于包含很少重复的数据集,那么fitcsvm消耗的内存接近原始数据的两倍。

  • 在训练模型之后,您可以生成C/ c++代码来预测新数据的标签。生成C/ c++代码需要MATLAB编码器™.详细信息请参见代码生成简介

算法

  • 支持向量机二元分类算法的数学公式请参见金宝app二元分类的支持向量机而且理解支持向量机金宝app

  • <定义>,空字符向量(,空字符串(""),< >失踪值表示缺少的值。fitcsvm删除与缺失响应对应的整行数据。当计算总权重时(见下一个项目),fitcsvm忽略与至少一个缺失预测器的观测结果对应的任何权重。这种行为会导致平衡类问题中的不平衡先验概率。因此,观察框的约束可能不相等BoxConstraint

  • fitcsvm删除具有零权重或先验概率的观测值。

  • 对于两类学习,如果你指定代价矩阵 C (见成本),然后软件更新类先验概率p(见之前)pc中所述的惩罚 C

    具体地说,fitcsvm完成以下步骤:

    1. 计算 p c p C

    2. 正常化pc所以更新后的先验概率和为1。

      p c 1 j 1 K p c j p c

      K是类的数量。

    3. 将成本矩阵重置为默认值

      C 0 1 1 0

    4. 从训练数据中移除对应于零先验概率类的观测值。

  • 对于两节课的学习,fitcsvm将所有观测权重归一化(参见权重)求和为1。然后,该函数将规范化的权重重新归一化,使其总和为观测值所属类的更新先验概率。也就是观察的总权重j在课堂上k

    w j w j j k w j p c k

    wj是否采用归一化权重进行观察jpck类的先验概率更新了吗k(见前一个项目)。

  • 对于两节课的学习,fitcsvm为训练数据中的每个观察分配一个框约束。观测框约束的公式j

    C j n C 0 w j

    n是训练样本量,C0初始框约束(参见“BoxConstraint”名称-值对参数),和 w j 观察的总权重是多少j(见前一个项目)。

  • 如果你设置“标准化”,真的“成本”“之前”,或“重量”名称-值对参数fitcsvm使用相应的加权均值和加权标准差对预测因子进行标准化。也就是说,fitcsvm标准化预测jxj)使用

    x j x j μ j σ j

    μ j 1 k w k k w k x j k

    xjk是观察k(行)预测器j(列)。

    σ j 2 v 1 v 1 2 v 2 k w k x j k μ j 2

    v 1 j w j

    v 2 j w j 2

  • 假设p你在训练数据中期望的异常值的比例,和你设定的异常值的比例是多少OutlierFraction, p

    • 对于单类学习,软件将偏差项训练为100p训练数据中有%的观察值为负。

    • 软件实现强劲的学习两节课的学习。换句话说,软件试图删除100个p优化算法收敛时观测值的%。被移除的观测值对应的是幅度较大的梯度。

  • 如果你的预测数据包含分类变量,那么软件通常对这些变量使用全虚拟编码。该软件为每个分类变量的每个级别创建一个虚拟变量。

    • PredictorNames属性为每个原始预测器变量名存储一个元素。例如,假设有三个预测因子,其中一个是具有三个层次的分类变量。然后PredictorNames是包含预测变量的原始名称的字符向量的1 × 3单元格数组。

    • ExpandedPredictorNames属性为每个预测变量(包括虚拟变量)存储一个元素。例如,假设有三个预测因子,其中一个是具有三个层次的分类变量。然后ExpandedPredictorNames是包含预测变量和新虚拟变量名称的字符向量的1 × 5单元格数组。

    • 类似地,β属性为每个预测器存储一个beta系数,包括虚拟变量。

    • 金宝appSupportVectors属性存储支持向量(包括虚拟变量)的预测器值。金宝app例如,假设有金宝app支持向量和三个预测因子,其中一个是三级分类变量。然后金宝appSupportVectors是一个n5矩阵。

    • X属性将训练数据存储为原始输入,不包括虚拟变量。当输入是一个表时,X仅包含用作预测器的列。

  • 对于表中指定的预测器,如果任何变量包含有序(序数)类别,软件将对这些变量使用序数编码。

    • 对于一个变量k软件创建有序的关卡k- 1虚拟变量。的j虚变量为1以下级别j,+1的水平j+ 1通过k

    • 对象中存储的虚拟变量的名称ExpandedPredictorNames属性用值指示第一级+1.软件商店k- 1虚拟变量的其他预测器名称,包括级别2、3、…k

  • 所有求解器实现l1 .软边际最小化。

  • 对于单类学习,该软件估计拉格朗日乘数,α1、……αn,以致于

    j 1 n α j n ν

参考文献

[1]克里斯汀尼,N.和J. C.肖-泰勒。支持向量机和其他基于核的学习方法简介金宝app.英国剑桥:剑桥大学出版社,2000年。

[2]范,r.e。,林志信。陈和c - j。林。“使用二阶信息训练支持向量机的工作集选择。”金宝app机器学习研究杂志, Vol. 6, 2005, pp. 1889-1918。

哈斯蒂、T.、R.蒂布谢拉尼和J.弗里德曼。统计学习的要素,第二版。纽约:施普林格,2008。

[4]凯克曼V. -M。黄和M.沃格特。从庞大数据集训练核心机器的迭代单数据算法:理论和性能。金宝app支持向量机:理论与应用.王立波编辑,255-274。柏林:斯普林格出版社,2005年。

[5]肖科普夫,B. J. C.普拉特,J. C.肖-泰勒,A. J.斯莫拉和R. C.威廉姆森。“估算高维分布的支持度”金宝app神经第一版,卷13,第7号,2001,第1443-1471页。

[6]肖科普夫,B.和A.斯莫拉。核学习:支持向量机,正则化,优化及超越,自适应金宝app计算和机器学习.马萨诸塞州剑桥:麻省理工学院出版社,2002年。

扩展功能

在R2014a中引入