ClassificationPartitionedECOC

交叉验证的多类ECOC模型支持向量机(SVM)等分类万博1manbetx

描述

ClassificationPartitionedECOC是一组经过交叉验证的折叠训练的错误校正输出码(ECOC)模型。使用一个或多个“kfold”函数估计交叉验证分类的质量:kfoldPredict,kfoldLoss,kfoldMargin,kfoldEdge,kfoldfun

每个受训的“kfold”方法使用模型训练倍(以倍),观察到预测进行验证倍(超出倍)观察的响应。例如,假设您使用5重交叉验证。在这种情况下,软件随机分配各观察分成五组相同大小(大约)的。该培训褶皱包含四个组(大约4/5的数据),以及验证倍包含另一组(大约是数据的1/5)。在这种情况下,交叉验证的过程如下:

  1. 该软件训练的第一款车型(存储在CVMdl.Trained {1}),使用后四组的观察结果,并保留第一组的观察结果以供验证。

  2. 软件训练第二种模型(存储在CVMdl.Trained {2}),利用第一组及后三组的观察资料。软件将观察结果保存在第二组中以备验证。

  3. 软件在第三、第四和第五种模型中以类似的方式进行。

如果验证通过使用kfoldPredict,该软件计算在组观测预测通过使用TH模型。总之,软件估计通过使用而没有观察训练的模型中的每个观察响应。

创建

您可以创建一个ClassificationPartitionedECOC模型有两种方式:

  • 方法从ECOC模型创建交叉验证的ECOC模型crossval目标函数。

  • 属性创建交叉验证的ECOC模型fitcecoc功能和的名称 - 值对参数指定一个“CrossVal”,'CVPartition','坚持','KFold', 要么“Leaveout”

属性

展开全部

交叉验证的属性

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

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

数据类型:烧焦

交叉验证的褶皱,指定为正整数的数目。

数据类型:

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

的属性ModelParameters使用点符号。

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

数据类型:

数据分区表示软件如何将数据分成交叉验证褶皱,指定为cvpartition模型。

在交叉验证折叠上训练的紧凑分类器,指定为的单元格数组CompactClassificationECOC模型。熟练k细胞,k为折叠次数。

数据类型:细胞

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

该软件标准化用于训练,这样的权重nansum (W)1

数据类型:|

用于交叉验证分类器的非标准化预测器数据,指定为数值矩阵或表。

每一行的X对应于一个观测,并且每一列对应于一个变量。

数据类型:||表格

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

每一行的Y表示的对应行的观察分类X

数据类型:明确的|烧焦|逻辑|||细胞

ECOC属性

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

如果您使用训练使用不同的损失函数的二进制学习者,则该软件集BinaryLoss“汉明”。以潜在地提高精度,通过使用一个预测或损失计算期间指定默认值以外的二元损失函数'BinaryLoss'的名称-值对参数kfoldPredictkfoldLoss

数据类型:烧焦

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

  • 如果编码矩阵在所有的褶皱一样,则BinaryYNumObservations-通过-l矩阵,其中l是(二进制学习者数大小(CodingMatrix, 2))。

    的元素BinaryY-1,0, 要么1和值对应于二分类作业。此表描述了如何学习j分配的观察k到对应于的值的二分类BinaryY (k, j)

    价值 两个类的任务
    -1 学习者j分配的观察k到一个消极的阶级。
    0 在培训之前,学习者j删除的观察k从数据集。
    1 学习者j分配的观察k以积极的类。

  • 如果编码矩阵在不同的折叠中变化,那么BinaryY是空的([])。

数据类型:

为二进制学习者指定课堂作业的代码,指定为数字矩阵或[]

  • 如果编码矩阵在所有的褶皱一样,则CodingMatrixK-通过-l矩阵,其中K班级的人数是多少l为二进制学习者的数量。

    的元素CodingMatrix-1,0, 要么1和值对应于二分类作业。此表描述了如何学习j类受让人意见到对应于的值的二分类CodingMatrix (i, j)

    价值 两个类的任务
    -1 学习者j类受让人意见到一个消极的阶级。
    0 在培训之前,学习者j删除类中的观察从数据集。
    1 学习者j类受让人意见以积极的类。

  • 如果编码矩阵在不同的折叠中变化,那么CodingMatrix是空的([])。可以通过使用该获得每个折编码矩阵熟练财产。例如,CVMdl.Trained {1} .CodingMatrix在所述编码矩阵第一折交叉验证模型ECOC的CVMdl

数据类型:||int8|INT16|INT32|Int64的

其他分类属性

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

数据类型:|

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

数据类型:明确的|烧焦|逻辑|||细胞

此属性是只读的。

误分类成本,指定为正方形数字矩阵。成本K行和列,其中K为类数。

成本(i, j)是分类的点到类的费用j如果它的真实类。行和列的顺序成本对应于类的顺序一会

fitcecoc在不同类型的二元学习器中加入不同的误分类代价。

数据类型:

在他们出现的顺序预测名称的预测数据X,指定为字符向量的单元阵列。长度PredictorNames等于列的数量X

数据类型:细胞

此属性是只读的。

先验类概率,指定为数值向量。之前中元素的数量与类的数量相同一会中元素的顺序对应于类的顺序一会

fitcecoc在不同类型的二元学习器中加入不同的误分类代价。

数据类型:

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

数据类型:烧焦

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

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

  • 对于一个内置的功能,输入验证码,更换函数表中有一个值。

    Mdl.ScoreTransform ='函数';

    价值 描述
    “doublelogit” 1 /(1 +e-2x)
    '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 交叉验证的ECOC模型的分类边缘
kfoldLoss 对于交叉验证ECOC模型分类损失
kfoldMargin 交叉验证的ECOC模型的分类裕度
kfoldPredict 对交叉验证的ECOC模型中的观测结果进行分类
kfoldfun 使用交叉验证的ECOC模型的交叉验证功能

例子

全部折叠

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

加载Fisher虹膜数据集。指定预测数据X和响应数据Y

负载fisheririsX =量;Y =物种;rng (1);%用于重现

创建一个SVM模板,并对预测器进行标准化。

T = templateSVM(“标准化”,真正的)
T =用于分类SVM拟合模板。阿尔法:为0x1双] BoxConstraint:[] CacheSize的:[] CachingMethod: '' ClipAlphas:[] DeltaGradientTolerance:[]小量:[] GapTolerance:[] KKTTolerance:[] IterationLimit:[] KernelFunction: '' KernelScale:[]KernelOffset:[] KernelPolynomialOrder:[] NumPrint:[]女:[] OutlierFraction:[] RemoveDuplicates:[] ShrinkagePeriod:[]求解: '' StandardizeData:1个SaveSupportVectors:万博1manbetx[] VerbosityLevel:[]版本:2所述的方法:“SVM'类型:‘分类’

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

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

Mdl = fitcecoc (X, Y,“学习者”,T,...“类名”,{'setosa',“多色的”,“弗吉尼亚”});

MdlClassificationECOC分类器。您可以使用点符号访问它的属性。

旨在Mdl使用10倍交叉验证。

CVMdl = crossval (Mdl);

CVMdlClassificationPartitionedECOC交叉验证的ECOC分类器。

估计广义分类错误。

genError = kfoldLoss(CVMdl)
genError = 0.0400

广义分类误差为4%,说明ECOC分类器具有较好的泛化能力。

使用火车一抗所有ECOC分类GentleBoost决策树与代理分割的集成。为了加速训练,bin数值预测器和使用并行计算。只有在以下情况下才有效fitcecoc使用树形学习者。训练后,使用10倍交叉验证估计分类误差。注意,并行计算需要并行计算工具箱™。

加载示例数据

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

负载心律失常[N,P] =尺寸(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%7 3 0.66%8 2 0.44%9 9 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分类器

创建一个合奏的模板。您必须指定至少三个参数:一个方法,许多学习者,和学习者的类型。在这个例子中,指定“GentleBoost”该方法,One hundred.以及一个决策树模板,该决策树模板使用代理分割,因为存在缺失的观察结果。

tTree = templateTree(“代孕”,“上”);tEnsemble = templateEnsemble(“GentleBoost”,100,tTree);

tEnsemble是模板对象。它的大多数属性是空的,但是软件在训练时用默认值填充它们。

使用决策树的集合作为二进制学习器来训练一个对所有的ECOC分类器。为了加快训练速度,可以使用并行计算。

  • 分档('NumBins',50) - 当你有一个大的训练数据集,可以加快使用培训(精度可能减少)'NumBins'名称 - 值对的参数。该参数才有效fitcecoc使用树形学习者。如果你指定'NumBins'值,然后软件将每个数值预测器放入指定数量的等概率箱子中,然后在箱子索引(而不是原始数据)上生长树。你可以试着'NumBins',50第一,然后更改'NumBins'值取决于精度和训练速度。

  • 并行计算('选项',statset( 'UseParallel',真)) - 用一个并行计算工具箱许可证,则可以加快通过使用并行计算,它发送每个二进制学习者到池中一个工人的计算。工人的数量取决于您的系统配置。当您使用决策树二进制学习者,fitcecoc使用英特尔线程构建模块(TBB)为双核系统和上述平行化的训练。因此,指定“UseParallel”选项不是一台计算机上有帮助。使用群集此选项。

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

选项= statset(“UseParallel”,真正的);Mdl = fitcecoc (X, Y,“编码”,'onevsall',“学习者”tEnsemble,...“在此之前”,'制服','NumBins',50岁,“选项”、选择);
使用“本地”配置文件启动并行池(parpool)…连接到并行池(worker数量:6)。

MdlClassificationECOC模型。

交叉验证

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

CVMdl = crossval (Mdl,“选项”、选择);
警告:一个或多个折叠没有从所有组中包含了点。

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

使用交叉验证的ECOC分类器来预测验证折叠标签。你可以使用confusionchart。通过更改内部位置属性移动图表并调整其大小,以确保百分比显示在行摘要中。

oofLabel = kfoldPredict(CVMdl,“选项”、选择);ConfMat = confusionchart (Y, oofLabel,'RowSummary',“total-normalized”);ConfMat。InnerPosition = [0.10 0.12 0.85 0.85];

重现离散化数据

利用BinEdges训练模型的性质和离散化函数。

X = Mdl.X;%的预测数据Xbinned =零(大小(X));边缘= Mdl.BinEdges;%查找分级预测的指标。idxNumeric =找到(〜cellfun(@的isEmpty,边缘));如果iscolumn(idxNumeric) = idxNumeric';结束idxNumeric x = x (:,j);%将x转换为数组,如果x是一个表。如果istable(X)X = table2array(X);结束%组通过使用离散化函数X到箱中。xbinned =离散化(x,[无穷;边缘{};正]);Xbinned (:, j) = Xbinned;结束

Xbinned包含二进制位索引,取值范围为1到箱柜的数目,对于数值预测因子。Xbinned值是0分类预测。如果X包含s,则相应Xbinned值是年代。

介绍了R2014b