ClassificationSVM
支持向量机(SVM)用于单类和二元分类
描述
ClassificationSVM
是一个支持向量机(SVM)分类器一个班和两个班的学习。训练有素的ClassificationSVM
分类器存储训练数据、参数值、先验概率、支持向量和算法实现信息。使用这些分类器来执行诸如拟合得分-后验概率转换函数(参见fitPosterior
)和预测新数据的标签(参见预测
).
创建
创建一个ClassificationSVM
对象的使用fitcsvm
.
属性
支持向量机性能
α
- - - - - -训练分类器系数
数值向量
此属性是只读的。
训练的分类器系数,指定为年代1数字向量。年代是经过训练的分类器中支持向量的个数,总和(Mdl.IsSupportVector)
.
α
包含从对偶问题训练的分类器系数,即估计的拉格朗日乘子。方法删除重复项RemoveDuplicates
的名值对参数fitcsvm
,那么对于一组支持向量的重复观察,α
包含一个对应于整个集合的系数。也就是说,MATLAB®将非零系数归为一组重复数据中的一个观察结果,系数为0
到集合中所有其他重复的观察值。
数据类型:单
|双
β
- - - - - -线性预测系数
数值向量
此属性是只读的。
线性预测系数,指定为数字向量。的长度β
等于用于训练模型的预测器的数量。
MATLAB利用全虚拟编码扩展了预测器数据中的分类变量。也就是说,MATLAB为每个分类变量的每一级创建一个虚拟变量。β
为每个预测变量(包括虚拟变量)存储一个值。例如,如果有三个预测器,其中一个是具有三个级别的类别变量,那么β
是一个包含五个值的数字向量。
如果KernelParameters。函数
是“线性”
,然后为观察的分类评分x是
Mdl
商店β,b,年代在属性β
,偏见
,KernelParameters。规模
,分别。
要手动估计分类分数,必须首先对训练期间应用的预测器数据应用任何转换。具体来说,如果你指定“标准化”,真的
当使用fitcsvm
,则必须使用均值手动标准化预测器数据Mdl。μ
和标准偏差Mdl。σ
,然后将结果除以核尺度Mdl.KernelParameters.Scale
.
所有支持向量机函数,如resubPredict
而且预测
,在估计之前应用任何所需的转换。
如果KernelParameters。函数
不是“线性”
,然后β
是空的([]
).
数据类型:单
|双
偏见
- - - - - -偏见术语
标量
此属性是只读的。
偏差项,指定为一个标量。
数据类型:单
|双
BoxConstraints
- - - - - -箱约束
数值向量
此属性是只读的。
框约束,指定为的数值向量n1箱约束.n训练数据中的观察数(见NumObservations
属性)。
方法删除重复项RemoveDuplicates
的名值对参数fitcsvm
,那么对于给定的一组重复观察结果,MATLAB会对框约束求和,然后将求和归为一个观察结果。的MATLAB属性框约束0
到集合中所有其他的观察值。
数据类型:单
|双
CacheInfo
- - - - - -缓存信息
结构数组
此属性是只读的。
缓存信息,指定为结构数组。缓存信息包含该表中描述的字段。
场 | 描述 |
---|---|
大小 | 软件为训练SVM分类器预留的缓存大小(MB)。有关详细信息,请参见 |
算法 | 软件在优化过程中使用的缓存算法。目前,唯一可用的缓存算法是 |
显示的字段CacheInfo
用点表示法。例如,Mdl.CacheInfo.Size
显示缓存大小的值。
数据类型:结构体
IsSupportVector
- - - - - -支持向量指标
逻辑向量
此属性是只读的。
支持向量指示器,指定为n-by-1逻辑向量,标记预测器数据矩阵中的对应观测值是否为支持向量.n训练数据中的观察数(见?NumObservations
).
方法删除重复项RemoveDuplicates
的名值对参数fitcsvm
,那么对于一组支持向量的重复观察,IsSupportVector
只标记一个观察结果作为支持向量。
数据类型:逻辑
KernelParameters
- - - - - -内核参数
结构数组
此属性是只读的。
内核参数,指定为结构数组。内核参数属性包含该表中列出的字段。
场 | 描述 |
---|---|
函数 | 核函数用来计算元素的格拉姆矩阵.有关详细信息,请参见 |
规模 | 核标度参数用于标度模型所训练的预测器数据的所有元素。有关详细信息,请参见 |
的值KernelParameters
,使用点表示法。例如,Mdl.KernelParameters.Scale
显示内核规模参数值。
软件接受KernelParameters
作为输入,不修改它们。
数据类型:结构体
ν
- - - - - -看到下面成了学习参数
积极的标量
OutlierFraction
- - - - - -离群值的比例
数字标量
此属性是只读的。
训练数据中异常值的比例,指定为数值标量。
数据类型:双
解算器
- - - - - -优化程序
ISDA的
|“L1QP”
|SMO的
此属性是只读的。
优化例程用于训练SVM分类器,指定为ISDA的
,“L1QP”
,或SMO的
.有关更多细节,请参见“规划求解”
.
SupportVectorLabels
- - - - - -支持向量类标签
年代1数字矢量
此属性是只读的。
支持向量类标签,指定为年代1数字向量。年代是经过训练的分类器中支持向量的个数,总和(Mdl.IsSupportVector)
.
的值+1
在SupportVectorLabels
指示对应的支持向量在正类中(一会{2}
).的值1
表示对应的支持向量属于负类(一会{1}
).
方法删除重复项RemoveDuplicates
的名值对参数fitcsvm
,那么对于一组支持向量的重复观察,SupportVectorLabels
包含一个唯一的支持向量标签。
数据类型:单
|双
SupportVectors
- - - - - -支持向量
年代——- - - - - -p数字矩阵
此属性是只读的。
的支持向量,指定为年代——- - - - - -p数字矩阵。年代是经过训练的分类器中支持向量的个数,总和(Mdl.IsSupportVector)
,p是预测器数据中的预测器变量的数量。
SupportVectors
包含预测器数据的行X
MATLAB认为是支持向量。如果您指定“标准化”,真的
训练SVM分类器时使用fitcsvm
,然后SupportVectors
的标准化行X
.
方法删除重复项RemoveDuplicates
的名值对参数fitcsvm
,那么对于一组支持向量的重复观察,SupportVectors
包含一个唯一的支持向量。
数据类型:单
|双
其他分类属性
CategoricalPredictors
- - - - - -分类预测指标
正整数向量|[]
此属性是只读的。
分类预测指标,指定为正整数的向量。CategoricalPredictors
包含指示相应的预测器是分类的索引值。索引值在1和之间p
,在那里p
用于训练模型的预测器的数量。如果没有一个预测器是绝对的,则此属性为空([]
).
数据类型:双
一会
- - - - - -独特的类标签
分类数组|字符数组|逻辑向量|数值向量|字符向量的单元格数组
此属性是只读的。
训练中使用的惟一类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。一会
是否与类标签的数据类型相同Y
.(该软件将字符串数组视为字符向量的单元格数组。)一会
还决定了类的顺序。
数据类型:单
|双
|逻辑
|字符
|细胞
|分类
成本
- - - - - -误分类代价
数字方阵
此属性是只读的。
错误分类的代价,指定为数值方阵。
对于两类学习,
成本
属性指定的错误分类代价矩阵成本
拟合函数的名值参数。行对应真正的类,列对应预测的类。也就是说,成本(i, j)
将一个点分类到类的成本是多少j
如果它真正的阶级是我
.的行和列的顺序成本
中的类的顺序一会
.看到下面成了学习,
成本= 0
.
数据类型:双
ExpandedPredictorNames
- - - - - -扩大了预测的名字
字符向量的单元格数组
此属性是只读的。
扩展的预测器名称,指定为字符向量的单元格数组。
如果模型对类别变量使用哑变量编码,则ExpandedPredictorNames
包括描述展开变量的名称。否则,ExpandedPredictorNames
和PredictorNames
.
数据类型:细胞
梯度
- - - - - -训练数据梯度值
数值向量
ModelParameters
- - - - - -用于训练模型的参数
对象
此属性是只读的。
用于训练的参数ClassificationSVM
模型,指定为对象。ModelParameters
包含参数值,例如用于训练SVM分类器的名值对参数值。ModelParameters
不包含估计的参数。
访问的属性ModelParameters
用点表示法。例如,访问初始值进行估计α
通过使用Mdl.ModelParameters.Alpha
.
μ
- - - - - -预测方法
数值向量|[]
此属性是只读的。
预测器是指,指定为数字向量。如果您指定“标准化”,1
或“标准化”,真的
训练SVM分类器时使用fitcsvm
的长度。μ
等于预测因子的个数。
MATLAB利用虚拟变量扩展了预测器数据中的分类变量。μ
为每个预测变量(包括虚拟变量)存储一个值。然而,MATLAB并没有标准化包含分类变量的列。
如果你设置“标准化”,假的
当你训练SVM分类器使用fitcsvm
,然后μ
是一个空向量([]
).
数据类型:单
|双
NumObservations
- - - - - -数量的观察
数字标量
此属性是只读的。
存储的训练数据中的观察数X
而且Y
,指定为数值标量。
数据类型:双
PredictorNames
- - - - - -预测变量的名字
字符向量的单元格数组
此属性是只读的。
预测器变量名,指定为字符向量的单元格数组。元素的顺序PredictorNames
对应于预测器名称在训练数据中出现的顺序。
数据类型:细胞
之前
- - - - - -先验概率
数值向量
此属性是只读的。
每个类别的先验概率,指定为数字向量。
对于两类学习,如果你指定了一个成本矩阵,那么软件通过合并成本矩阵中描述的惩罚来更新先验概率。
对于两类学习,软件将先验概率归一化
之前
拟合函数的名值参数,使概率之和为1。的之前
属性存储归一化先验概率。元素的顺序之前
对应于的元素Mdl。ClassNames
.看到下面成了学习,
之前= 1
.
数据类型:单
|双
ResponseName
- - - - - -响应变量名
特征向量
此属性是只读的。
响应变量名,指定为字符向量。
数据类型:字符
RowsUsed
- - - - - -拟合中使用的行
[]
|逻辑向量
此属性是只读的。
用于拟合的原始训练数据行ClassificationSVM
模型,指定为逻辑向量。如果使用所有行,则此属性为空。
数据类型:逻辑
ScoreTransform
- - - - - -分数转换
特征向量|函数处理
分数转换,指定为字符向量或函数句柄。ScoreTransform
表示用于转换预测分类分数的内置转换函数或函数句柄。
更改分数转换函数为函数
例如,使用点表示法。
对于内置函数,请输入字符向量。
Mdl。ScoreTransform = '函数”;
该表描述可用的内置函数。
价值 描述 “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函数或您定义的函数,请输入其函数句柄。
Mdl。ScoreTransform = @函数;
函数
必须接受一个矩阵(原始分数)并返回一个相同大小的矩阵(转换后的分数)。
数据类型:字符
|function_handle
σ
- - - - - -预测标准差
[]
(默认)|数值向量
此属性是只读的。
预测标准偏差,指定为数字向量。
如果您指定“标准化”,真的
当你训练SVM分类器使用fitcsvm
的长度。σ
等于预测变量的个数。
MATLAB利用虚拟变量扩展了预测器数据中的分类变量。σ
为每个预测变量(包括虚拟变量)存储一个值。然而,MATLAB并没有标准化包含分类变量的列。
如果你设置“标准化”,假的
当你训练SVM分类器使用fitcsvm
,然后σ
是一个空向量([]
).
数据类型:单
|双
W
- - - - - -观察权重
数值向量
此属性是只读的。
用于训练SVM分类器的观察权重,指定为n1数字向量。n观察的次数(见?NumObservations
).
fitcsvm
方法中指定的观察权重归一化“重量”
的元素名值对参数W
在一个特定的类别内,和等于该类别的先验概率。
数据类型:单
|双
X
- - - - - -Unstandardized预测
数字矩阵|表格
此属性是只读的。
用于训练支持向量机分类器的非标准化预测器,指定为数值矩阵或表格。
每一行的X
对应一个观察结果,每一列对应一个变量。
MATLAB排除包含至少一个缺失值的观测值,并从Y
.
数据类型:单
|双
Y
- - - - - -类标签
分类数组|字符数组|逻辑向量|数值向量|字符向量的单元格数组
此属性是只读的。
用于训练SVM分类器的类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。Y
是否与输入参数的数据类型相同Y
的fitcsvm
.(该软件将字符串数组视为字符向量的单元格数组。)
每一行的Y
的对应行的观察分类X
.
MATLAB排除包含缺失值的元素,并从X
.
数据类型:单
|双
|逻辑
|字符
|细胞
|分类
收敛控制属性
ConvergenceInfo
- - - - - -融合信息
结构数组
此属性是只读的。
收敛信息,指定为结构数组。
场 | 描述 |
---|---|
聚合 |
指示算法是否收敛的逻辑标志(1 表明收敛)。 |
ReasonForConvergence |
字符向量,表示软件用来检测收敛性的准则。 |
差距 |
对偶目标函数与原始目标函数之间存在标量可行性差距。 |
GapTolerance |
标量可行性间隙公差。设置此公差,例如为1)依照 ,通过使用名称-值对参数依照“GapTolerance”,1 的fitcsvm . |
DeltaGradient |
上违规者和下违规者之间的标量达到的梯度差 |
DeltaGradientTolerance |
上下违规者之间梯度差的标量公差。设置此公差,例如为1)依照 ,通过使用名称-值对参数依照“DeltaGradientTolerance”,1 的fitcsvm . |
LargestKKTViolation |
最大标量Karush-Kuhn-Tucker违例值。 |
KKTTolerance |
标量容忍度为KKT违规最大。例如,将此公差设置为1 e - 3 ,通过使用名称-值对参数“KKTTolerance”,1 e - 3 的fitcsvm . |
历史 |
在集合优化迭代时包含收敛信息的结构数组。字段:
|
客观的 |
双目标函数的标量值。 |
数据类型:结构体
NumIterations
- - - - - -的迭代次数
正整数
此属性是只读的。
优化例程达到收敛所需的迭代次数,指定为正整数。
将迭代次数的限制设置为1000
,例如,指定“IterationLimit”,1000年
当你训练SVM分类器使用fitcsvm
.
数据类型:双
ShrinkagePeriod
- - - - - -活动集约简之间的迭代次数
非负整数
此属性是只读的。
活动集的约简之间的迭代次数,指定为非负整数。
将收缩期设置为1000
,例如,指定“ShrinkagePeriod”,1000年
当你训练SVM分类器使用fitcsvm
.
数据类型:单
|双
Hyperparameter优化性能
HyperparameterOptimizationResults
- - - - - -超参数的交叉验证优化描述
BayesianOptimization
对象|表格
此属性是只读的。
描述超参数的交叉验证优化,指定为BayesianOptimization
对象或超参数和关联值的表。时,此属性为非空“OptimizeHyperparameters”
的名值对参数fitcsvm
在创建时非空。的价值HyperparameterOptimizationResults
取决于的设置优化器
字段HyperparameterOptimizationOptions
的结构fitcsvm
在创建时,如本表所述。
的价值优化器 场 |
的价值HyperparameterOptimizationResults |
---|---|
“bayesopt” (默认) |
对象的类BayesianOptimization |
“gridsearch” 或“randomsearch” |
使用的超参数表,观测到的目标函数值(交叉验证损失),以及观测值从最低(最好)到最高(最差)的排名 |
对象的功能
紧凑的 |
减小机器学习模型的尺寸 |
compareHoldout |
使用新数据比较两种分类模型的准确性 |
crossval |
交叉验证机器学习模型 |
discardSupportVectors |
丢弃支持向量机分类器中的支持向量 |
边缘 |
为支持向量机(SVM)分类器寻找分类边 |
fitPosterior |
为支持向量机分类器拟合后验概率 |
收集 |
收集的属性统计和机器学习工具箱对象从GPU |
incrementalLearner |
将二元分类支持向量机模型转化为增量学习器 |
石灰 |
局部可解释模型不可知解释(LIME) |
损失 |
查找支持向量机分类器的分类错误 |
保证金 |
查找支持向量机(SVM)分类器的分类裕量 |
partialDependence |
计算部分依赖 |
plotPartialDependence |
创建偏依赖图(PDP)和个体条件期望图(ICE) |
预测 |
使用支持向量机分类器对观测数据进行分类 |
resubEdge |
Resubstitution分类边缘 |
resubLoss |
Resubstitution分类损失 |
resubMargin |
Resubstitution分类保证金 |
resubPredict |
使用训练过的分类器对训练数据进行分类 |
重新开始 |
恢复训练支持向量机(SVM)分类器 |
沙普利 |
沙普利值 |
testckfold |
通过重复交叉验证比较两种分类模型的准确性 |
例子
训练支持向量机分类器
载入费雪的虹膜数据集。去除萼片的长度和宽度和所有观察到的濑花虹膜。
负载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分类器
加载电离层
数据集。
负载电离层
训练和交叉验证SVM分类器。标准化预测器数据并指定类的顺序。
rng (1);%的再现性CVSVMModel = fitcsvm (X, Y,“标准化”,真的,...“类名”,{“b”,‘g’},“CrossVal”,“上”)
CVSVMModel = ClassificationPartitionedModel CrossValidatedModel: 'SVM' PredictorNames: {1x34 cell} ResponseName: 'Y' NumObservations: 351 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'b' 'g'} ScoreTransform: 'none'属性,方法
CVSVMModel
是一个ClassificationPartitionedModel
旨在支持向量机分类器。默认情况下,该软件实现了10次交叉验证。
或者,你可以交叉验证一个训练有素的ClassificationSVM
分类器,将其传递给crossval
.
使用点表示法检查训练过的其中一个折叠。
CVSVMModel。训练有素的{1}
ans = CompactClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' Alpha: [78x1 double] Bias: -0.2210 KernelParameters: [1x1 struct] Mu:[0.8888 0 0.6320 0.0406 0.5931 0.1205 0.5361…] Sigma:[0.3149 0 0.5033 0.4441 0.5255 0.4663 0.4987…]supportvector: [78x34 double] SupportVectorLabels: [78x1 double]属性,方法
每条折线都是CompactClassificationSVM
分类器对90%的数据进行训练。
估计泛化误差。
genError = kfoldLoss (CVSVMModel)
genError = 0.1168
平均而言,泛化误差约为12%。
更多关于
箱约束
框约束是一个参数,它控制对违反边际的观测结果施加的最大惩罚,这有助于防止过拟合(正则化)。
如果增加框约束,那么SVM分类器分配的支持向量就会减少。然而,增加盒子约束会导致更长的训练时间。
格拉姆矩阵
一组的格拉姆矩阵n向量{x1, . .xn;xj∊Rp}是一个n——- - - - - -n带有元素(的矩阵j,k)定义为G(xj,xk) = <ϕ(xj),ϕ(xk)>,是使用核函数转换的预测器的内积ϕ.
对于非线性支持向量机,该算法利用预测器数据的行组成Gram矩阵X.对偶形式化代替了观察结果的内积X与得到的Gram矩阵的相应元素(称为“核技巧”)。因此,非线性支持向量机在变换后的预测空间中进行运算,找到分离的超平面。
Karush-Kuhn-Tucker互补条件
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。α
).线性支持向量机的双重形式化如下:
对于可分离类,最小化
关于α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的元素格拉姆矩阵.得到的分数函数为
算法
支持向量机二元分类算法的数学公式见二值分类的支持向量机而且理解支持向量机.
南
,<定义>
,空字符向量(”
,空字符串(""
),< >失踪
值表示缺失值。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,这样
参考文献
[1]哈斯蒂,T., R.蒂布希拉尼,J.弗里德曼。统计学习的要素,第二版。纽约:施普林格,2008年。
[2]肖科普夫,B. J. C.普拉特,J. C.肖-泰勒,A. J.斯莫拉,R. C.威廉姆森。"估计高维分布的支持度"神经第一版, 2001年第13卷第7期,第1443-1471页。
[3] Christianini, N.和J. C. Shawe-Taylor。支持向量机和其他基于核的学习方法简介.英国剑桥:剑桥大学出版社,2000年。
[4] Scholkopf, B.和A. Smola。用核学习:支持向量机,正则化,优化和超越,自适应计算和机器学习。马萨诸塞州剑桥:麻省理工学院出版社,2002年。
扩展功能
C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
将支持向量机分类模型的预测集成到Simulink中®,你可以使用ClassificationSVM预测在统计和机器学习工具箱™库中的
预测
函数。当你训练支持向量机模型使用
fitcsvm
,适用以下限制。的值
“ScoreTransform”
名值对参数不能是匿名函数。为了生成代码来预测给定新观察的后验概率,将训练过的支持向量机模型传递给fitPosterior
或fitSVMPosterior
.的ScoreTransform
属性包含一个表示得分-后置概率函数的匿名函数,该函数被配置为用于代码生成。的值对于定点代码生成
“ScoreTransform”
名称-值对参数不能为“invlogit”
.的值“KernelFunction”
名称-值对参数必须为“高斯”
,“线性”
,或多项式的
.对于定点代码生成和使用编码器配置程序的代码生成,适用以下附加限制。
分类预测(
逻辑
,分类
,字符
,字符串
,或细胞
)。您不能使用CategoricalPredictors
名称-值参数。要在模型中包含类别预测器,可以使用dummyvar
在拟合模型之前。类的标签,使用
分类
不支持数据类型。训练数据中的类标签值(资源描述
或Y
的值一会
类的名称-值参数不能是数组分类
数据类型。
有关更多信息,请参见代码生成简介.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
使用注意事项和限制:
以下对象函数完全支持GPU阵列:
以下对象函数为GPU阵列提供了有限的支持:
如果适用以下任何一种情况,对象函数将在GPU上执行:
模型采用GPU阵列进行拟合。
传递给对象函数的预测器数据是一个GPU数组。
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
介绍了R2014aR2022a:成本
属性存储用户指定的成本矩阵
从R2022a开始成本
属性存储用户指定的代价矩阵,以便使用指定的代价值计算观察到的错误分类代价。该软件存储规范化先验概率(之前
)和观察权重(W
),并没有反映成本矩阵中所述的罚款。要计算观察到的错误分类代价,指定LossFun
名称-值参数为“classifcost”
当你打电话给损失
或resubLoss
函数。
注意,模型训练没有改变,因此,类之间的决策边界没有改变。
在训练中,拟合函数通过加入指定代价矩阵中描述的惩罚来更新指定的先验概率,然后将先验概率和观察权重归一化。这种行为没有改变。在以前的版本中,软件将默认成本矩阵存储在成本
属性,并将用于训练的先验概率和观察权值存储在之前
而且W
属性,分别。从R2022a开始,该软件不加修改地存储用户指定的成本矩阵,并存储不反映成本惩罚的归一化先验概率和观测权重。有关更多细节,请参见错误分类成本矩阵,先验概率和观察权重.
一些对象函数使用成本
,之前
,W
属性:
的
损失
而且resubLoss
函数使用存储在成本
属性,则指定LossFun
名称-值参数为“classifcost”
或“mincost”
.的
损失
而且边缘
函数使用存储在之前
属性规范化输入数据的观察权重。的
resubLoss
而且resubEdge
函数使用存储在W
财产。
如果在训练分类模型时指定非默认代价矩阵,对象函数将返回与以前版本不同的值。
如果您希望软件像以前版本中那样处理成本矩阵、先验概率和观测权重,请调整非默认成本矩阵的先验概率和观测权重,如中所述调整错误分类代价矩阵的先验概率和观测权重.然后,在训练分类模型时,指定调整后的先验概率和观察权重之前
而且权重
名称-值参数,并使用默认开销矩阵。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。