CompactClassificationSVM
用于一类和二元分金宝app类的紧凑支持向量机(SVM)
描述
CompactClassificationSVM
是支持向量机(SVM)分类器的紧凑版本。金宝app紧凑分类器不包括用于训练SVM分类器的数据。因此,您不能使用紧凑分类器执行某些任务,例如交叉验证。使用紧凑的SVM分类器来完成诸如预测新数据标签之类的任务。
创建
创建一个CompactClassificationSVM
模特出身丰满,训练有素ClassificationSVM
分类器紧凑的
.
属性
支持向量机性能
α
- - - - - -训练分类器系数
数值向量
此属性是只读的。
训练的分类器系数,指定为年代-by-1数值向量。年代是经过训练的分类器中支持向量的个数金宝app,总和(Mdl.IsS金宝appupportVector)
.
α
包含从对偶问题训练的分类器系数,即估计的拉格朗日乘子。方法删除重复项RemoveDuplicates
的名称-值对参数fitcsvm
,那么对于一个给定的重复观测集合,即支持向量,金宝appα
包含一个对应于整个集合的系数。也就是MATLAB®将非零系数属性为一组重复项中的一个观测值,且系数为0
集合中所有其他重复的观测值。
数据类型:单
|双
β
- - - - - -线性预测系数
数值向量
此属性是只读的。
线性预测系数,指定为数值向量。的长度β
等于用于训练模型的预测器的数量。
MATLAB使用全虚拟编码扩展预测器数据中的分类变量。也就是说,MATLAB为每个分类变量的每一层创建一个虚拟变量。β
为每个预测变量(包括虚拟变量)存储一个值。例如,如果有三个预测因子,其中一个是具有三个级别的分类变量,则β
是包含五个值的数字向量。
如果KernelParameters。函数
是“线性”
,然后分类评分进行观察x是
Mdl
商店β,b,年代在属性中β
,偏见
,KernelParameters。规模
,分别。
要手动估计分类分数,必须首先对训练期间应用的预测器数据应用任何转换。具体来说,如果你指定的话“标准化”,真的
当使用fitcsvm
,则必须使用平均值手动标准化预测器数据Mdl。μ
还有标准差Mdl。σ
,然后将结果除以in的核标度Mdl.KernelParameters.Scale
.
所有支持向量机函数,如resubPredict
而且预测
,在估计前应用所需的转换。
如果KernelParameters。函数
不是“线性”
,然后β
为空([]
).
数据类型:单
|双
偏见
- - - - - -偏见术语
标量
此属性是只读的。
偏差项,指定为标量。
数据类型:单
|双
KernelParameters
- - - - - -内核参数
结构数组
此属性是只读的。
内核参数,指定为结构数组。内核参数属性包含该表中列出的字段。
场 | 描述 |
---|---|
函数 | 核函数用来计算元素的格拉姆矩阵.详细信息请参见 |
规模 | 核尺度参数用于缩放模型所训练的预测器数据的所有元素。详细信息请参见 |
的值KernelParameters
,使用点表示法。例如,Mdl.KernelParameters.Scale
显示内核比例参数值。
软件接受KernelParameters
作为输入,不修改它们。
数据类型:结构体
金宝appSupportVectorLabels
- - - - - -金宝app支持向量类标签
年代-by-1数值向量
此属性是只读的。
金宝app支持向量类标签,指定为年代-by-1数值向量。年代是经过训练的分类器中支持向量的个数金宝app,总和(Mdl.IsS金宝appupportVector)
.
值为+1
在金宝appSupportVectorLabels
指示对应的支持向量属于正类(金宝app一会{2}
).值为1
指示对应的支持向量属于负类(金宝app一会{1}
).
方法删除重复项RemoveDuplicates
的名称-值对参数fitcsvm
,那么对于一个给定的重复观测集合,即支持向量,金宝app金宝appSupportVectorLabels
包含一个唯一的支持向量标签。金宝app
数据类型:单
|双
金宝appSupportVectors
- - - - - -金宝app支持向量
年代——- - - - - -p数字矩阵
此属性是只读的。
金宝app已训练分类器中的支持向量,指定为年代——- - - - - -p数字矩阵。年代是经过训练的分类器中支持向量的个数金宝app,总和(Mdl.IsS金宝appupportVector)
,p是预测器数据中预测器变量的数量。
金宝appSupportVectors
包含预测器数据行X
MATLAB认为是支持向量。金宝app如果你指定“标准化”,真的
训练SVM分类器时使用fitcsvm
,然后金宝appSupportVectors
的标准化行X
.
方法删除重复项RemoveDuplicates
的名称-值对参数fitcsvm
,那么对于一个给定的重复观测集合,即支持向量,金宝app金宝appSupportVectors
包含一个唯一的支持向量。金宝app
数据类型:单
|双
其他分类属性
CategoricalPredictors
- - - - - -分类预测指标
正整数向量|[]
此属性是只读的。
分类预测指标,指定为正整数向量。CategoricalPredictors
包含指示相应预测符是分类的索引值。索引值在1和之间p
,在那里p
用于训练模型的预测器的数量。如果没有一个预测符是分类的,则此属性为空([]
).
数据类型:双
一会
- - - - - -唯一的类标签
分类数组|字符数组|逻辑向量|数值向量|字符向量的单元格数组
此属性是只读的。
训练中使用的唯一类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。一会
与类标签具有相同的数据类型Y
.(该软件将字符串数组视为字符向量的单元格数组。)一会
也决定了类的顺序。
数据类型:单
|双
|逻辑
|字符
|细胞
|分类
成本
- - - - - -误分类代价
数字方阵
此属性是只读的。
错误分类代价,用数字方阵表示。
对于两节课的学习
成本
属性指定的错误分类代价矩阵成本
拟合函数的名称-值参数。行对应真实的类,列对应预测的类。也就是说,成本(i, j)
将一个点分类的成本是多少j
如果它真正的阶级是我
.的行和列的顺序成本
中类的顺序对应一会
.对于单课学习,
成本= 0
.
数据类型:双
ExpandedPredictorNames
- - - - - -扩展的预测器名称
字符向量的单元格数组
此属性是只读的。
扩展的预测器名称,指定为字符向量的单元格数组。
如果模型对分类变量使用哑变量编码,则ExpandedPredictorNames
包括描述展开变量的名称。否则,ExpandedPredictorNames
和PredictorNames
.
数据类型:细胞
μ
- - - - - -预测方法
数值向量|[]
此属性是只读的。
预测器的意思是,指定为数字向量。如果你指定“标准化”,1
或“标准化”,真的
当你训练SVM分类器时使用fitcsvm
的长度。μ
等于预测因子的数量。
MATLAB利用虚拟变量扩展了预测器数据中的分类变量。μ
为每个预测变量(包括虚拟变量)存储一个值。但是,MATLAB没有对包含分类变量的列进行标准化。
如果你设置“标准化”,假的
当你训练SVM分类器时使用fitcsvm
,然后μ
是空向量([]
).
数据类型:单
|双
PredictorNames
- - - - - -预测变量名称
字符向量的单元格数组
此属性是只读的。
预测器变量名,指定为字符向量的单元格数组。元素的顺序PredictorNames
对应于预测器名称在训练数据中出现的顺序。
数据类型:细胞
之前
- - - - - -先验概率
数值向量
此属性是只读的。
每种类别的先验概率,用数字向量表示。
对于两类学习,如果你指定了一个成本矩阵,那么软件会通过合并成本矩阵中描述的惩罚来更新先验概率。
对于两类学习,软件对指定的先验概率进行归一化
之前
拟合函数的名称-值参数,使概率之和为1。的之前
属性存储归一化先验概率。元素的顺序之前
对应于的元素Mdl。一会
.对于单课学习,
Prior = 1
.
数据类型:单
|双
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
,然后σ
是空向量([]
).
数据类型:单
|双
对象的功能
compareHoldout |
比较使用新数据的两种分类模型的准确性 |
discard金宝appSupportVectors |
线性支持向量机分金宝app类器的支持向量弃用 |
边缘 |
为支持向量机分类器找到分类边金宝app |
fitPosterior |
紧凑型支持向量机(SVM)分类器的后验概率拟合金宝app |
收集 |
收集属性统计和机器学习工具箱来自GPU的对象 |
incrementalLearner |
将二元分类支持向量机(SVM)模型转化为增量学习器金宝app |
石灰 |
局部可解释模型不可知解释(LIME) |
损失 |
找出支持向量机分类器的分类误差金宝app |
保证金 |
为支持向量机分类器找到分类边界金宝app |
partialDependence |
计算部分依赖关系 |
plotPartialDependence |
创建部分依赖图(PDP)和个别条件期望图(ICE) |
预测 |
利用支持向量机(SVM)分类器对观测数据进行分类金宝app |
沙普利 |
沙普利值 |
更新 |
更新用于代码生成的模型参数 |
例子
减少SVM分类器的大小
通过删除训练数据来减少全支持向量机(SVM)分类器的金宝app大小。完整的SVM分类器(即,ClassificationSVM
分类器)保存训练数据。为了提高效率,可以使用较小的分类器。
加载电离层
数据集。
负载电离层
训练SVM分类器。标准化预测器数据并指定类的顺序。
SVMModel = fitcsvm(X,Y,“标准化”,真的,...“类名”, {“b”,‘g’})
SVMModel = ClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 Alpha: [90x1 double] Bias: -0.1342 KernelParameters: [1x1 struct] Mu:[0.8917 0 0.6413 0.0444 0.6011 0.1159 0.5501…]西格玛:[0.3112 0 0.4977 0.4414 0.5199 0.4608 0.4927…] BoxConstraints: [351x1 double] ConvergenceInfo: [1x1 struct] Is金宝appSupportVector: [351x1 logical]求解器:“SMO”属性,方法
SVMModel
是一个ClassificationSVM
分类器。
减小SVM分类器的大小。
CompactSVMModel = compact(vmmodel)
CompactSVMModel = CompactClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' Alpha: [90x1 double]偏差:-0.1342 KernelParameters: [1x1 struct] Mu:[0.8917 0 0.6413 0.0444 0.6011 0.1159 0.5501…]西格玛:[0.3112 0 0.4977 0.4414 0.5199 0.4608 0.4927…] 金宝appSupportVectors: [90x34 double] SupportVectorLabels: [90x1 double]属性,方法
CompactSVMModel
是一个CompactClassificationSVM
分类器。
显示每个分类器使用的内存量。
谁(“SVMModel”,“CompactSVMModel”)
名称大小字节分类属性CompactSVMModel 1x1 31058 classreg.learning.classif.CompactClassificationSVM vmmodel 1x1 141148 ClassificationSVM
完整的SVM分类器(SVMModel
)比紧凑的SVM分类器(CompactSVMModel
).
为了有效地标记新的观察结果,您可以删除SVMModel
从MATLAB®工作区,然后传递CompactSVMModel
和新的预测值预测
.
为了进一步减小紧凑SVM分类器的大小,可以使用discard金宝appSupportVectors
函数丢弃支持向量。金宝app
训练和交叉验证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
交叉验证SVM分类器。默认情况下,该软件实现了10次交叉验证。
或者,你可以交叉验证一个训练过的ClassificationSVM
分类器crossval
.
使用点符号检查一个训练好的折叠。
CVSVMModel。训练有素的{1}
ans = CompactClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' Alpha: [78x1 double]偏差:-0.2210 KernelParameters: [1x1 struct] Mu:[0.8888 0 0.6320 0.0406 0.5931 0.1205 0.5361…]西格玛:[0.3149 0 0.5033 0.4441 0.5255 0.4663 0.4987…] 金宝appSupportVectors: [78x34 double] SupportVectorLabels: [78x1 double]属性,方法
每条折线都是CompactClassificationSVM
分类器训练了90%的数据。
估计泛化误差。
生成器= kfoldLoss(CVSVMModel)
genError = 0.1168
平均而言,泛化误差约为12%。
参考文献
哈斯蒂、T.、R.蒂布谢拉尼和J.弗里德曼。统计学习的要素,第二版。纽约:施普林格,2008。
[2]肖科普夫,B. J. C.普拉特,J. C.肖-泰勒,A. J.斯莫拉和R. C.威廉姆森。“估算高维分布的支持度”金宝app神经计算.第13卷,第7期,2001,第1443-1471页。
[3]克里斯汀尼,N.和J. C.肖-泰勒。支持向量机和其他基于核的学习方法简介金宝app.英国剑桥:剑桥大学出版社,2000年。
[4]肖科普夫,B.和A.斯莫拉。核学习:支持向量机,正则化,优化及超越,自适应金宝app计算和机器学习。马萨诸塞州剑桥:麻省理工学院出版社,2002年。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
将支持向量机分类模型的预测集成到Simulink中金宝app®,你可以使用ClassificationSVM预测的统计和机器学习工具箱™库中的函数块或MATLAB函数块
预测
函数。当你训练SVM模型时使用
fitcsvm
,则适用以下限制。的值
“ScoreTransform”
名称-值对参数不能是匿名函数。为了生成代码来预测给定新观测的后验概率,将训练好的SVM模型传递给fitPosterior
或fitSVMPosterior
.的ScoreTransform
属性包含一个匿名函数,该函数表示分数到后验概率函数,并配置为用于代码生成。对于定点代码生成,的值
“ScoreTransform”
不能为名称-值对参数“invlogit”
.的值“KernelFunction”
名称-值对参数必须为“高斯”
,“线性”
,或多项式的
.对于定点代码生成和使用编码器配置程序的代码生成,适用以下附加限制。
分类预测符(
逻辑
,分类
,字符
,字符串
,或细胞
)不受支持。金宝app您不能使用CategoricalPredictors
名称-值参数。若要在模型中包含分类预测器,请使用dummyvar
在拟合模型之前。类标记,使用
分类
不支持数据类型。金宝app训练数据中的类标签值(资源描述
或Y
的值一会
名称-值参数不能是具有分类
数据类型。
有关更多信息,请参见代码生成简介.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
版本历史
在R2014a中引入R2022a:成本
属性存储用户指定的成本矩阵
从R2022a开始,成本
属性存储用户指定的代价矩阵,以便您可以使用指定的代价值计算观察到的错误分类代价。软件存储标准化先验概率(之前
),不反映成本矩阵中所描述的惩罚。要计算观察到的错误分类代价,请指定LossFun
名称-值参数为“classifcost”
当你打电话给损失
函数。
请注意,模型训练没有改变,因此,类之间的决策边界没有改变。
对于训练,拟合函数通过合并指定成本矩阵中描述的惩罚来更新指定的先验概率,然后将先验概率和观察权重归一化。这种行为没有改变。在以前的版本中,软件将默认成本矩阵存储在成本
属性,并存储用于训练的先验概率之前
财产。从R2022a开始,软件存储用户指定的成本矩阵而不进行修改,并存储不反映成本惩罚的标准化先验概率。详情请参见错误分类成本矩阵,先验概率和观察权重.
一些对象函数使用成本
而且之前
属性:
的
损失
函数中存储的代价矩阵成本
属性LossFun
名称-值参数为“classifcost”
或“mincost”
.的
损失
而且边缘
函数使用存储在之前
属性将输入数据的观测权重归一化。
如果在训练分类模型时指定非默认代价矩阵,则对象函数返回的值与以前版本的值不同。
如果您希望软件像以前版本中那样处理成本矩阵、先验概率和观察权重,请调整非默认成本矩阵的先验概率和观察权重,如中所述调整错误分类成本矩阵的先验概率和观测权重.然后,当你训练一个分类模型,指定调整的先验概率和观察权重使用之前
而且权重
分别使用名称-值参数,并使用默认代价矩阵。
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。