主要内容

Classificationedecoc.

支持向量机等分类器的交叉验证多类ECOC模型金宝app

描述

Classificationedecoc.是一组错误校正的输出代码(ECOC)模型,在交叉验证的折叠上培训。使用一个或多个“kfold”功能估算交叉验证分类的质量:kfoldPredict,kfoldLoss,Kfoldmargin.,kfoldEdge, 和kfoldfun.

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

  1. 软件训练第一个模型(存储在cvmdl.tromed {1})通过在最后四组中使用观察,并保留第一组的观察结果进行验证。

  2. 该软件列举了第二种模型(存储在cvmdl.tromed {2})通过使用第一组和最后三组的观察。该软件储备在第二组中的观察结果进行验证。

  3. 该软件以类似的方式进行第三,第四和第五型号。

如果使用使用kfoldPredict,该软件计算出对小组观测结果的预测通过使用模型。简而言之,该软件通过使用未经该观察而训练的模型来估计每个观察的响应。

创建

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

  • 方法从ECOC模型创建一个交叉验证的ECOC模型crossval对象的功能。

  • 通过使用通过使用交叉验证的ECOC模型fitcecoc.函数并指定一个名称值对参数之一“CrossVal”,'cvpartition',“坚持”,“KFold”,或“Leaveout”

属性

全部展开

交叉验证的属性

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

例如,'ecoc'指定一个交叉验证的ECOC模型。

数据类型:char

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

数据类型:

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

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

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

数据类型:

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

在交叉验证折叠上训练的紧凑分类器,指定为单元格数组CompactClassificationECOC楷模。训练有素的k细胞,在哪里k是折叠的数量。

数据类型:细胞

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

该软件将用于训练的重量标准化为此总和(w,'omitnan')1

数据类型:|

Unaldardization的预测数据用于交叉验证分类器,指定为数字矩阵或表。

每一排X对应于一个观察,并且每列对应于一个变量。

数据类型:||桌子

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

每一排Y表示观察到的相应行分类X

数据类型:分类|char|逻辑|||细胞

ECOC属性

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

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

数据类型:char

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

  • 如果编码矩阵在所有折叠上都相同,则BinaryY是一个NumObservations-经过-l矩阵,其中l为二元学习者的人数(大小(CodingMatrix, 2)).

    的元素BinaryY1,0,或1,值对应于二分法类分配。这张表描述了学习者的方式j分配的观察k对对应于价值的二分法类BinaryY (k, j)

    价值 二分法班级任务
    1 学习者j分配的观察k到一个负面的课程。
    0 在培训之前,学习者j去除观察k从数据集。
    1 学习者j分配的观察k一个积极的班级。

  • 如果编码矩阵随着折叠而变化,那么BinaryY是空的 ([]).

数据类型:

指定二进制学习者的类分配的代码,指定为数字矩阵或[]

  • 如果编码矩阵在所有折叠上都相同,则CodingMatrix是一个K-经过-l矩阵,其中K班级的数量是多少l是二元学习者的数量。

    的元素CodingMatrix1,0,或1,值对应于二分法类分配。这张表描述了学习者的方式j在课堂上分配观察对对应于价值的二分法类CodingMatrix (i, j)

    价值 二分法班级任务
    1 学习者j在课堂上分配观察到一个负面的课程。
    0 在培训之前,学习者j在课堂上删除观察从数据集。
    1 学习者j在课堂上分配观察一个积极的班级。

  • 如果编码矩阵随着折叠而变化,那么CodingMatrix是空的 ([]).的方法可以得到每个折叠的编码矩阵训练有素的财产。例如,CVMdl.Trained {1} .CodingMatrix是交叉验证的ECOC模型的第一折叠中的编码矩阵cvmdl.

数据类型:||INT8.|int16|INT32.|int64

其他分类属性

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

数据类型:|

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

数据类型:分类|char|逻辑|||细胞

此属性是只读的。

误分类代价,指定为方阵数值矩阵。成本K行和列,其中K为类数。

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

fitcecoc.在不同类型的二元学习者中,采用不同的误分类成本。

数据类型:

预测器名称按其在预测器数据中的出现顺序排列X,指定为字符向量的小区数组。长度预测等于X

数据类型:细胞

此属性是只读的。

先前的概率,指定为数字矢量。事先的具有与类的数量一样多的元素一会,元素的顺序对应于类的顺序一会

fitcecoc.在不同类型的二元学习者中,采用不同的误分类成本。

数据类型:

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

数据类型:char

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

更改分数转换功能功能,例如,使用点符号。

  • 对于内置功能,请输入此代码并替换功能在表中的一个值。

    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 = @功能

    功能必须接受一个矩阵(原始分数)并返回一个相同大小的矩阵(转换分数)。

数据类型:char|function_handle

对象的功能

kfoldEdge 交叉验证ECOC模型的分类边缘
kfoldLoss 交叉验证ECOC模型的分类损失
Kfoldmargin. 交叉验证ECOC模型的分类裕度
kfoldPredict 在交叉验证的ECOC模型中对观测结果进行分类
kfoldfun. 交叉验证功能使用交叉验证的ECOC模型

例子

全部收缩

用支持向量机二值学习器交叉验证ECOC分类器,估计广义分类误差。

装载Fisher的Iris数据集。指定预测器数据X以及响应数据Y

负载渔民X =量;Y =物种;rng (1);重复性的%

创建SVM模板,并标准化预测器。

t = templatesvm('标准化',真的)
t =适合分类支持向量机的模板。α:[0 x1双]BoxConstraint: [] CacheSize: [] CachingMethod:“ClipAlphas: [] DeltaGradientTolerance:[]ε:[]GapTolerance: [] KKTTolerance: [] IterationLimit: [] KernelFunction:“KernelScale: [] KernelOffset: [] KernelPolynomialOrder: [] NumPrint:[]ν:[]OutlierFraction: [] RemoveDuplicates: [] ShrinkagePeriod:[]解算器:"标准化数据:1 SaveSupportVector金宝apps: [] VerbosityLevel:[]版本:2方法:'SVM'类型:'分类'

t是一个支持向量机模板。大多数模板对象属性都是空的。在训练ECOC分类器时,软件将适用属性设置为默认值。

训练ECOC分类器,并指定类的顺序。

mdl = fitcecoc(x,y,“学习者”,t,......'classnames',{'setosa','versicolor','virginica'});

MDL.是一个ClassificationECOC分类器。您可以使用点表示法访问其属性。

旨在MDL.使用10倍交叉验证。

cvmdl = crossval(mdl);

cvmdl.是一个Classificationedecoc.旨在ECOC分类器。

估计广义分类错误。

genError = kfoldLoss (CVMdl)
genError = 0.0400

广义分类误差为4%,这表明ECOC分类器概括得很好。

使用a列车一个与所有ecoc分类器GentleBoost决策树与代理分裂的集合。加快培训,箱数字预测器并使用并行计算。啤酒才有效fitcecoc.使用树学习者。训练后,使用10倍交叉验证估计分类误差。请注意,并行计算需要parallel computing Toolbox™。

加载示例数据

装入并检查心律失常数据集。

负载心律失常(氮、磷)大小(X) =
n = 452.
p = 279
isLabels =独特(Y);nLabels =元素个数(isLabels)
nLabels = 13
汇总(分类(Y))
值计数百分比1 245 54.20% 2 44 9.73% 3 15 3.32% 4 15 3.32% 5 13 2.88% 6 25 5.53% 73 0.66% 8 2 0.44% 99 1.99% 10 50 11.06% 14 4 0.88% 15 5 1.11% 16 22 4.87%

数据集包含279预测因素和样本量452.相对较小。在16个不同的标签中,只有13个在响应中表示(Y).每个标签描述了不同程度的心律失常,54.20%的观察是在课堂上进行的1

训练一个对所有ECOC分类器

创建集成模板。您必须指定至少三个参数:方法、学习者的数量和学习者的类型。对于本例,请指定'温船'对于方法,100.对于学习者的数量,以及由于缺少观察结果而使用代理拆分的决策树模板。

ttree = templatetree(“代孕”,“上”);tEnsemble = templateEnsemble ('温船',100,TTREE);

tEnsemble是模板对象。它的大部分属性都是空的,但是软件在训练期间用它们的默认值填充它们。

使用决策树作为二进制学习者培训一个与之一体的ECOC分类器。加快培训,使用分箱和并行计算。

  • 装箱(“NumBins”,50岁) -当你有一个大的训练数据集时,你可以通过使用“NumBins”名称值对参数。此参数仅在何时有效fitcecoc.使用树学习者。如果您指定了“NumBins”值,然后将软件将每个数字预测器置于指定数量的eciprobable bins中,然后在箱上的树木上生长树木指数而不是原始数据。你可以试试“NumBins”,50岁先改,再改“NumBins”值取决于准确性和训练速度。

  • 并行计算('选项',statset('deverypallellel',true)) - 使用并行计算工具箱许可证,您可以使用并行计算加快计算,该控从每个二进制学习者向池中的工作人员发送。工作人员的数量取决于您的系统配置。当您为二元学习者使用决策树时,fitcecoc.使用英特尔®螺纹构建块(TBB)并联培训进行双核系统及以上。因此,指定“UseParallel”选项对单台计算机无济于事。在群集中使用此选项。

另外,指定先验概率为1/K,在那里K= 13是不同类的数量。

选项= statset(“UseParallel”,真的);mdl = fitcecoc(x,y,'编码',“onevsall”,“学习者”tEnsemble,......'事先的',“统一”,“NumBins”,50,“选项”,选项);
使用“local”配置文件启动并行池(parpool)…连接到并行池(工作人员数量:6)。

MDL.是一个ClassificationECOC模型。

交叉验证

使用10倍交叉验证交叉验证ECOC分类器。

CVMdl = crossval (Mdl,“选项”,选项);
警告:一个或多个折叠不包含所有组的点。

cvmdl.是一个Classificationedecoc.模型。警告表明,当软件训练至少一倍时,有些类没有表示。因此,这些折叠不能预测缺失类的标签。可以使用单元格索引和点表示法检查折叠的结果。例如,通过输入来访问第一次折叠的结果cvmdl.tromed {1}

使用交叉验证的ECOC分类器预测验证折叠标签。您可以通过使用来计算混淆矩阵confusionchart.通过更改内部位置属性来移动和调整图表的大小,以确保百分比出现在行摘要中。

Ooflabel = kfoldpredict(cvmdl,“选项”,选项);Confmat = ConfusionChart(Y,Ooflabel,“RowSummary”,'总归一化');confmat.innerposition = [0.10 0.12 0.85 0.85];

再现Binned数据

通过使用使用的重现Binned预测测量数据毕业生培训模型的财产和离散化函数。

x = mdl.x;%的预测数据Xbinned = 0(大小(X));边缘= Mdl.BinEdges;%查找箱预测因子的指数。idxnumeric = find(〜cellfun(@ isempty,边));如果iscolumn(idxNumeric) idxNumeric = idxNumeric';结束j = idxNumeric x = x (:,j);%如果x是一个表,则将x转换为数组。如果istable(x)x = table2array(x);结束%使用离散函数将x分组到bins中。xbinned =离散化(x,[ -  inf;边缘{j}; inf]);Xbinned(:,j)= xbinned;结束

xbinned.包含单位,范围为1到箱数,用于数字预测器。xbinned.值是0对于分类预测器。如果X包含S,然后对应的xbinned.值是s。

在R2014B中介绍