CompactClassificationECOC类
超类:
支持向量机或其他分类器的紧凑多类模型万博1manbetx
描述
CompactClassificationECOC
是一个紧凑、多类、纠错输出代码(ECOC)模型。
紧凑分类器不包括用于训练ECOC多类模型的数据。因此,不能使用紧凑分类器执行交叉验证等任务。
使用紧凑的ECOC多类模型标记新数据(换句话说,预测新数据的标签)。
建设
返回一个紧凑的多类ECOC模型(CompactMdl
=紧凑(Mdl
)CompactModel
)从一个完整的、经过训练的、多类别的ECOC模型(Mdl
)。
返回由线性分类模型组成的紧凑ECOC模型(CompactMdl
= fitcecoc (X
,Y
“学习者”,t)ClassificationLinear
模型对象)。t
一定是字符向量“线性”
返回的线性分类模型模板对象templateLinear
。详情请参见fitcecoc
。
输入参数
Mdl
- - - - - -完整,训练有素,多类,ECOC模型
ClassificationECOC
分类器
完整的,经过训练的,多类的ECOC模型,指定为ClassificationECOC
训练分类器fitcecoc
。
X
- - - - - -预测数据
完整的矩阵|稀疏矩阵
预测器数据,指定为n——- - - - - -p全矩阵或稀疏矩阵。
的长度Y
观察的次数X
必须是相等的。
Y
- - - - - -类标签
分类数组|字符数组|逻辑向量|数值向量|字符向量的单元格数组
分类线性模型训练到的类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。
如果Y
是字符数组,每个元素必须对应数组中的一行。的长度Y
观察的次数X
必须是相等的。
数据类型:字符
|细胞
|分类
|逻辑
|单
|双
属性
BinaryLearners
- - - - - -训练有素的二元学习者
模型对象的单元格向量
训练过的二进制学习器,指定为模型对象的单元向量。BinaryLearners
与类一样多的元素Y
。
软件训练BinaryLearner {j}
根据所指定的二进制问题CodingMatrix
(:, j)
。例如,对于使用SVM学习器的多类学习,中的每个元素BinaryLearners
是一个CompactClassificationSVM
分类器。
数据类型:细胞
CategoricalPredictors
- - - - - -分类预测因子的索引
正整数向量
分类预测指标,指定为正整数向量。CategoricalPredictors
包含与包含分类预测器的预测器数据列对应的索引值。如果没有一个预测符是分类的,则此属性为空([]
)。
数据类型:单
|双
一会
- - - - - -唯一的类标签
分类数组|字符数组|逻辑向量|数值向量|字符向量的单元格数组
训练中使用的唯一类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。一会
具有与类标签相同的数据类型(Y
)。一会
也决定了类的顺序。
数据类型:分类
|字符
|逻辑
|单
|双
|细胞
CodingMatrix
- - - - - -课堂作业规范
数字矩阵
二进制学习器的类赋值代码,指定为数值矩阵。CodingMatrix
是一个K——- - - - - -l矩阵,K是班级的数量和l是二元学习器的数目。
的元素CodingMatrix
是-1
,0
,或1
,该值对应于二分类的类赋值。的含义CodingMatrix (i, j)
即班即学习者j
分配给课堂上的观察我
。
价值 | 二分类分配 |
---|---|
-1 |
负类 |
0 |
培训前,学习者j 删除类中的观察值我 从数据集中。 |
1 |
积极的课堂 |
数据类型:双
|单
|int8
|int16
|int32
|int64
成本
- - - - - -误分类代价
方形数值矩阵
此属性是只读的。
错误分类代价,指定为方阵数字矩阵。成本
有K行和列,其中K是类的数量。
成本(
将一个点分类的成本是多少我
,j
)j
如果它真正的阶级是我
。的行和列的顺序成本
中类的顺序对应一会
。
fitcecoc
结合了不同类型二元学习器的错误分类代价。
数据类型:双
ExpandedPredictorNames
- - - - - -扩展的预测器名称
字符向量的单元格数组
扩展的预测器名称,存储为字符向量的单元格数组。
如果模型对分类变量使用编码,则ExpandedPredictorNames
包括描述展开变量的名称。否则,ExpandedPredictorNames
和PredictorNames
。
LearnerWeights
- - - - - -二元学习器权重
数字行向量
二进制学习器权重,指定为数值行向量。LeanerWeights
长度等于二元学习器的数量(大小(CodingMatrix, 2)
)。
LearnerWeights (
观察权重的和是二元学习者吗j
)j
用于训练它的分类器。
软件使用LearnerWeights
通过最小化Kullback-Leibler散度来拟合后验概率。
数据类型:双
|单
PredictorNames
- - - - - -预测的名字
字符向量的单元格数组
预测器名称按其在预测器数据中出现的顺序排列(X
),指定为字符向量的单元格数组。的长度PredictorNames
等于里面的列数X
。
数据类型:细胞
之前
- - - - - -先验类概率
数值向量
此属性是只读的。
优先类概率,指定为数值向量。之前
与类一样多的元素一会
,元素的顺序对应于的元素一会
。
fitcecoc
结合了不同类型二元学习器的错误分类代价。
数据类型:双
ResponseName
- - - - - -响应变量名
字符数组
响应变量名,指定为字符数组。
数据类型:字符
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
方法
compareHoldout | 比较使用新数据的两种分类模型的准确性 |
discard万博1manbetxSupportVectors | 舍弃线性支持向量万博1manbetx机二元学习器的支持向量 |
边缘 | 用于多类、纠错输出代码模型的分类边 |
损失 | 多类纠错输出码模型的分类损失 |
保证金 | 多类、纠错输出代码模型的分类裕度 |
预测 | 使用多类、纠错输出代码模型预测标签 |
selectModels | 选择正则化线性分类模型的子集 |
复制语义
价值。要了解值类如何影响复制操作,请参见复制对象(MATLAB)。
例子
减小完整ECOC模型的尺寸
完整ECOC模型(即,ClassificationECOC
分类器)保存训练数据。为了提高效率,您可能不希望使用大型分类器来预测新标签。
加载费雪的虹膜数据集。
负载fisheririsX = meas;Y =物种;
使用默认支持向量机作为二元学习器来训练ECOC模型。
Mdl = fitcecoc(X,Y)
Mdl = ClassificationECOC ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' BinaryLearners: {3x1 cell} CodingName: 'onevsone'属性,方法
Mdl
是一个ClassificationECOC
模型。
减小ECOC模型的大小。
CMdl =紧凑(Mdl)
CMdl = classreg.learning.classif.CompactClassificationECOC ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' BinaryLearners: {3x1 cell} CodingMatrix: [3x3 double]属性,方法
CMdl
是一个CompactClassificationECOC
模型。
显示每个分类器消耗多少内存。
谁(“Mdl”,“CMdl”)
名称大小字节类属性CMdl 1x1 12764 classreg.learning.classif.CompactClassificationECOC Mdl 1x1 25337 ClassificationECOC
完整的ECOC模型(Mdl
)的尺寸几乎是ECOC小型车(CMdl
)。
你可以移除Mdl
从MATLAB®工作区,并通过CMdl
和新的预测值预测
有效地标记新的观察结果。
训练和交叉验证ECOC分类器
使用不同的二元学习器和一对全编码设计训练ECOC分类器。然后,交叉验证分类器。
加载费雪的虹膜数据集。
负载fisheririsX = meas;Y =物种;classNames =唯一的(物种(~strcmp(物种,'')))删除空类
一会=3x1单元阵列{'setosa'} {'versicolor'} {'virginica'}
K = number (classNames)%类数
K = 3
rng (1);%用于再现性
一会
数据集中是唯一的类,和K
是类的数量。你可以使用一会
在培训期间指定课程的顺序。
对于一个单一对所有的编码设计,有K
= 3个二元学习器。为二元学习器指定模板如下:
二元学习器1和2是朴素贝叶斯分类器。默认情况下,每个预测器都是有条件的正态分布。
二元学习器3是支持向量机分类器。指定使用高斯核。
tNB = templateNaiveBayes();tSVM =模板vm (“KernelFunction”,“高斯”);tLearners = {tNB tNB tSVM};
tNB
和tSVM
分别为朴素贝叶斯和支持向量机学习的模板对象。他们指出在训练中使用什么选项。除了使用名称-值对参数指定的属性外,它们的大多数属性都是空的。软件在训练期间用默认值填充空属性。
使用二元学习器模板和一对全编码设计训练和交叉验证ECOC分类器。指定类的顺序。默认情况下,朴素贝叶斯分类器使用后验概率作为分数,而SVM分类器使用到决策边界的距离。因此,要聚合二元学习器,必须指定拟合后验概率。
CVMdl = fitcecoc(X,Y,“类名”一会,“CrossVal”,“上”,...“学习者”tLearners,“FitPosterior”1);
CVMdl
不是ClassificationECOC
模型,但一个ClassificationPartitionedECOC
旨在模型。默认情况下,该软件实现了10次交叉验证。二元学习器的分数具有相同的形式(即,它们是后验概率),因此该软件可以适当地聚合二元分类的结果。
使用点符号检查一个训练好的折叠。
CVMdl。训练有素的{1}
ans = classreg. learning.classif.c compactclassificationecoc ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' BinaryLearners: {3x1 cell} CodingMatrix: [3x3 double]属性,方法
每条折线都是CompactClassificationECOC
模型在90%的数据上进行训练。
您可以使用点表示法和单元格索引访问二进制学习器的结果。在第一叠中显示训练好的SVM分类器(第三个二元学习器)。
CVMdl.Trained {1} .BinaryLearners {3}
ans = classreg.learning.classif.CompactClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [-1 1] ScoreTransform: '@(S)sigmoid(S,-4.016268e+00,-3.243751e-01)' Alpha: [33x1 double] Bias: -0.1345 KernelParameters: [1x1 struct] 万博1manbetxSupportVectors: [33x4 double] SupportVectorLabels: [33x1 double] Properties, Methods
估计泛化误差。
genError = kfoldLoss(cvdl)
genError = 0.0333
平均而言,泛化误差约为3%。
算法
随机编码设计矩阵
例如,对于给定数量的类,K,软件生成随机编码设计矩阵如下所示。
该软件生成以下其中一个:
密集随机-软件以相等的概率为每个元素分配1或-1K——- - - - - -ld编码设计矩阵,其中
稀疏随机-软件为元素的每个元素赋值1K——- - - - - -l年代概率为0.25的编码设计矩阵,概率为0.25的-1,概率为0.5的0,其中
如果一列不包含至少一个1和至少一个-1,那么软件将删除该列。
对于不同的列u和v,如果u=v或u= -v,然后软件删除v从编码设计矩阵。
软件默认随机生成10,000个矩阵,并根据汉明测度([4])由
万博1manbetx支持向量存储
对于线性SVM二元学习器和效率,fitcecoc
清空属性α
,万博1manbetxSupportVectorLabels
,万博1manbetxSupportVectors
。fitcecoc
列表β
,而不是α
,在模型中显示。
来存储α
,万博1manbetxSupportVectorLabels
,万博1manbetxSupportVectors
,传递一个指定存储支持向量的线性SVM模板万博1manbetxfitcecoc
。例如,输入:
t = templateSVM(“Save万博1manbetxSupportVectors”,“上”) Mdl = fitcecoc(X,Y,“学习者”t);
您可以通过传递结果来删除支持向量和相关万博1manbetx值ClassificationECOC
模型discard万博1manbetxSupportVectors
。
参考文献
[1] Fürnkranz,约翰内斯。“循环式分类。”机器学习研究,Vol. 2, 2002, pp. 721-747。
[2] Escalera, S., O. Pujol, P. Radeva。纠错输出码的稀疏设计的三进制码的可分性。模式识别通讯,第30卷,第3期,2009,页285-297。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
只有
预测
函数支持代码生成。万博1manbetx当你训练ECOC模型时使用
fitcecoc
,则适用以下限制。你不能用
“FitPosterior”
名称-值对参数。所有二元学习器必须是支持向量机分类器或线性分类模型。为
“学习者”
参数,您可以指定:“支持向量机”
或“线性”
SVM模板对象或此类对象的单元格向量(参见
templateSVM
)线性分类模型模板对象或此类对象的单元格向量(参见
templateLinear
)
SVM分类器和线性分类模型的代码生成限制也适用于ECOC分类器,这取决于二元学习器的选择。详情请参见代码生成的
ClassificationSVM
类和代码生成的ClassificationLinear
类。
有关代码生成示例,请参见用于预测的代码生成工作流和为代码生成指定可变大小的参数。有关更多信息,请参阅中的主题代码生成。
在R2014b中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。