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
包含与包含分类预测器的预测器数据列对应的索引值。如果没有一个预测符是分类的,则此属性为空([]
).
数据类型:单
|双
一会
- - - - - -唯一的类标签
分类数组|字符数组|逻辑向量|数值向量|字符向量的单元格数组
此属性是只读的。
训练模型时使用的唯一类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。
数据类型:单
|双
|逻辑
|字符
|细胞
|分类
成本
- - - - - -误分类代价
数字方阵
此属性是只读的。
错误分类代价,指定为数字方阵,其中成本(i, j)
将一个点分类的成本是多少j
如果它真正的阶级是我
.
在训练过程中,软件通过合并成本矩阵中描述的惩罚来更新先验概率。
对于两节课的学习,
成本
总是有这样的形式:成本(i,j) = 1
如果I ~= j
,Cost(i,j) = 0
如果I = j
.行对应真实的类,列对应预测的类。的行和列的顺序成本
中类的顺序对应一会
.对于单课学习,
成本= 0
.
详情请参见算法.
数据类型:双
ExpandedPredictorNames
- - - - - -扩展的预测器名称
字符向量的单元格数组
此属性是只读的。
扩展的预测器名称,指定为字符向量的单元格数组。
如果模型对分类变量使用哑变量编码,则ExpandedPredictorNames
包括描述展开变量的名称。否则,ExpandedPredictorNames
和PredictorNames
.
数据类型:细胞
μ
- - - - - -预测方法
数值向量|[]
此属性是只读的。
预测器的意思是,指定为数字向量。如果你指定“标准化”,1
或“标准化”,真的
当你训练SVM分类器时使用fitcsvm
的长度μ
等于预测因子的数量。
MATLAB使用全虚拟编码扩展预测器数据中的分类变量。也就是说,MATLAB为每个分类变量的每一层创建一个虚拟变量。μ
为每个预测变量(包括虚拟变量)存储一个值。但是,MATLAB没有对包含分类变量的列进行标准化。
如果你设置“标准化”,假的
当你训练SVM分类器时使用fitcsvm
,然后μ
是空向量([]
).
数据类型:单
|双
PredictorNames
- - - - - -预测变量名称
字符向量的单元格数组
此属性是只读的。
预测器变量名,指定为字符向量的单元格数组。元素的顺序PredictorNames
对应于预测器名称在训练数据中出现的顺序。
数据类型:细胞
之前
- - - - - -先验概率
数值向量
此属性是只读的。
每种类别的先验概率,用数字向量表示。元素的顺序之前
对应于的元素Mdl。一会
.
对于两类学习,如果你指定了一个成本矩阵,那么软件会通过合并成本矩阵中描述的惩罚来更新先验概率。
详情请参见算法.
数据类型:单
|双
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为每个分类变量的每一层创建一个虚拟变量。σ
为每个预测变量(包括虚拟变量)存储一个值。但是,MATLAB没有对包含分类变量的列进行标准化。
如果你设置“标准化”,假的
当你训练SVM分类器时使用fitcsvm
,然后σ
是空向量([]
).
数据类型:单
|双
对象的功能
compareHoldout |
比较使用新数据的两种分类模型的准确性 |
discard金宝appSupportVectors |
线性支持向量机分金宝app类器的支持向量弃用 |
边缘 |
为支持向量机分类器找到分类边金宝app |
fitPosterior |
紧凑型支持向量机(SVM)分类器的后验概率拟合金宝app |
incrementalLearner |
将二元分类支持向量机(SVM)模型转化为增量学习器金宝app |
损失 |
找出支持向量机分类器的分类误差金宝app |
保证金 |
为支持向量机分类器找到分类边界金宝app |
partialDependence |
计算部分依赖关系 |
plotPartialDependence |
创建部分依赖图(PDP)和个别条件期望图(ICE) |
预测 |
利用支持向量机(SVM)分类器对观测数据进行分类金宝app |
更新 |
更新用于代码生成的模型参数 |
例子
减少SVM分类器的大小
通过移除训练数据来减小完整SVM分类器的大小。完整的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.1343 KernelParameters: [1x1 struct] Mu: [1x34 double] Sigma: [1x34 double] BoxConstraints: [351x1 double] ConvergenceInfo: [1x1 struct] Is金宝appSupportVector: [351x1 logical] Solver: 'SMO' Properties, Methods
SVMModel
是一个ClassificationSVM
分类器。
减小SVM分类器的大小。
CompactSVMModel = compact(vmmodel)
CompactSVMModel = CompactClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' Alpha: [90x1 double]偏差:-0.1343 KernelParameters: [1x1 struct] Mu: [1x34 double] Sigma: [1x34 double] Supp金宝apportVectors: [90x34 double] SupportVectorLabels: [90x1 double] Properties, Methods
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.2209 KernelParameters: [1x1 struct] Mu: [1x34 double] Sigma: [1x34 double] Supp金宝apportVectors: [78x34 double] SupportVectorLabels: [78x1 double] Properties, Methods
每条折线都是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
,则适用以下限制。类标记输入参数值(
Y
)不能是分类数组。代码生成不支持分类预测器(金宝app
逻辑
,分类
,字符
,字符串
,或细胞
).如果在表中提供训练数据,则预测器必须是数字(双
或单
).而且,不能使用“CategoricalPredictors”
名称-值对参数。若要在模型中包含分类预测器,请使用dummyvar
在拟合模型之前。的值
“类名”
名称-值对参数不能为分类数组。的值
“ScoreTransform”
名称-值对参数不能是匿名函数。为了生成代码来预测给定新观测的后验概率,将训练好的SVM模型传递给fitPosterior
或fitSVMPosterior
.的ScoreTransform
属性包含一个匿名函数,该函数表示分数到后验概率函数,并配置为用于代码生成。对于定点代码生成,的值
“ScoreTransform”
不能为名称-值对参数“invlogit”
.的值“KernelFunction”
名称-值对参数必须为“高斯”
,“线性”
,或多项式的
.
有关更多信息,请参见代码生成简介.
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。