文档

CompactClassificationECOC类

超类:

支持向量机或其他分类器的紧凑多类模型万博1manbetx

描述

CompactClassificationECOC是一个紧凑、多类、纠错输出代码(ECOC)模型。

紧凑分类器不包括用于训练ECOC多类模型的数据。因此,不能使用紧凑分类器执行交叉验证等任务。

使用紧凑的ECOC多类模型标记新数据(换句话说,预测新数据的标签)。

建设

CompactMdl=紧凑(Mdl返回一个紧凑的多类ECOC模型(CompactModel)从一个完整的、经过训练的、多类别的ECOC模型(Mdl)。

CompactMdl= fitcecoc (XY“学习者”,t)返回由线性分类模型组成的紧凑ECOC模型(ClassificationLinear模型对象)。t一定是字符向量“线性”返回的线性分类模型模板对象templateLinear。详情请参见fitcecoc

输入参数

全部展开

完整的,经过训练的,多类的ECOC模型,指定为ClassificationECOC训练分类器fitcecoc

预测器数据,指定为n——- - - - - -p全矩阵或稀疏矩阵。

的长度Y观察的次数X必须是相等的。

分类线性模型训练到的类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。

如果Y是字符数组,每个元素必须对应数组中的一行。的长度Y观察的次数X必须是相等的。

数据类型:字符|细胞|分类|逻辑||

属性

全部展开

训练过的二进制学习器,指定为模型对象的单元向量。BinaryLearners与类一样多的元素Y

软件训练BinaryLearner {j}根据所指定的二进制问题CodingMatrix(:, j)。例如,对于使用SVM学习器的多类学习,中的每个元素BinaryLearners是一个CompactClassificationSVM分类器。

数据类型:细胞

二元学习器损失函数,指定为表示损失函数名称的字符向量。

如果你使用使用不同损失函数的二元学习器进行训练,那么软件就会设置BinaryLoss“汉明”。属性在预测或损失计算过程中设置与此默认值不同的二进制损失函数,可潜在地提高精度BinaryLoss的名称-值对参数预测损失

数据类型:字符

分类预测指标,指定为正整数向量。CategoricalPredictors包含与包含分类预测器的预测器数据列对应的索引值。如果没有一个预测符是分类的,则此属性为空([])。

数据类型:|

训练中使用的唯一类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。一会具有与类标签相同的数据类型(Y)。一会也决定了类的顺序。

数据类型:分类|字符|逻辑|||细胞

二进制学习器的类赋值代码,指定为数值矩阵。CodingMatrix是一个K——- - - - - -l矩阵,K是班级的数量和l是二元学习器的数目。

的元素CodingMatrix-10,或1,该值对应于二分类的类赋值。的含义CodingMatrix (i, j)即班即学习者j分配给课堂上的观察

价值 二分类分配
-1 负类
0 培训前,学习者j删除类中的观察值从数据集中。
1 积极的课堂

数据类型:||int8|int16|int32|int64

此属性是只读的。

错误分类代价,指定为方阵数字矩阵。成本K行和列,其中K是类的数量。

成本(j将一个点分类的成本是多少j如果它真正的阶级是。的行和列的顺序成本中类的顺序对应一会

fitcecoc结合了不同类型二元学习器的错误分类代价。

数据类型:

扩展的预测器名称,存储为字符向量的单元格数组。

如果模型对分类变量使用编码,则ExpandedPredictorNames包括描述展开变量的名称。否则,ExpandedPredictorNamesPredictorNames

二进制学习器权重,指定为数值行向量。LeanerWeights长度等于二元学习器的数量(大小(CodingMatrix, 2))。

LearnerWeights (j观察权重的和是二元学习者吗j用于训练它的分类器。

软件使用LearnerWeights通过最小化Kullback-Leibler散度来拟合后验概率。

数据类型:|

预测器名称按其在预测器数据中出现的顺序排列(X),指定为字符向量的单元格数组。的长度PredictorNames等于里面的列数X

数据类型:细胞

此属性是只读的。

优先类概率,指定为数值向量。之前与类一样多的元素一会,元素的顺序对应于的元素一会

fitcecoc结合了不同类型二元学习器的错误分类代价。

数据类型:

响应变量名,指定为字符数组。

数据类型:字符

分数转换函数应用于预测分数,指定为字符向量或函数句柄。

要将分数转换函数更改为,例如,函数,使用点表示法。

  • 对于内置函数,输入此代码并替换函数表中的字符向量。

    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模型(即,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分类器。然后,交叉验证分类器。

加载费雪的虹膜数据集。

负载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};

tNBtSVM分别为朴素贝叶斯和支持向量机学习的模板对象。他们指出在训练中使用什么选项。除了使用名称-值对参数指定的属性外,它们的大多数属性都是空的。软件在训练期间用默认值填充空属性。

使用二元学习器模板和一对全编码设计训练和交叉验证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%。

算法

全部展开

参考文献

[1] Fürnkranz,约翰内斯。“循环式分类。”机器学习研究,Vol. 2, 2002, pp. 721-747。

[2] Escalera, S., O. Pujol, P. Radeva。纠错输出码的稀疏设计的三进制码的可分性。模式识别通讯,第30卷,第3期,2009,页285-297。

扩展功能

在R2014b中引入

这个话题有用吗?