fitcsvm
训练支持向量机(SVM)分类器的单类和二元分类
语法
描述
fitcsvm
在低维或中维预测器数据集上训练或交叉验证支持向量机(SVM)模型,用于单类和两类(二进制)分类。fitcsvm
支持使用核函数映射预测器数据,支持顺序最小优化(SMO),迭代单数据算法(ISDA),或l1利用二次规划实现目标函数最小化的软裕度最小化。
训练线性支持向量机模型对高维数据集,即包含许多预测变量的数据集进行二元分类,使用fitclinear
代替。
对于组合二进制支持向量机模型的多类学习,使用错误校正输出码(ECOC)。有关更多细节,请参见fitcecoc
.
要训练支持向量机回归模型,请参见fitrsvm
对于低维和中维预测器数据集,或fitrlinear
对于高维数据集。
返回一个支持向量机(SVM)分类器Mdl
= fitcsvm (资源描述
,ResponseVarName
)Mdl
使用表中包含的样例数据进行训练资源描述
.ResponseVarName
变量的名称是否在资源描述
它包含单类或双类分类的类标签。
如果类标签变量只包含一个类(例如,一个由1组成的向量),fitcsvm
训练一个单类分类的模型。否则,该函数训练一个用于两类分类的模型。
例子
训练支持向量机分类器
载入费雪的虹膜数据集。去除萼片的长度和宽度和所有观察到的濑花虹膜。
负载fisheriris第1 = ~ strcmp(物种,“setosa”);X =量(第1 3:4);y =物种(第1);
使用处理过的数据集训练SVM分类器。
SVMModel = 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] IsSupportVector: [100x1 logical] Solver: 'SMO' Properties, Methods
SVMModel
是一个培训ClassificationSVM
分类器。显示属性SVMModel
.例如,要确定类顺序,可以使用点表示法。
classOrder = SVMModel。一会
classOrder =2 x1细胞{“癣”}{' virginica '}
第一节课(“多色的”
)为负类,第二类(“virginica”
)是积极的阶级。方法可以在训练期间更改类顺序“类名”
名称-值对的论点。
绘制数据的散点图并圈出支持向量。
sv = SVMModel.SupportVectors;图gscatter (X (: 1), (:, 2), y)在情节(sv (: 1), sv (:, 2),“柯”,“MarkerSize”10)传说(“多色的”,“virginica”,“支持向量”)举行从
支持向量是发生在估计类边界或超出估计类边界的观察值。
方法在训练期间设置框约束,可以调整边界(以及支持向量的数量)“BoxConstraint”
名称-值对的论点。
训练和交叉验证SVM分类器
加载电离层
数据集。
负载电离层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 =量(:,1:2);y = 1(大小(X, 1), 1);
使用修改后的数据集训练SVM分类器。假设5%的观测值是异常值。规范预测。
rng (1);SVMModel = fitcsvm (X, y,“KernelScale”,“汽车”,“标准化”,真的,...“OutlierFraction”, 0.05);
SVMModel
是一个培训ClassificationSVM
分类器。默认情况下,软件使用高斯内核进行单类学习。
绘制观察结果和决策边界。标记支持向量和潜在异常值。
svInd = SVMModel.IsSupportVector;h = 0.02;%网格步长(X1, X2) = meshgrid (min (X (: 1)): h:马克斯(X (: 1))...min (X (:, 2)): h:马克斯(X (:, 2)));[~,分数]=预测(SVMModel (X1 (:), X2 (:)));scoreGrid =重塑(得分,大小(X1, 1),大小(X2, 2));图绘制(X (: 1), (:, 2),“k”。)举行在情节(X (svInd, 1), X (svInd, 2),“罗”,“MarkerSize”, 10)轮廓(X1, X2, scoreGrid) colorbar;标题({\bf基于单类支持向量机的虹膜离群值检测})包含(“花萼长度(厘米)”) ylabel (萼片宽(cm)的)传说(“观察”,“支持向量”)举行从
将异常值与其余数据分隔开的边界出现在轮廓值所在的位置0
.
验证交叉验证数据中阴性分数的观测值的比例接近5%。
CVSVMModel = crossval (SVMModel);[~, scorePred] = kfoldPredict (CVSVMModel);outlierRate =意味着(scorePred < 0)
outlierRate = 0.0467
利用二值支持向量机寻找多个类边界
创建一个散点图fisheriris
数据集。将图中网格的坐标视为来自数据集分布的新观察值,并通过将坐标分配给数据集中的三个类中的一个来查找类边界。
载入费雪的虹膜数据集。用花瓣的长度和宽度作为预测因子。
负载fisheririsX =量(:,3:4);Y =物种;
检查数据的散点图。
图gscatter (X (: 1), (:, 2), Y);甘氨胆酸h =;lims = [h。Xl我米h.YLim];提取x轴和y轴的限制标题('{\bf虹膜测量散点图}');包含(“花瓣长度(厘米)”);ylabel (“花瓣宽度(cm)”);传奇(“位置”,“西北”);
该数据包含三类,其中一类是线性可分的。
为每一个类:
创建一个逻辑向量(
indx
)表示观察结果是否属于该类。使用预测器数据和训练支持向量机分类器
indx
.将分类器存储在单元格数组的单元格中。
定义类顺序。
SVMModels =细胞(3,1);类=独特(Y);rng (1);%的再现性为j = 1:numel(classes) indx = 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 =大小(xGrid, 1);成绩= 0 (N,元素个数(类));为j = 1:numel(classes) [~,score] = predict(svm模型{j},xGrid);分数(:,j) =分数(:,2);%第二列包含积极的班级分数结束
每一行的分数
包含三个分数。得分最大的元素的索引是新类观察最有可能属于的类的索引。
将每个新的观察结果与给出最高分的分类器关联起来。
[~, maxScore] = max(分数,[],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 (6) = gscatter (X (: 1), (:, 2), Y);标题('{\bf虹膜分类区域}');包含(“花瓣长度(厘米)”);ylabel (“花瓣宽度(cm)”);传奇(h, {“setosa地区”,“杂色的地区”,“virginica地区”,...“观察setosa”,的观察到的多色的,“观察virginica”},...“位置”,“西北”);轴紧持有从
优化支持向量机分类器
自动优化超参数使用fitcsvm
.
加载电离层
数据集。
负载电离层
通过使用自动超参数优化找到最小化五倍交叉验证损失的超参数。为了再现性,设置随机种子并使用“expected-improvement-plus”
采集功能。
rng默认的Mdl = fitcsvm (X, Y,“OptimizeHyperparameters”,“汽车”,...“HyperparameterOptimizationOptions”结构(“AcquisitionFunctionName”,...“expected-improvement-plus”))
|=====================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | BoxConstraint | KernelScale | | |结果| |运行时| | (estim(观察) .) | | | |=====================================================================================================| | 最好1 | | 0.25926 | 15.183 | 0.25926 | 0.25926 | 64.836 | 0.0015729 | | 2 |接受| 0.35897 | 0.12264 | 0.25926 | 0.26547 | 0.036335 | 5.5755最好| | 3 | | 0.13105 | 5.8396 | 0.13105 | 0.14588 | 0.0022147 | 0.0023957 | | 4 |接受| 0.35897 | 0.23652 | 0.13105 | 0.13108 | 5.1259 | 98.62 | | 5 |接受| 0.1339 | 11.983 | 0.13105 | 0.1311 | 0.0011147 | 0.0010089 | | 6 |接受| 0.13105 | 4.9283 | 0.13105 | 0.13106 | 0.0010151 | 0.0045756 | | 7最好| | 0.12821 | 7.4494 | 0.12821 | 0.12824 | 0.0010563 | 0.0022307 | | |接受8 | 0.1339 | 9.6109 | 0.12821 | 0.13025 | 0.0010113 | 0.0026572 | | | 9日接受| 0.12821 | 5.5182 | 0.12821 |0.12981 | 0.0010934 | 0.0022461 | | 10 | Accept | 0.12821 | 5.5356 | 0.12821 | 0.12951 | 0.0010315 | 0.0023551 | | 11 | Accept | 0.13675 | 12.571 | 0.12821 | 0.13003 | 965.35 | 0.41142 | | 12 | Accept | 0.35897 | 0.25531 | 0.12821 | 0.12951 | 468.37 | 750.25 | | 13 | Accept | 0.19088 | 14.973 | 0.12821 | 0.12949 | 967.14 | 0.10698 | | 14 | Accept | 0.1339 | 4.6223 | 0.12821 | 0.12952 | 987.97 | 1.509 | | 15 | Accept | 0.12821 | 5.2381 | 0.12821 | 0.12953 | 152.54 | 0.66927 | | 16 | Accept | 0.1339 | 0.96455 | 0.12821 | 0.12969 | 0.079463 | 0.02889 | | 17 | Accept | 0.12821 | 2.3474 | 0.12821 | 0.12979 | 0.019736 | 0.0093692 | | 18 | Accept | 0.14245 | 0.3213 | 0.12821 | 0.12966 | 0.006421 | 0.017524 | | 19 | Accept | 0.1339 | 7.5767 | 0.12821 | 0.12966 | 0.13148 | 0.01135 | | 20 | Accept | 0.12821 | 1.6922 | 0.12821 | 0.12969 | 4.7977 | 0.16025 | |=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | BoxConstraint| KernelScale | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 21 | Accept | 0.12821 | 3.1557 | 0.12821 | 0.12969 | 33.166 | 0.3481 | | 22 | Accept | 0.1339 | 4.7595 | 0.12821 | 0.12953 | 0.0092066 | 0.0044777 | | 23 | Accept | 0.12821 | 4.4227 | 0.12821 | 0.12954 | 1.4193 | 0.069246 | | 24 | Accept | 0.1339 | 5.1875 | 0.12821 | 0.12959 | 202.78 | 0.60371 | | 25 | Accept | 0.13105 | 1.246 | 0.12821 | 0.12959 | 2.9285 | 0.13117 | | 26 | Accept | 0.12821 | 3.2481 | 0.12821 | 0.12957 | 17.832 | 0.26308 | | 27 | Accept | 0.12821 | 3.8866 | 0.12821 | 0.1285 | 15.37 | 0.23218 | | 28 | Accept | 0.12821 | 2.998 | 0.12821 | 0.1284 | 14.943 | 0.24095 | | 29 | Accept | 0.13105 | 5.5507 | 0.12821 | 0.12839 | 0.75691 | 0.043713 | | 30 | Accept | 0.12821 | 1.8017 | 0.12821 | 0.12833 | 14.652 | 0.27296 |
__________________________________________________________ 优化完成。最大目标:达到30。总功能评估:30总运行时间:176.0028秒总目标功能评估时间:153.2264最佳观测可行点:BoxConstraint KernelScale _____________ ___________ 0.0010563 0.0022307观测目标函数值= 0.12821估计目标函数值= 0.12958函数评估时间= 7.4494最佳估计可行点(根据模型):BoxConstraint KernelScale _____________ ___________ 17.832 0.26308估计的目标函数值= 0.12833估计的函数评估时间= 2.8552
Mdl = ClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 HyperparameterOptimizationResults: [1x1 BayesianOptimization] Alpha: [71x1 double] Bias: -20.5240 KernelParameters: [1x1 struct] BoxConstraints: [351x1 double] ConvergenceInfo: [1x1 struct] IsSupportVector: [351x1 logical] Solver: 'SMO' Properties, Methods
输入参数
资源描述
- - - - - -样本数据
表格
用于训练模型的样例数据,指定为表。每一行的资源描述
对应一个观察结果,每一列对应一个预测变量。不允许多列变量和字符向量的单元格数组以外的单元格数组。
可选地,资源描述
可以包含响应变量的一列和观察权重的一列。
响应变量必须是类别、字符或字符串数组、逻辑或数字向量,或者字符向量的单元格数组。
权重的列必须是一个数字向量。
您必须在中指定响应变量
资源描述
通过使用ResponseVarName
或公式
并指定观察权重资源描述
通过使用权重
.使用指定响应变量
ResponseVarName
- - - - - -fitcsvm
使用剩下的变量作为预测器。中剩余变量的一个子集资源描述
作为预测器,使用指定预测器变量PredictorNames
.通过使用定义模型规范
公式
- - - - - -fitcsvm
中的变量的子集资源描述
作为预测变量和响应变量,如公式
.
如果资源描述
不包含响应变量,则使用Y
.响应变量的长度Y
的行数资源描述
必须是相等的。中变量的子集资源描述
作为预测器,使用指定预测器变量PredictorNames
.
数据类型:表格
公式
- - - - - -响应变量和预测变量子集的解释模型
特征向量|字符串标量
响应变量和预测变量子集的解释模型,在形式中指定为字符向量或字符串标量“Y ~ x1 + x2 + x3”
.在这种形式,Y
表示响应变量,和x1
,x2
,x3
表示预测变量。
中指定变量的子集资源描述
使用公式作为训练模型的预测因子。如果您指定了一个公式,那么该软件将不使用任何变量资源描述
没有出现在公式
.
公式中的变量名必须是资源描述
(Tbl.Properties.VariableNames
)和有效的MATLAB®标识符。中的变量名可以进行验证资源描述
通过使用isvarname
函数。如果变量名无效,则可以使用matlab.lang.makeValidName
函数。
数据类型:字符
|字符串
X
- - - - - -预测数据
数值矩阵
支持向量机分类器训练的预测器数据,指定为数值矩阵。
每一行的X
对应一个观察结果(也称为实例或示例),每一列对应一个预测器(也称为特征)。
的长度Y
的行数X
必须是相等的。
以预测符的出现顺序指定它们的名称X
,可以使用“PredictorNames”
名称-值对的论点。
数据类型:双
|单
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:fitcsvm (X, Y, KFold, 10日,“成本”,[0 2;1 0],“ScoreTransform”、“标志”)
执行10倍交叉验证,对假阳性和假阴性施加双倍的惩罚,并使用符号函数转换分数。
KernelFunction
- - - - - -核函数
“线性”
|“高斯”
|“rbf”
|多项式的
|函数名
核函数用来计算元素的格拉姆矩阵,指定为逗号分隔的对,由“KernelFunction”
和一个核函数名。假设G(xj,xk)是元素(j,k),其中xj而且xk是p表示观察结果的-维向量j而且k在X
.该表描述了支持的内核函数名称及其函数形式。
内核函数名 | 描述 | 公式 |
---|---|---|
“高斯” 或“rbf” |
高斯或径向基函数(RBF)核,默认用于单类学习 |
|
“线性” |
线性内核,默认为两类学习 |
|
多项式的 |
多项式的内核。使用“PolynomialOrder”, 指定一个多项式的有序核问 . |
|
你可以设置你自己的核函数,例如,内核
,通过设置“KernelFunction”、“内核”
.的值内核
必须有这个表格。
函数G =内核(U, V)
U
是一个米——- - - - - -p矩阵。列对应预测变量,行对应观察结果。V
是一个n——- - - - - -p矩阵。列对应预测变量,行对应观察结果。G
是一个米——- - - - - -n格拉姆矩阵一排排的U
而且V
.
kernel.m
必须在MATLAB路径上。
避免为内核函数使用泛型名是一个很好的实践。例如,调用sigmoid核函数“mysigmoid”
而不是“乙状结肠”
.
例子:“KernelFunction”、“高斯”
数据类型:字符
|字符串
KernelScale
- - - - - -内核尺度参数
1
(默认)|“汽车”
|积极的标量
内核比例参数,指定为逗号分隔的对,由“KernelScale”
而且“汽车”
或者一个正的标量。该软件对预测矩阵的所有元素进行除法X
的值KernelScale
.然后,应用相应的核范数计算Gram矩阵。
如果您指定
“汽车”
,然后软件采用启发式程序选择一个合适的比例因子。这种启发式过程使用子抽样,因此每次调用的估计值可能不同。因此,为了再现结果,设置一个随机数种子使用rng
前培训。如果您指定
KernelScale
举个例子,你的核函数,“KernelFunction”、“内核”
,那么软件就会抛出一个错误。你必须应用内部缩放内核
.
例子:“KernelScale”、“汽车”
数据类型:双
|单
|字符
|字符串
PolynomialOrder
- - - - - -多项式核函数阶
3.
(默认)|正整数
多项式核函数的顺序,指定为逗号分隔的对,由“PolynomialOrder”
一个正整数。
如果你设置“PolynomialOrder”
而且KernelFunction
不是多项式的
,那么软件就会抛出一个错误。
例子:“PolynomialOrder”,2
数据类型:双
|单
KernelOffset
- - - - - -内核偏移参数
负的标量
内核偏移量参数,指定为逗号分隔的对,由“KernelOffset”
一个非负的标量。
软件增加了KernelOffset
Gram矩阵的每个元素。
默认值是:
0
如果求解器是SMO(也就是说,您设置“规划求解”、“SMO的
)0.1
如果求解器是ISDA(也就是说,您设置“规划求解”、“ISDA的
)
例子:“KernelOffset”,0
数据类型:双
|单
α
- - - - - -系数的初始估计
非负值的数值向量
系数的初始估计值,用逗号分隔的对表示“α”
和非负值的数值向量。的长度α
必须等于的行数X
.
的每个元素
“α”
中的一个观察结果X
.“α”
不能包含任何南
年代。如果您指定
“α”
和交叉验证名值对参数中的任何一个(“CrossVal”
,“CVPartition”
,“坚持”
,“KFold”
,或“Leaveout”
),然后软件返回一个错误。
如果Y
的所有行,然后删除Y
,X
,“α”
对应于缺失的值。也就是说,输入:
idx = ~ isundefined(分类(Y));: Y = Y (idx);X = X (idx:);α=α(idx);
Y
,X
,α
分别为响应、预测量和初始估计值。
默认值为:
0.5 * 1(大小(X, 1), 1)
看到下面成了一个学习0(大小(X, 1), 1)
两级学习
例子:“阿尔法”,0.1 *(大小(X, 1), 1)
数据类型:双
|单
CacheSize
- - - - - -缓存大小
1000
(默认)|“最大”
|积极的标量
缓存大小,指定为逗号分隔的对,由“CacheSize”
而且“最大”
或者一个正的标量。
如果CacheSize
是“最大”
,那么软件就会保留足够的内存来保存整个n——- - - - - -n格拉姆矩阵.
如果CacheSize
是一个正的标量,那么软件储备呢CacheSize
兆字节的内存用于训练模型。
例子:“CacheSize”、“最大”
数据类型:双
|单
|字符
|字符串
ClipAlphas
- - - - - -标记来剪辑alpha系数
真正的
(默认)|假
标记来剪辑alpha系数,指定为逗号分隔的对,由“ClipAlphas”
,要么真正的
或假
.
假设观察的系数j是αj观察的盒子约束j是Cj,j= 1,…,n,在那里n是训练样本量。
价值 | 描述 |
---|---|
真正的 |
在每次迭代中,如果αj是接近0还是接近Cj,然后MATLAB集αj到0或到Cj,分别。 |
假 |
MATLAB在优化过程中不改变alpha系数。 |
的最终值α在α
属性。
ClipAlphas
会影响SMO和ISDA的收敛。
例子:“ClipAlphas”,假的
数据类型:逻辑
ν
- - - - - -ν单类学习参数
0.5
(默认)|积极的标量
ν参数看到下面成了一个学习,指定为逗号分隔的对,由“怒”
一个正的标量。ν
必须大于0
在大多数1
.
集ν
在确保大多数训练样本在正类和最小化得分函数中的权重之间控制权衡。
例子:“怒”,0.25
数据类型:双
|单
NumPrint
- - - - - -优化诊断消息输出之间的迭代次数
1000
(默认)|非负整数
优化诊断消息输出之间的迭代次数,指定为逗号分隔的对,由“NumPrint”
和一个非负整数。
如果您指定“详细”,1
而且NumPrint, NumPrint
,则软件将显示来自SMO和ISDA的所有优化诊断信息numprint
命令窗口中的迭代。
例子:“NumPrint”,500年
数据类型:双
|单
OutlierFraction
- - - - - -训练数据中异常值的预期比例
0
(默认)|区间[0,1)中的数值标量
训练数据中异常值的期望比例,指定为逗号分隔的对,由“OutlierFraction”
和区间[0,1)中的数值标量。
假设你设OutlierFraction, OutlierFraction
,在那里outlierfraction
大于0的值。
对于两类学习,软件实现强劲的学习.换句话说,该软件试图删除100*
outlierfraction
优化算法收敛时观测值的%。被删除的观测值对应于量级较大的梯度。对于单类学习,软件会找到一个合适的偏差项,如
outlierfraction
训练集中的观察结果都是负的。
例子:“OutlierFraction”,0.01
数据类型:双
|单
RemoveDuplicates
- - - - - -标记以用单个观察值替换重复的观察值
假
(默认)|真正的
标记来用训练数据中的单个观察值替换重复的观察值,指定为逗号分隔的对,由“RemoveDuplicates”
而且真正的
或假
.
如果RemoveDuplicates
是真正的
,然后fitcsvm
用相同值的单个观察值替换训练数据中的重复观察值。单个观测值的权重等于相应删除的重复数据的权重之和权重
).
提示
如果您的数据集包含许多重复的观察结果,那么指定“RemoveDuplicates”,真的
可以大大缩短收敛时间。
数据类型:逻辑
详细的
- - - - - -冗长的水平
0
(默认)|1
|2
冗长级别,指定为逗号分隔的对,由“详细”
而且0
,1
,或2
.的价值详细的
控制软件在命令窗口中显示的优化信息的数量,并将信息作为结构保存到Mdl.ConvergenceInfo.History
.
此表总结了可用的冗长级别选项。
价值 | 描述 |
---|---|
0 |
软件不显示和保存收敛信息。 |
1 |
软件显示诊断信息,并保存每天的收敛条件numprint 迭代,numprint 名称-值对参数的值“NumPrint” . |
2 |
软件在每次迭代时显示诊断信息并保存收敛条件。 |
例子:“详细”,1
数据类型:双
|单
CategoricalPredictors
- - - - - -分类预测列表
正整数向量|逻辑向量|字符矩阵|字符串数组|字符向量的单元格数组|“所有”
类别预测器列表,指定为此表中的值之一。
价值 | 描述 |
---|---|
正整数向量 | 向量中的每个条目都是一个索引值,指示对应的预测器是分类的。索引值在1和之间 如果 |
逻辑向量 | 一个 |
字符矩阵 | 矩阵的每一行都是一个预测变量的名称。中的条目名称必须匹配PredictorNames .用额外的空格填充名字,这样字符矩阵的每一行都有相同的长度。 |
字符向量的字符串数组或单元格数组 | 数组中的每个元素都是一个预测变量的名称。中的条目名称必须匹配PredictorNames . |
“所有” |
所有的预测都是绝对的。 |
默认情况下,如果预测器数据在表中(资源描述
),fitcsvm
如果变量是逻辑向量、分类向量、字符数组、字符串数组或字符向量的单元格数组,则假定该变量是分类的。如果预测器数据是一个矩阵(X
),fitcsvm
假设所有的预测器都是连续的。要将任何其他预测器标识为类别预测器,请使用CategoricalPredictors
名称-值参数。
对于已识别的类别预测因子,fitcsvm
使用两种不同的方案创建虚拟变量,具体取决于类别变量是无序的还是有序的。对于无序类别变量,fitcsvm
为分类变量的每一级创建一个虚拟变量。对于有序分类变量,fitcsvm
创建的虚拟变量比类别的数量少一个。有关详细信息,请参见虚拟变量的自动创建.
例子:“CategoricalPredictors”、“所有”
数据类型:单
|双
|逻辑
|字符
|字符串
|细胞
一会
- - - - - -用于两类学习的类的名称
分类数组|字符数组|字符串数组|逻辑向量|数值向量|字符向量的单元格数组
用于两类学习的类名,指定为类别、字符或字符串数组;逻辑向量:逻辑或数字向量;或者字符向量的单元格数组。一会
必须具有与响应变量相同的数据类型资源描述
或Y
.
如果一会
是字符数组,则每个元素必须对应于数组的一行。
使用一会
:
在培训期间指定类的顺序。
指定与类顺序对应的任何输入或输出参数维度的顺序。例如,使用
一会
指定…尺寸的顺序成本
返回的分类分数的列顺序预测
.选择培训类的一个子集。例如,假设所有不同的类名的集合
Y
是(“a”、“b”、“c”)
.使用类的观察来训练模型“一个”
而且“c”
只是,指定“类名”,(“a”、“c”)
.
的默认值。一会
响应变量中所有不同的类名的集合是否在资源描述
或Y
.
这个论点只适用于两类学习。
例子:“类名”,(“b”,“g”)
数据类型:分类
|字符
|字符串
|逻辑
|单
|双
|细胞
成本
- - - - - -两类学习的错误分类代价
[0 1;1 0]
(默认)|方阵|结构数组
两类学习的错误分类代价,指定为逗号分隔的对,由“成本”
和一个方阵或结构数组。
如果您指定了一个成本矩阵,那么该软件将通过合并用于训练的成本矩阵中描述的惩罚来更新先验概率,并将用户指定的值存储在成本
属性。的关系和算法行为的详细信息BoxConstraint
,成本
,之前
,标准化
,权重
,请参阅算法.
这个论点只适用于两类学习。
例子:“成本”,(0,1,2,0)
数据类型:双
|单
|结构体
PredictorNames
- - - - - -预测变量的名字
唯一名称的字符串数组|唯一字符向量的单元格数组
预测器变量名,指定为惟一名称的字符串数组或惟一字符向量的单元格数组。的功能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 . |
结构 | 一个结构
|
如果你指定了一个成本矩阵,那么软件就会通过合并训练成本矩阵中描述的惩罚来更新先验概率。该软件将用户指定的先验概率存储在之前
将求和的概率归一化后,训练过的模型对象的属性1
.的关系和算法行为的详细信息BoxConstraint
,成本
,之前
,标准化
,权重
,请参阅算法.
这个论点只适用于两类学习。
例子:结构(“类名”,{{setosa,杂色的,‘virginica}}, ClassProbs, 1:3)
数据类型:字符
|字符串
|双
|单
|结构体
ResponseName
- - - - - -响应变量名
“Y”
(默认)|特征向量|字符串标量
响应变量名,指定为字符向量或字符串标量。
如果你提供
Y
,然后你可以使用ResponseName
为响应变量指定名称。如果你提供
ResponseVarName
或公式
,那么你就不能使用ResponseName
.
例子:“ResponseName”、“反应”
数据类型:字符
|字符串
ScoreTransform
- - - - - -分数转换
“没有”
(默认)|“doublelogit”
|“invlogit”
|“ismax”
|“分对数”
|函数处理|……
分数转换,指定为字符向量、字符串标量或函数句柄。
这个表总结了可用的字符向量和字符串标量。
价值 | 描述 |
---|---|
“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”
名称-值参数。
CVPartition
- - - - - -交叉验证分区
[]
(默认)|cvpartition
分区对象
交叉验证分区,指定为cvpartition
创建的分区对象cvpartition
.分区对象指定交叉验证的类型以及训练集和验证集的索引。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:假设您创建一个随机分区,对500个观察结果进行5次交叉验证本量利= cvpartition(500年,“KFold”,5)
.然后,您可以使用指定交叉验证的模型“CVPartition”,本量利
.
坚持
- - - - - -保留验证的部分数据
(0,1)范围内的标量值
用于抵制验证的数据的一部分,指定为范围(0,1)中的标量值。如果您指定‘坚持’,p
,然后软件完成以下步骤:
随机选择和保留
p * 100
%的数据作为验证数据,并使用其余的数据训练模型。存储紧凑的,训练过的模型
训练有素的
属性的交叉验证模型。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“坚持”,0.1
数据类型:双
|单
KFold
- - - - - -数量的折叠
10
(默认)|大于1的正整数
交叉验证模型中使用的折叠数,指定为大于1的正整数。如果您指定KFold, k
,然后软件完成以下步骤:
将数据随机划分为
k
集。对于每个集合,保留该集合作为验证数据,并使用另一个集合训练模型
k
- 1集。存储
k
紧凑,训练有素的模型k
中的-by-1单元格向量训练有素的
属性的交叉验证模型。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“KFold”,5
数据类型:单
|双
Leaveout
- - - - - -分析交叉验证标志
“关闭”
(默认)|“上”
保留一个交叉验证标志,指定为“上”
或“关闭”
.如果您指定“Leaveout”,“上”
,那么对于每一个n观察(n是否指定了观察数(不包括遗漏的观察数)NumObservations
属性),软件完成以下步骤:
保留一个观察结果作为验证数据,并使用另一个来训练模型n- 1的观察。
存储n紧凑,训练有素的模型n中的-by-1单元格向量
训练有素的
属性的交叉验证模型。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“Leaveout”,“上”
DeltaGradientTolerance
- - - - - -梯度差公差
负的标量
对顺序最小优化(SMO)或迭代单数据算法(ISDA)得到的上下违例者之间梯度差的容忍度,指定为逗号分隔的对,由“DeltaGradientTolerance”
一个非负的标量。
如果DeltaGradientTolerance
是0
,则软件不使用梯度差的公差来检查优化收敛性。
默认值为:
1 e - 3
如果求解器是SMO(例如,您设置“规划求解”、“SMO的
)0
如果求解器是ISDA(例如,您设置“规划求解”、“ISDA的
)
例子:依照“DeltaGradientTolerance”,1
数据类型:双
|单
GapTolerance
- - - - - -可行性间隙公差
0
(默认)|负的标量
由SMO或ISDA获得的可行性间隙公差,指定为逗号分隔的对,由“GapTolerance”
一个非负的标量。
如果GapTolerance
是0
,则软件不使用可行性间隙容差来检查优化收敛性。
例子:依照“GapTolerance”,1
数据类型:双
|单
IterationLimit
- - - - - -数值优化迭代的最大次数
1 e6
(默认)|正整数
数值优化迭代的最大次数,指定为逗号分隔的对,由“IterationLimit”
一个正整数。
无论优化例程是否成功收敛,软件都会返回一个经过训练的模型。Mdl。C在vergenceInfo
包含聚合信息。
例子:“IterationLimit”,1 e8
数据类型:双
|单
KKTTolerance
- - - - - -Karush-Kuhn-Tucker互补条件违例容忍度
负的标量
Karush-Kuhn-Tucker (KKT)互补条件违例容忍,指定为逗号分隔的对,由“KKTTolerance”
一个非负的标量。
如果KKTTolerance
是0
,则该软件不使用KKT互补条件违例容忍度来检查优化收敛性。
默认值为:
0
如果求解器是SMO(例如,您设置“规划求解”、“SMO的
)1 e - 3
如果求解器是ISDA(例如,您设置“规划求解”、“ISDA的
)
例子:依照“KKTTolerance”,1
数据类型:双
|单
ShrinkagePeriod
- - - - - -活动集约简之间的迭代次数
0
(默认)|非负整数
活动集的约简之间的迭代次数,指定为逗号分隔的对,由“ShrinkagePeriod”
和一个非负整数。
如果你设置“ShrinkagePeriod”,0
,则软件不收缩活动集。
例子:“ShrinkagePeriod”,1000年
数据类型:双
|单
OptimizeHyperparameters
- - - - - -优化两类学习的参数
“没有”
(默认)|“汽车”
|“所有”
|合格参数名称的字符串数组或单元格数组|向量的optimizableVariable
对象
参数用于优化两类学习,指定为逗号分隔的对,由“OptimizeHyperparameters”
其中一个价值观是:
“没有”
-不要优化。“汽车”
——使用{“BoxConstraint”、“KernelScale”}
.“所有”
—优化所有符合条件的参数。合格参数名称的字符串数组或单元格数组。
向量的
optimizableVariable
的输出hyperparameters
.
优化尝试最小化交叉验证的损失(错误)fitcsvm
通过改变参数。有关交叉验证丢失的信息,请参见分类损失.要控制交叉验证类型和优化的其他方面,请使用HyperparameterOptimizationOptions
名称-值对的论点。
请注意
的值“OptimizeHyperparameters”
覆盖使用其他名称-值参数指定的任何值。例如,设置“OptimizeHyperparameters”
来“汽车”
原因fitcsvm
参数对应的超参数“汽车”
选项,并忽略超参数的任何指定值。
符合条件的参数fitcsvm
是:
BoxConstraint
- - - - - -fitcsvm
在正数值之间搜索,默认情况下按对数缩放范围(1 e - 3, 1 e3)
.KernelScale
- - - - - -fitcsvm
在正数值之间搜索,默认情况下按对数缩放范围(1 e - 3, 1 e3)
.KernelFunction
- - - - - -fitcsvm
搜索中“高斯”
,“线性”
,多项式的
.PolynomialOrder
- - - - - -fitcsvm
在范围内的整数之间进行搜索(2、4)
.标准化
- - - - - -fitcsvm
搜索中“真正的”
而且“假”
.
通过传递vector来设置非默认参数optimizableVariable
具有非默认值的对象。例如:
负载fisheririsparams = hyperparameters (“fitcsvm”量,物种);参数(1)。Range = [1e-4,1e6];
通过参数个数
的价值OptimizeHyperparameters
.
默认情况下,迭代显示出现在命令行中,并根据优化中的超参数的数量显示图形。对于优化和绘图,目标函数是误分类率。要控制迭代显示,请设置详细的
场的“HyperparameterOptimizationOptions”
名称-值参数。要控制情节,设置ShowPlots
场的“HyperparameterOptimizationOptions”
名称-值参数。
示例请参见优化支持向量机分类器.
这个论点只适用于两类学习。
例子:“OptimizeHyperparameters”、“汽车”
HyperparameterOptimizationOptions
- - - - - -两类学习的优化选项
结构
两类学习的优化选项,指定为结构。的效果OptimizeHyperparameters
名称-值参数。结构中的所有字段都是可选的。
字段名 | 值 | 默认的 |
---|---|---|
优化器 |
|
“bayesopt” |
AcquisitionFunctionName |
获取函数,其名称包括 |
“expected-improvement-per-second-plus” |
MaxObjectiveEvaluations |
目标函数评价的最大次数。 | 30. 为“bayesopt” 而且“randomsearch” ,和整个网格“gridsearch” |
MaxTime |
时间限制,指定为正实标量。时间限制以秒为单位,用 |
正 |
NumGridDivisions |
为“gridsearch” ,表示每个维度的值的个数。该值可以是一个给出每个维度值数量的正整数向量,也可以是一个适用于所有维度的标量。对于类别变量,该字段将被忽略。 |
10 |
ShowPlots |
指示是否显示图形的逻辑值。如果真正的 ,该字段根据迭代次数绘制最佳观测目标函数值。如果你使用贝叶斯优化(优化器 是“bayesopt” ),则该字段也绘制出最佳估计的目标函数值。最佳观测目标函数值和最佳估计目标函数值对应于BestSoFar(观察) 而且BestSoFar (estim)。 列的迭代显示,分别。您可以在属性中找到这些值ObjectiveMinimumTrace 而且EstimatedObjectiveMinimumTrace 的Mdl。HyperparameterOptimizationResults .如果问题包含一个或两个优化参数的贝叶斯优化,那么ShowPlots 并根据参数绘制了目标函数模型。 |
真正的 |
SaveIntermediateResults |
指示何时是否保存结果的逻辑值优化器 是“bayesopt” .如果真正的 ,该字段将覆盖名为“BayesoptResults” 在每一个迭代。变量是aBayesianOptimization 对象。 |
假 |
详细的 |
在命令行显示:
详细信息请参见 |
1 |
UseParallel |
指示是否并行运行贝叶斯优化的逻辑值,这需要并行计算工具箱™。由于并行时序的不可再现性,并行贝叶斯优化不一定产生可再现的结果。有关详细信息,请参见平行的贝叶斯优化. | 假 |
重新分区 |
指示是否在每次迭代时重新划分交叉验证的逻辑值。如果这个字段是 设置 |
假 |
只使用以下三个选项中的一个。 | ||
CVPartition |
一个cvpartition 对象,如由cvpartition |
“Kfold”,5 如果不指定交叉验证字段 |
坚持 |
范围内的标量(0,1) 表示抵制分数 |
|
Kfold |
大于1的整数 |
这个论点只适用于两类学习。
例子:“HyperparameterOptimizationOptions”、结构(MaxObjectiveEvaluations, 60)
数据类型:结构体
输出参数
Mdl
-训练过的SVM分类模型
ClassificationSVM
模型对象|ClassificationPartitionedModel
旨在模型对象
训练过的SVM分类模型,返回为ClassificationSVM
模型对象或ClassificationPartitionedModel
旨在模型对象。
如果设置任何名称-值对参数KFold
,坚持
,Leaveout
,CrossVal
,或CVPartition
,然后Mdl
是一个ClassificationPartitionedModel
旨在分类器。否则,Mdl
是一个ClassificationSVM
分类器。
的属性来引用Mdl
,使用点表示法。例如,输入Mdl。一个lpha
在命令窗口中显示训练过的拉格朗日乘子。
限制
fitcsvm
训练支持向量机分类器用于单类或两类学习应用。若要使用包含两个以上类的数据训练支持向量机分类器,请使用fitcecoc
.fitcsvm
支持低维和中维数据集。对于高维数据集,使用fitclinear
代替。
更多关于
箱约束
框约束是一个参数,它控制对违反边际的观测结果施加的最大惩罚,这有助于防止过拟合(正则化)。
如果增加框约束,那么SVM分类器分配的支持向量就会减少。然而,增加盒子约束会导致更长的训练时间。
格拉姆矩阵
一组的格拉姆矩阵n向量{x1, . .xn;xj∊Rp}是一个n——- - - - - -n带有元素(的矩阵j,k)定义为G(xj,xk) = <ϕ(xj),ϕ(xk)>,是使用核函数转换的预测器的内积ϕ.
对于非线性支持向量机,该算法利用预测器数据的行组成Gram矩阵X.对偶形式化代替了观察结果的内积X与得到的Gram矩阵的相应元素(称为“核技巧”)。因此,非线性支持向量机在变换后的预测空间中进行运算,找到分离的超平面。
Karush-Kuhn-Tucker (KKT)互补条件
KKT互补条件是非线性规划最优解所需的优化约束。
支持向量机中KKT互补条件为
对所有j= 1,…,n,在那里 ϕ是一个核函数(参见格拉姆矩阵),ξj是松弛变量。如果类是完全可分离的,那么ξj全部= 0j= 1,…,n.
看到下面成了一个学习
单类学习,即无监督SVM,旨在高维预测空间(不是原始预测空间)中从原点分离数据,是一种用于离群点检测的算法。
算法类似于二值分类的支持向量机.目标是尽量减少双重表达
关于 ,
而且 对所有j= 1,…,n.的价值G(xj,xk)在元素(j,k)的格拉姆矩阵.
的小值ν导致支持向量更少,因此,一个光滑、粗糙的决策边界。的大值ν导致更多的支持向量,因此,一个弯曲的,灵活的决策边界。的最优值ν应该足够大以捕获数据复杂性,足够小以避免过度训练。同时,0 <ν≤1。
有关更多细节,请参见[5].
支持向量
支持向量是与的严格正估计相对应的观测值α1、……αn.
对于给定的训练集,支持向量较少的SVM分类器是首选的。
二值分类的支持向量机
支持向量机二元分类算法搜索一个最优超平面,将数据分离为两类。对于可分离类,最优超平面使a最大化保证金(不包含任何观察的空间)围绕着它自己,这为积极和消极的类别创造了边界。对于不可分割的类,目标是相同的,但算法对每一个在类边界错误一侧的观察都施加一个边缘长度的惩罚。
线性SVM评分函数为
地点:
x是否观察值(对应于一行
X
).向量β包含定义超平面的正交向量的系数
Mdl。β
).对于可分离数据,最佳边距长度为b偏差项(对应于
Mdl。偏见
).
的根源f(x)为特定系数定义超平面。对于一个特定的超平面,f(z)为到点的距离z超平面。
该算法搜索最大边距长度,同时保持观测结果为正(y= 1)和负(y= -1)类分开。
对于可分离类,目标是最小化 关于β而且b受yjf(xj)≥1,对所有j= 1 . .n.这是原始的可分离类的形式化。
对于不可分割的类,算法使用松弛变量(ξj)来惩罚目标函数的观察值越过他们类的边界。ξj= 0表示未跨越类的边缘边界的观察值,否则ξj≥0。
目标是最小化 关于β,b,ξj受 而且 对所有j= 1 . .n,对于正标量箱约束C.这是不可分割类的原始形式化。
该算法采用拉格朗日乘子法对目标进行优化n系数α1、……αn(对应于Mdl。一个lpha
).线性支持向量机的双重形式化如下:
对于可分离类,最小化
关于α1、……αn, ,αj全部≥0j= 1,…,n,Karush-Kuhn-Tucker (KKT)互补条件.
对于不可分割类,除了附加条件外,目标与可分离类相同 对所有j= 1 . .n.
得到的分数函数为
估计的偏差和 是j向量的估计 ,j= 1,…,n.这样写,分数函数不需要估计β作为原始形式化的结果。
支持向量机算法对新观察结果进行分类z使用
在某些情况下,一个非线性边界将类分开。非线性支持向量机在一个变换后的预测器空间中找到一个最优的、分离的超平面。
非线性支持向量机的对偶形式化方法
关于α1、……αn, , 对所有j= 1 . .n,和KKT互补条件。G(xk,xj的元素格拉姆矩阵.得到的分数函数为
提示
除非您的数据集很大,否则总是尝试将预测器标准化(参见
标准化
).标准化使得预测器对它们所测量的尺度不敏感。交叉验证是一个很好的实践
KFold
名称-值对的论点。交叉验证结果决定了SVM分类器的泛化程度。看到下面成了学习:
支持向量的稀疏性是支持向量机分类器的一个理想属性。若要减少支持向量的数量,请设置
BoxConstraint
到一个较大的值。这个操作增加了训练时间。为最佳训练时间,设置
CacheSize
尽可能高的内存限制您的计算机允许。如果您期望的支持向量比训练集中的观察值要少得多,那么您可以使用名称-值对参数缩小活动集,从而显著加快收敛速度
“ShrinkagePeriod”
.指定是一个很好的实践“ShrinkagePeriod”,1000年
.远离决策边界的重复观察结果不会影响收敛。然而,只要在决策边界附近出现一些重复的观察结果,就会大大减慢收敛速度。要加快收敛速度,请指定
“RemoveDuplicates”,真的
如果:你的数据集包含许多重复的观察结果。
您怀疑一些重复的观察落在决策边界附近。
为了在训练期间保持原始数据集,
fitcsvm
必须临时存储不同的数据集:原始数据集和没有重复观测的数据集。因此,如果指定真正的
对于包含少量副本的数据集,那么fitcsvm
消耗的内存接近原始数据的两倍。在训练一个模型之后,您可以生成预测新数据标签的C/ c++代码。生成C/ c++代码需要MATLAB编码器™.有关详细信息,请参见代码生成简介.
算法
支持向量机二元分类算法的数学公式见二值分类的支持向量机而且理解支持向量机.
南
,<定义>
,空字符向量(''
,空字符串(""
),< >失踪
值表示缺失值。fitcsvm
删除与丢失响应对应的整行数据。在计算总权重时(见下一个项目),fitcsvm
忽略与至少一个缺失预测因子的观察结果相对应的任何权重。在平衡类问题中,这种行为会导致不平衡先验概率。因此,观察箱的约束可能不相等BoxConstraint
.如果指定
成本
,之前
,权重
参数时,输出模型对象将指定的值存储在成本
,之前
,W
属性,分别。的成本
属性存储用户指定的成本矩阵(C没有修改。的之前
而且W
属性分别存储归一化后的先验概率和观测权值。对于模型训练,软件更新先验概率和观察权重,以纳入成本矩阵中描述的惩罚。有关详细信息,请参见错误分类成本矩阵,先验概率和观察权重.请注意,
成本
而且之前
名称-值参数用于两类学习。对于单类学习,成本
而且之前
属性存储0
而且1
,分别。对两种学习,
fitcsvm
为训练数据中的每个观察值分配一个框约束。观察框约束的公式j是在哪里C0初始框约束(参见
BoxConstraint
名称-值参数),wj*观察权重是否调整成本
而且之前
为观察j.关于观测权值的详细信息,请参见调整错误分类代价矩阵的先验概率和观测权重.如果您指定
标准化
作为真正的
并设置成本
,之前
,或权重
名称-值参数,然后fitcsvm
使用相应的加权平均数和加权标准差对预测因子进行标准化。也就是说,fitcsvm
标准化预测j(xj)使用在哪里xjk是观察k(行)的预测j(列)
假设
p
你在训练数据中期望的异常值的比例,和你设置的异常值的比例OutlierFraction, p
.对于单类学习,软件训练偏差项使100
p
训练数据中%的观察结果为负值。该软件实现了强劲的学习两级学习。换句话说,该软件试图删除100个
p
优化算法收敛时观测值的%。被删除的观测值对应于量级较大的梯度。
如果你的预测数据包含分类变量,那么软件通常对这些变量使用全虚拟编码。该软件为每个类别变量的每一级创建一个虚拟变量。
的
PredictorNames
属性为每个原始预测器变量名存储一个元素。例如,假设有三个预测器,其中一个是具有三个级别的类别变量。然后PredictorNames
是包含预测器变量的原始名称的字符向量的1 × 3单元格数组。的
ExpandedPredictorNames
属性为每个预测器变量(包括虚拟变量)存储一个元素。例如,假设有三个预测器,其中一个是具有三个级别的类别变量。然后ExpandedPredictorNames
是一个1 × 5的字符向量单元格数组,其中包含预测变量和新的虚拟变量的名称。类似地,
β
属性为每个预测器(包括虚拟变量)存储一个beta系数。的
SupportVectors
属性存储支持向量(包括虚拟变量)的预测器值。例如,假设有米支持向量和三个预测因子,其中一个是三级分类变量。然后SupportVectors
是一个n5矩阵。的
X
属性将训练数据作为原始输入存储,不包含虚拟变量。当输入是一个表时,X
只包含用作预测器的列。
对于表中指定的预测器,如果任何变量包含有序(序数)类别,则软件对这些变量使用序数编码。
对于一个变量k软件会创建有序的关卡k- 1虚拟变量。的j虚变量为1适用于以下级别j,+1的水平j+ 1通过k.
对象中存储的虚拟变量的名称
ExpandedPredictorNames
属性用值指示第一个级别+1.软件商店k- 1虚拟变量的其他预测器名称,包括级别2、3、…k.
所有连接器实现l1 soft-margin最小化。
对于单类学习,软件估计拉格朗日乘数,α1、……αn,这样
选择功能
你也可以使用ocsvm
函数训练单类支持向量机模型进行异常检测。
的
ocsvm
函数为异常检测提供了更简单和首选的工作流程fitcsvm
函数。的
ocsvm
函数返回一个OneClassSVM
对象、异常指标和异常评分。您可以使用输出来识别训练数据中的异常。要在新数据中查找异常,可以使用isanomaly
对象的函数OneClassSVM
.的isanomaly
函数返回新数据的异常指示符和评分。的
fitcsvm
函数同时支持单类和二进制分类。如果类标签变量只包含一个类(例如,一个由1组成的向量),fitcsvm
训练模型进行一个类分类,并返回一个ClassificationSVM
对象。要识别异常,必须首先使用resubPredict
或预测
对象的函数ClassificationSVM
,然后通过发现负评分的观察结果来识别异常。注意,较大的正异常评分表示异常
ocsvm
,而负值则表示在预测
的ClassificationSVM
.
的
ocsvm
函数根据支持向量机的原始形式寻找决策边界,而fitcsvm
函数根据支持向量机的对偶形式寻找决策边界。的解算器
ocsvm
在计算上比求解器更便宜吗fitcsvm
对于大数据集(largen).与解决fitcsvm
,这需要计算n——- - - - - -n克矩阵,求解器ocsvm
只需要形成一个大小的矩阵n——- - - - - -米.在这里,米扩展空间的维数,通常比这要少很多吗n大数据。
参考文献
[1] Christianini, N.和J. C. Shawe-Taylor。支持向量机和其他基于核的学习方法简介.英国剑桥:剑桥大学出版社,2000年。
[2]球迷,R.-E。,林志信。陈,C.-J。林。用二阶信息选择工作集来训练支持向量机。机器学习研究杂志, 2005年第6卷,1889-1918页。
[3]哈斯蒂,T., R.蒂布希拉尼,J.弗里德曼。统计学习的要素,第二版。纽约:施普林格,2008年。
凯克曼V., t。黄和M.沃格特。从巨大数据集训练核机器的迭代单数据算法:理论和性能。支持向量机:理论与应用.王立波主编,255-274。柏林:斯普林格出版社,2005年版。
[5]肖科普夫,B. J. C.普拉特,J. C.肖-泰勒,A. J.斯莫拉,R. C.威廉姆森。"估计高维分布的支持度"神经第一版, 2001年第13卷第7期,第1443-1471页。
[6] Scholkopf, B.和A. Smola。用核学习:支持向量机,正则化,优化和超越,自适应计算和机器学习.马萨诸塞州剑桥:麻省理工学院出版社,2002年。
扩展功能
自动并行支持
通过使用并行计算工具箱™自动并行运行计算来加速代码。
要执行并行超参数优化,请使用“HyperparameterOptimizationOptions”、结构(UseParallel,真的)
类调用中的名称-值参数fitcsvm
函数。
有关并行超参数优化的更多信息,请参见平行的贝叶斯优化.
有关并行计算的一般信息,请参见运行MATLAB函数与自动并行支持(并行计算工具箱).
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
使用注意事项和限制:
不支持单类分类。标签必须包含两个不同的类。
您不能指定
KernelFunction
名称-值参数作为函数句柄。您可以指定
解算器
名称-值参数仅为“SMO”
.您不能指定
OutlierFraction
或ShrinkagePeriod
名称-值参数。的
α
名称-值参数必须指定一个可行的起点。预测器数据不能包含无限值。
fitcsvm
如果适用以下任何一种,则适合GPU上的模型:输入参数
X
是一个gpuArray
对象。输入参数
资源描述
包含gpuArray
预测变量。
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
介绍了R2014a
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。