主要内容

CompactClassificeCoc.

支持向量机(svm)等分类器的紧凑多类模型金宝app

描述

CompactClassificeCoc.是多类纠错输出码(ECOC)模型的紧凑版本。紧凑分类器不包括用于训练多类ECOC模型的数据。因此,您不能使用紧凑分类器执行某些任务,例如交叉验证。使用紧凑的多类ECOC模型进行任务,如对新数据进行分类(预测)。

创建

您可以创建CompactClassificeCoc.模型有两种方式:

  • 从一个受过训练的人创建一个紧凑的ECOC模型Classifiedecoc.模型,使用紧凑的对象的功能。

  • 创建一个紧凑的ECOC模型使用fitcecoc函数,并指定'学习者'名称-值对参数为“线性”“内核”,一个templateLineartemplateKernel对象,或这些对象的小区阵列。

属性

全部展开

在创建CompactClassificeCoc.模型对象,您可以使用点符号来访问它的属性。例如,请参见火车和交叉验证ECOC分类器

ecoc属性

经过训练的二进制学习者,指定为模型对象的细胞向量。二元学习者的数量取决于课堂的数量y和编码设计。

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

数据类型:细胞

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

如果你使用使用不同损失函数的二进制学习器进行训练,那么软件就会设置二进制数'汉明'.为了潜在地提高精度,在预测或损失计算期间指定一个二进制损失函数而不是默认值“BinaryLoss”的名称-值对参数预测损失

数据类型:字符

二进制学习者的班级分配代码,指定为数字矩阵。CodingMatrix.是一个K.——- - - - - -L.矩阵,K.是课程数量和L.是二元学习者的数量。

的元素CodingMatrix.10.,或1,这些值对应于二分法的课堂作业。这个表描述了如何学习j在课堂上分配观察一世对应于值的二分类类CodingMatrix(I,J)

价值 两个类的任务
1 学习者j在课堂上分配观察一世给负类。
0. 在培训之前,学习者j删除类中的观察值一世从数据集。
1 学习者j在课堂上分配观察一世一个积极的班级。

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

二元学习权值,指定为数字行向量。的长度学习者重量等于二进制学习者的人数(长度(Mdl.BinaryLearners))。

LearnerWeights (j)观察权值的和是二元学习者吗j用来训练其分类器。

软件使用学习者重量通过最小化Kullback-Leibler发散来拟合后验概率。软件忽略了学习者重量采用二次规划方法估计后验概率。

数据类型:|

其他分类属性

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

数据类型:|

训练中使用的唯一类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元数组。Classnames.具有与类标签相同的数据类型y(该软件将字符串数组视为字符向量的单元格阵列。)Classnames.也决定了类的顺序。

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

此属性是只读的。

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

成本(i, j)将一个点分类的成本是多少j如果它真正的阶级是一世.的行和列的顺序成本对应于类的顺序Classnames.

fitcecoc在不同类型的二进制学习者中不同地融入错误分类费用。

数据类型:

预测器名称按其在预测器数据中的出现顺序排列,指定为字符向量的单元格数组。的长度PredictorNames等于训练数据中变量的个数X资源描述用作预测变量。

数据类型:细胞

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

如果模型使用对分类变量的编码,那么ExpandedPredictorNames包括描述扩展变量的名称。否则,ExpandedPredictorNames是一样的PredictorNames

数据类型:细胞

此属性是只读的。

先验类概率,指定为数字向量。之前元素的数量和类的数量一样多Classnames.,元素的顺序与类的顺序相对应Classnames.

fitcecoc在不同类型的二进制学习者中不同地融入错误分类费用。

数据类型:

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

数据类型:字符

分数转换功能适用于预测的分数,指定为函数名称或函数句柄。

将分数转换函数改为函数,例如,使用点符号。

  • 对于内置函数,输入此代码并替换函数使用表中的值。

    Mdl。ScoreTransform = '函数'

    价值 描述
    “doublelogit” 1 / (1 +E.2X
    “invlogit” 日志(X/ (1 -X)))
    “ismax” 将分数最大的班级的分数设置为1,并将所有其他班级的分数设置为0
    'logit' 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 使用新数据比较两个分类模型的准确性
丢弃普罗斯韦普金宝app罗斯韦 丢弃ECOC模型金宝app中线性支持向量机二进制学习器的支持向量
边缘 多类纠错输出码(ECOC)模型的分类边缘
石灰 本地可解释模型 - 不可知的解释(石灰)
损失 多类纠错输出码(ECOC)模型的分类损失
保证金 多类纠错输出码(ECOC)模型的分类裕度
部分竞争 计算部分依赖
plotPartialDependence 创建部分依赖图(PDP)和个人有条件期望(ICE)情节
预测 使用多类纠错输出码(ECOC)模型对观测进行分类
福芙 沙普利值
selectModels 选择由二进制组成的多类ECOC模型子集ClassificationLinear学习者
更新 更新代码生成的模型参数

例子

全部收缩

通过删除训练数据来减小整个ECOC模型的大小。完整ECOC型号(Classifiedecoc.模型)保存训练数据。为了提高效率,使用较小的分类器。

载入费雪的虹膜数据集。指定预测器数据X,响应数据y,和班级的顺序y

加载fisheririsX =量;Y =分类(物种);classOrder =独特(Y);

使用支持向量机二分类器训练ECOC模型。使用支持向量机模板标准化预测数据T.,并指定类的顺序。在培训期间,该软件使用空选项的默认值T.

t = templateSVM (“标准化”,真正的);Mdl = fitcecoc (X, Y,'学习者't“类名”, classOrder);

Mdl是一个Classifiedecoc.模型。

减少ecop模型的大小。

CompactMdl =紧凑(Mdl)
CompactMdl = CompactClassificationECOC ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [setosa versicolor virginica] ScoreTransform: 'none' BinaryLearners: {3x1 cell} CodingMatrix: [3x3 double]属性,方法

compactmdl.是一个CompactClassificeCoc.模型。compactmdl.不存储所有的属性Mdl商店。特别是,它不存储训练数据。

显示每个分类器使用的内存数量。

谁是(“CompactMdl”“Mdl”
名称大小字节类属性CompactMDL 1x1 15116 ClassReg.Learning.Classif.comPactClassificationCoc MDL 1x1 28357 ClassificeCoc

完整的ECOC模型(Mdl)的尺寸大约是紧凑型ECOC的两倍(compactmdl.)。

为了有效地标记新的观察结果,您可以删除Mdl从MATLAB®工作空间,然后通过compactmdl.和新的预测值预测

使用不同的二进制学习器和一对一的编码设计来训练和交叉验证ECOC分类器。

载入费雪的虹膜数据集。指定预测器数据X以及响应数据y.确定类名和类的数量。

加载fisheririsX =量;y =物种;ClassNames =唯一(物种(〜strcmp(物种,'')))%删除空类
Classnames =.3 x1细胞{'setosa'} {'versicolor'} {'virginica'}
K =元素个数(类名)%类数
K = 3

您可以使用Classnames.在培训期间指定课程的顺序。

对于一个与之所有编码设计,此示例具有K.= 3位二元学习者。为二进制学习者指定模板,例如:

  • 二元学习器1和2是朴素贝叶斯分类器。默认情况下,每个预测器都是有条件的,正态分布的。

  • 二值学习器3是一个支持向量机分类器。指定使用高斯核。

rng (1);%的再现性tNB = templateNaiveBayes ();tSVM = templateSVM (“KernelFunction”“高斯”);tLearners = {tNB tNB tSVM};

TNB.tSVM是天真贝叶斯和SVM学习的模板对象。对象表示在培训期间使用的选项。除名称 - 值对参数指定之外,它们的大部分属性都是空的。在培训期间,软件填充了空的属性,默认值。

使用二进制学习者模板和唯一的所有编码设计训练和交叉验证ECOC分类器。指定类的顺序。默认情况下,天真贝贝斯分类器使用后验概率作为分数,而SVM分类器使用决策边界的距离。因此,要汇总二进制学习者,您必须指定适合后部概率。

CVMdl = fitcecoc (X, Y,“类名”一会,'横向''在'...'学习者'tLearners,'fitposterior',真正的);

CVMdl是一个ClassificationPartitionedECOC旨在模型。默认情况下,该软件实现10倍交叉验证。二进制学习者的分数具有相同的形式(即,它们是后验概率),因此软件可以正确地聚合二进制分类的结果。

使用点符号检查一个训练过的折叠。

CVMdl。训练有素的{1}
ans = CompactClassificationECOC ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' BinaryLearners: {3x1 cell} CodingMatrix: [3x3 double]属性,方法

每条折线都是CompactClassificeCoc.模型培训了90%的数据。

您可以使用点表示法和单元格索引来访问二进制学习器的结果。在第一个折叠中显示训练过的SVM分类器(第三个二进制学习器)。

CVMdl.Trained {1} .BinaryLearners {3}
ANS = CompactClassificationsVM ResponseAme:'Y'类预备主器:[] ClassNames:[-1 1] ScorEtransform:'@(s)sigmoid(s,-4.016735e + 00,-3.243061e-01)'alpha:[33x1双]偏见:-0.1345内核参数:[1x1 struct] SupportSVectors金宝app:[33x4 Double] SupportSVectorLabels:[33x1双]属性,方法

估计泛化误差。

genError = kfoldLoss (CVMdl)
genError = 0.0333

平均而言,泛化误差约为3%。

算法

全部展开

参考文献

[1]Fürnkranz,约翰内斯。“循环罗宾分类。”机床学习研究,卷。2002年,第721-747页。

Pujol, S. Escalera, S. O. Pujol, P. Radeva。用于纠错输出码稀疏设计的三元码的可分性。模式识别的字母, Vol. 30, Issue 3, 2009, pp. 285-297。

扩展功能

介绍了R2014b