主要内容

ClassificationPartitionedLinearECOC

包:classreg.learning.partition
超类:ClassificationPartitionedModel

用于高维数据多类分类的交叉验证线性纠错输出码模型

描述

ClassificationPartitionedLinearECOC是一组纠错输出码(ECOC)模型,由线性分类模型组成,在交叉验证的折叠上训练。使用一个或多个“kfold”函数通过交叉验证评估分类质量:kfoldPredictkfoldLosskfoldMargin,kfoldEdge

每个“kfold”方法都使用在折叠内观测上训练的模型来预测折叠外观测的响应。例如,假设您使用五次折叠进行交叉验证。在这种情况下,软件将每个观察结果随机分配到五个大小大致相同的组。的培训褶皱包含四组(即大约4/5的数据)和测试褶皱包含另一组(即大约1/5的数据)。在这种情况下,交叉验证按以下方式进行。

  1. 软件训练第一个模型(存储在CVMdl。训练有素的{1})使用后四组的观测值,并保留第一组的观测值进行验证。

  2. 软件训练第二个模型(存储在CVMdl。训练有素的{2})利用第一组和后三组的观察结果。软件保留第二组的观察结果以供验证。

  3. 该软件以类似的方式处理第三、第四和第五个模型。

如果通过调用验证kfoldPredict,它使用第一个模型计算第1组观测值的预测,使用第二个模型计算第2组观测值的预测,依此类推。简而言之,该软件使用在没有该观察的情况下训练的模型来估计每个观察的响应。

请注意

ClassificationPartitionedLinearECOC模型对象不存储预测器数据集。

建设

CVMdl = fitcecoc(X,Y,'学习者',t,名称,值)返回一个交叉验证的线性ECOC模型,当:

  • t“线性”返回的模板对象templateLinear

  • 的名字是其中之一“CrossVal”“CVPartition”“坚持”,或“KFold”

详情请参见fitcecoc

属性

全部展开

交叉验证的属性

交叉验证的模型名称,指定为字符向量。

例如,“ECOC”指定交叉验证的ECOC模型。

数据类型:字符

交叉验证的折叠数,指定为正整数。

数据类型:

交叉验证参数值,例如,作为对象指定的用于交叉验证ECOC分类器的名值对参数值。ModelParameters不包含估计参数。

访问属性ModelParameters使用点表示法。

训练数据中的观察数,指定为正数值标量。

数据类型:

数据分区,表示软件如何将数据分割为交叉验证折叠,指定为cvpartition模型。

的单元格数组上训练的紧凑分类器CompactClassificationECOC模型。训练有素的k细胞,k是折叠的数量。

数据类型:细胞

用于交叉验证模型的观察权重,指定为数值向量。WNumObservations元素。

该软件将用于训练的权重规范化,以便sum (W, omitnan)1

数据类型:|

用于交叉验证模型的观察类标签,指定为类别或字符数组、逻辑或数字向量,或字符向量的单元格数组。YNumObservations元素,并且是与输入参数相同的数据类型Y你传给了fitcecoc交叉验证模型。(该软件将字符串数组视为字符向量的单元格数组。)

每行Y表示预测器数据中观测值的观测分类。

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

ECOC属性

此属性是只读的。

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

默认情况下,如果所有的二元学习器都是使用SVM的线性分类模型,则BinaryLoss“枢纽”.如果所有二元学习器都是使用逻辑回归的线性分类模型,则BinaryLoss“二次”.方法在预测或损失计算过程中指定一个二进制损失函数,以潜在地提高精度BinaryLoss的名称-值参数kfoldPredictkfoldLoss

有关支持的二进制损失函数的列表,金宝app请参见二元损失

数据类型:字符

二进制学习器类标签,指定为数字矩阵或[]

  • 如果编码矩阵在不同折叠间相同,则BinaryY是一个NumObservations——- - - - - -l矩阵,l是二元学习器的数目(大小(CodingMatrix, 2)).

    的元素BinaryY-10,或1,该值对应于二分类的类赋值。该表描述了如何学习j分配的观察k的值对应于的二分类类BinaryY (k, j)

    价值 二分类分配
    1 学习者j分配的观察k到一个消极的班级。
    0 培训前,学习者j删除的观察k从数据集中。
    1 学习者j分配的观察k去上积极向上的课。

  • 如果编码矩阵在不同折叠间变化,则BinaryY为空([]).

数据类型:

为二进制学习器指定类作业的代码,指定为数值矩阵或[]

  • 如果编码矩阵在不同折叠间相同,则CodingMatrix是一个K——- - - - - -l矩阵。K是班级的数量和l是二元学习器的数目。

    的元素CodingMatrix-10,或1,该值对应于二分类的类赋值。该表描述了如何学习j在课堂上布置观察的值对应于的二分类类CodingMatrix (i, j)

    价值 二分类分配
    1 学习者j在课堂上布置观察到一个消极的班级。
    0 培训前,学习者j删除类中的观察值从数据集中。
    1 学习者j在课堂上布置观察去上积极向上的课。

  • 如果编码矩阵在不同折叠间变化,则CodingMatrix为空([]).方法获得每个折叠的编码矩阵训练有素的财产。例如,CVMdl.Trained {1} .CodingMatrix编码矩阵是否在交叉验证ECOC模型的第一叠CVMdl

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

其他分类属性

分类预测指标,指定为正整数向量。CategoricalPredictors包含指示相应预测符是分类的索引值。索引值在1和之间p,在那里p用于训练模型的预测器的数量。如果没有一个预测符是分类的,则此属性为空([]).

数据类型:|

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

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

此属性是只读的。

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

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

数据类型:

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

数据类型:细胞

此属性是只读的。

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

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

数据类型:

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

数据类型:字符

应用于预测分数的分数转换函数,指定为函数名或函数句柄。

对于线性分类模型和变换前的预测分类评分进行观察x(行向量)为fx) =xβ+b,在那里β而且b对应于Mdl。β而且Mdl。偏见,分别。

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

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

    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

方法

kfoldEdge 未用于训练的观测数据的分类边缘
kfoldLoss 未用于训练的观察结果的分类损失
kfoldMargin 训练中未使用的观察值的分类裕度
kfoldPredict 预测不用于训练的观察结果的标签

复制语义

价值。要了解值类如何影响复制操作,请参见复制对象

例子

全部折叠

加载NLP数据集。

负载nlpdata

X是一个稀疏矩阵的预测数据,和Y是类标签的分类向量。

交叉验证一个多类线性分类模型,该模型可以根据页面上的字数确定文档网页来自哪个MATLAB®工具箱。

rng (1);%用于再现性CVMdl = fitcecoc(X,Y,“学习者”“线性”“CrossVal”“上”
CVMdl = ClassificationPartitionedLinearECOC CrossValidatedModel: 'LinearECOC' ResponseName: 'Y' NumObservations: 31572 KFold: 10 Partition: [1x1 cvpartition] ClassNames: [comm dsp ecoder fixedpoint…]属性,方法

CVMdl是一个ClassificationPartitionedLinearECOC旨在模型。因为fitcecoc默认实现10倍交叉验证,CVMdl。训练有素的包含10 × 1单元格向量CompactClassificationECOC包含训练ECOC模型结果的模型,该模型由二元线性分类模型组成。

估计折叠外观察的标签,并通过传递估计泛化误差CVMdlkfoldPredict而且kfoldLoss,分别。

oofLabels = kfoldPredict(CVMdl);ge = kfoldLoss(cvdl)
Ge = 0.0958

估计泛化误差约为10%的错误分类观测值。

要改善泛化错误,请尝试指定另一个求解器,例如LBFGS。若要更改训练由线性分类模型组成的ECOC模型时的默认选项,请使用templateLinear,然后将模板传递给fitcecoc

为确定由使用逻辑回归学习器的线性分类模型组成的ECOC模型的良好套索惩罚强度,实现5倍交叉验证。

加载NLP数据集。

负载nlpdata

X是一个稀疏矩阵的预测数据,和Y是类标签的分类向量。

为简单起见,在所有观察中使用“其他”标签Y不是这样的“金宝app模型”“dsp”,或“通讯”

Y (~ (ismember (Y, {“金宝app模型”“dsp”“通讯”}))) =“别人”

创建一组11个对数间隔的正则化强度 1 0 - 7 通过 1 0 - 2

Lambda = logspace(-7,-2,11);

创建一个线性分类模型模板,指定使用逻辑回归学习器,使用具有优势的套索惩罚λ,使用SpaRSA进行训练,并将目标函数梯度上的容差降低到1 e-8

t = templatlinear (“学习者”“物流”“规划求解”“sparsa”...“正规化”“套索”“λ”λ,“GradientTolerance”1 e-8);

交叉验证模型。要提高执行速度,可以调换预测器数据,并指定观察值为列。

X = X';rng (10);%用于再现性CVMdl = fitcecoc(X,Y,“学习者”t“ObservationsIn”“列”“KFold”5);

CVMdl是一个ClassificationPartitionedLinearECOC模型。

解剖CVMdl,以及其中的每个模型。

numECOCModels = nummel (CVMdl.Trained)
numECOCModels = 5
ECOCMdl1 = CVMdl。训练有素的{1}
ECOCMdl1 = CompactClassificationECOC ResponseName: 'Y' ClassNames: [comm dsp 金宝appsimulink others] ScoreTransform: 'none' BinaryLearners: {6×1 cell} CodingMatrix: [4×6 double]属性,方法
numCLModels = nummel (ECOCMdl1.BinaryLearners)
numCLModels = 6
CLMdl1 = ECOCMdl1。BinaryLearners {1}
CLMdl1 = ClassificationLinear ResponseName: 'Y' ClassNames: [-1 1] ScoreTransform: 'logit' Beta: [34023×11 double]偏差:[-0.3169 -0.3169 -0.3168 -0.3168 -0.3168 -0.3167 -0.1725 -0.0805 -0.1762 -0.3450 -0.5174]Lambda: [1.0000e-07 3.1623e-07 1.0000e-06 3.1623e-05 1.0000e-04 3.1623e-04 1.0000e-03 0.0032 0.0100]学习者:'logistic'属性,方法

因为fitcecoc实现5倍交叉验证,CVMdl的5 × 1单元格数组CompactClassificationECOC软件在每次折叠上训练的模型。的BinaryLearners各属性CompactClassificationECOC模型包含ClassificationLinear模型。的数量ClassificationLinear每个紧凑型ECOC模型中的模型取决于不同标签和编码设计的数量。因为λ是一个正则化强度序列,你能想到吗CLMdl1作为11个模型,每个模型中的正则化强度为1λ

通过绘制每个正则化强度的5倍分类误差的平均值来确定模型的泛化程度。确定将网格上的泛化误差最小化的正则化强度。

ce = kfoldLoss(CVMdl);图;plot(log10(Lambda),log10(ce)) [~,minCEIdx] = min(ce);minLambda = Lambda(minCEIdx);持有情节(log10 (minLambda) log10 (ce (minCEIdx)),“罗”);ylabel ('log_{10} 5倍分类错误')包含(“log_{10}λ的)传说(MSE的“最小分类错误”)举行

利用整个数据集训练一个由线性分类模型组成的ECOC模型,并指定最小正则化强度。

t = templatlinear (“学习者”“物流”“规划求解”“sparsa”...“正规化”“套索”“λ”minLambda,“GradientTolerance”1 e-8);MdlFinal = fitcecoc(X,Y,“学习者”t“ObservationsIn”“列”);

要估计新观测值的标签,请通过MdlFinal新的数据预测

版本历史

在R2016a中引入