主要内容

testckfold.

通过重复的交叉验证比较两个分类模型的精度

描述

testckfold.统计学评估两种分类模型通过反复交叉验证这两个模型中,确定在分类损失的差异,然后通过组合分类损耗差异配制检验统计量的准确度。当样本大小被限制这种类型的测试是特别适合的。

您可以评估分类模型的准确性是否不同,或者一个分类模型是比另一个分类模型更好。可用的测试包括5×2配对T.测试,5乘2对F测试,并进行10 × 10的重复交叉验证T.测试。有关更多详细信息,请参阅重复交叉验证测试.加快计算,testckfold.金宝app支持并行计算(需要并行计算工具箱™许可证)。

例子

H= testckfold (C1.C2.X1X2返回执行5乘2配对操作的测试决定F交叉验证测试。零假设是分类模型C1.C2.在使用表中使用预测器和响应数据预测真正的类标签具有相同的准确性X1X2H=1表示在5%的显着性水平上拒绝零假设。

testckfold.通过申请进行交叉验证测试C1.C2.所有的预测变量X1X2,分别。真正的类标签X1X2肯定是一样的。中的响应变量名X1X2C1.ResponseName.,c2.responseName.肯定是一样的。

有关比较模型的方法的示例,请参阅提示

例子

H= testckfold (C1.C2.X1X2y应用全分类模型或分类模板C1.C2.到数据表或数据的矩阵中的所有预测变量X1X2,分别。y表变量名称是否对应于真实类标签或真正类标签数组。

例子

H= testckfold (___名称,价值使用先前语法中的任何输入参数和一个或多个指定的其他选项名称,价值对论点。例如,您可以指定替代假设的类型,测试类型或并行计算的使用。

例子

[HP.E1.E2.] = testckfold(___也返回P.-Value用于假设测试(P.)和各自的分类损失每个交叉验证运行和折叠(E1.E2.).

例子

全部收缩

在每个节点,fitctree默认情况下使用穷举搜索选择最好的预测器进行分割。或者,您可以选择通过进行曲率测试来分割显示与响应相关性最明显的预测器。这个例子在统计学上比较了分类树的生长,分类树是通过穷举搜索来寻找最佳分割,而分类树是通过交互进行曲率测试来生长的。

加载census1994数据集。

加载人口普查1994.Matrng (1)重复性的%

使用培训集生长默认分类树,AdultData.,这是一张桌子。响应变量名称是“工资”

C1 = fitctree (adultdata“工资”
C1 = ClassificationTree Predictornames:{1x14 Cell} racatectename:'薪资'类别预防器:[2 4 6 7 8 9 10 14] ClassNames:[<= 50k> 50k] ScorEtransform:'无'NumObServations:32561属性,方法

C1.是一个完整的ClassificationTree模型。它的ResponseName属性是“工资”C1.使用穷举搜索基于最大拆分增益找到分裂最好的预测。

使用相同的数据集生长另一棵分类树,但指定使用具有交互作用的曲率测试来找到最好的分割预测器。

C2 = fitctree(adultdata,“工资”'预测圈'“交互曲率”
C2 = ClassificationTree PredictorNames:{1x14细胞} ResponseName: '工资' CategoricalPredictors:[2 4 6 7 8 9 10 14]的类名:[<= 50K> 50K] ScoreTransform: '无' NumObservations:32561的属性,方法

C2.也是一个完整的ClassificationTree模特ResponseName等于“工资”

进行5×2配对F使用训练集测试比较两个模型的准确性。因为数据集中的响应变量名和ResponseName属性都是相等的,且两组中的响应数据都是相等的,因此可以忽略提供响应数据。

h = testckfold (C1、C2、adultdata adultdata)
h =逻辑0.

H = 0.表示不拒绝零假设C1.C2.有5%的水平不变精度。

进行统计测试,比较两个模型的错误分类率使用5×2配对F测试。

载入费雪的虹膜数据集。

加载渔民;

使用默认选项创建一个天真的贝母模板和分类树模板。

C1 = templateNaiveBayes;C2 = templateTree;

C1.C2.分别为朴素贝叶斯算法和分类树算法对应的模板对象。

检验两个模型是否具有相同的预测精度。对每个模型使用相同的预测数据。testckfold.进行5×2,双面,配对F默认测试。

rng (1);重复性的%H = testckfold(C1,C2,Meas,测量,物种)
h =逻辑0.

H = 0.表示不拒绝两个模型具有相同预测精度的原假设。

使用10 × 10的重复交叉验证进行统计测试,以评估一个简单的模型是否比一个更复杂的模型具有更好的准确性T.测试。

载入费雪的虹膜数据集。创建一个成本矩阵,将虹膜错分类的代价是将维京虹膜错分类的两倍。

加载渔民;表格(物种)
值计数百分比setosa 50 33.33%50花斑癣33.33%锦葵50 33.33%
成本= [0 2 2; 2 0 1; 2 1 0];ClassNames = {'setosa''versicolor''virginica'};......%以成本指定行和列的顺序

的类的经验分布是均匀的,并且分类成本稍微不平衡。

创建两个ecoc模板:使用线性SVM二进制学习者的一个ecoC模板,以及使用配备有RBF内核的SVM二进制学习者的ECOC SVM二进制学习者。

tSVMLinear = templateSVM ('标准化',真正的);默认情况下%线性SVMtSVMRBF = templateSVM('骨箱''RBF''标准化',真正的);C1 = templateECOC (“学习者”, tSVMLinear);C2 = templateECOC (“学习者”,tsvmrbf);

C1.C2.是ecoc模板对象。C1.用于线性SVM制备。C2.为具有RBF内核培训的SVM准备。

测试纯粹的假设,即更简单的型号(C1.)至多与更复杂的模型(C2.)在分类成本方面。进行10×10重复的交叉验证测试。要求退货P.- 价值和错误分类成本。

rng (1);重复性的%(h p e1, e2) = testckfold (C1、C2、量量,物种,......'选择'“更大的”'测试''10x10t''成本',成本,......“类名”类名)
h =逻辑0.
p = 0.1077
e1 =10×100 0 0 0.0667 0 0.0667 0.1333 0 0.1333 0 0.0667 0.0667 0 0 0 0 0.0667 0 0.0667 0.0667 0 0 0 0 0 0.0667 0.0667 0.0667 0.0667 0.0667 0.0667 0.0667 0 0.0667 0 0.0667 0 0 0.0667 0 0.0667 0.0667 0.0667 0 0.0667 0.0667 0 0 0 00 0 0.1333 0 0 0.0667 0 0 0.0667 0.0667 0.0667 0.0667 0 0 0.0667 0 0 0.0667 0 0.0667 0.0667 0 0.0667 0.0667 0 0.1333 0 0.0667 0 0 0 0.0667 0.1333 0.0667 0.0667 0 0 0 0 0 0 0.0667 0.0667 0.0667 0.0667 0 0 0.0667 0 0
E2 =10×100 0 0 0.1333 0 0.0667 0.1333 0 0.2667 0 0.0667 0.0667 0 0.1333 0 0 0 0.1333 0.1333 0.0667 0.1333 0.1333 0 0 0 0.0667 0 0.0667 0.0667 0.0667 0 0.1333 0 0.0667 0.1333 0.1333 0 0 0.0667 0 0.0667 0.0667 0.0667 0 0.0667 0.1333 0.1333 0 0 0.06670.0667 0 0.0667 0.0667 0 0.0667 0.1333 0 0.0667 0.0667 0.2000 0.0667 0 0 0.0667 0 0 0.1333 0 0.0667 0.2000 0 0 0.1333 0 0.1333 0 0.0667 0 0 0 0.0667 0.0667 0.0667 0.1333 0 0.2000 0 0 0 0.0667 0.0667 0 0.0667 0.1333 0 0 0.0667 0.1333 0.0667

P.- 值小于0.10,这表明保留零假设简单的模型是最多那么精确更复杂的模型稍大。这个结果是任何显着性水平是一致的(Α)至多0.10。

E1.E2.是包含错误分类代价的10 × 10矩阵。行R.对应于运行R.重复的交叉验证。柱子K.对应于测试集折叠K.一个特定的交叉验证运行范围内。的例如,元件(2,4)E2.是0.1333。这个值的装置是,在交叉验证运行如图2所示,当测试组是折叠图4中,估计的测试集误分类代价是0.1333。

通过从较大集合中选择预测器变量(特征)的子集来减少分类模型复杂性。然后,统计地比较两种模型之间的准确性。

加载电离层数据集。

加载电离层

使用Adaboostm1和整套预测器培训100个提升分类树的集合。检查每个预测器的重要性措施。

t = templatetree('maxnumsplits',1);%弱学习模板树对象c = fitcensemble(x,y,“方法”'adaboostm1'“学习者”,t);predimp = predictorimportance(c);酒吧(预先估计)H = GCA;H.xtick = 1:2:H.XLIM(2);标题('预测的重要性')包含('预测器') ylabel (“重要措施”

确定的五大预测中所占的重要位置。

[〜,idxsort] = sort(predimp,“下降”);idx5对应= idxSort(1:5);

检验两个模型是否具有相同的预测精度。指定还原数据集,然后指定完整的预测器数据。使用并行计算来加速计算。

s = randstream(“mlfg6331_64”);选项= statset('使用指平行',真的,“流”,s,'userubstreams',真正的);(h p e1, e2) = testckfold (C、C、X (:, idx5), X, Y,“选项”选项)
使用“本地”配置文件启动并行池(Parpool)连接到并行池(工人数:6)。
h =逻辑0.
P = 0.4161.
e1 =5×20.0686 0.0795 0.0800 0.0914 0.0914 0.0568 0.0400 0.0739 0.0914 0.0966
E2 =5×20.0914 0.0625 0.1257 0.0971 0.0971 0.062500800 0.0909 0.0914 0.0909 0.0914 0.1193

testckfold.将培训的分类模型视为模板,因此它忽略了所有拟合参数C.那是,testckfold.跨只会验证C仅使用指定的选项和预测器数据来估计未折叠的分类损失。

H = 0.表示不拒绝两个模型具有相同预测精度的原假设。这个结果有利于更简单的集成。

输入参数

全部收缩

分类模型模板或培训的分类模型,指定为这些表中描述的任何分类模型模板对象或培训的分类模型对象。

模板类型 返回的
分类树 Templatetree.
判别分析 templateDiscriminant
集合(增加、套袋和随机子空间) 模板lemble.
纠错输出码(ECOC),多类分类模型 templateECOC
K.NN. templateKNN
天真的贝父 TemplateAniveBayes.
金宝app支持向量机(SVM) Templatesvm.
训练有素的型号类型 模型对象 返回的
分类树 ClassificationTree fitctree
判别分析 分类Discriminant. fitcdiscr.
袋装分类模型的集合 ClassificationBaggedEnsemble fitcensemble
分类模型的集合 ClassificationEnsemble fitcensemble
ecoc模型 Classifiedecoc. fitcecoc.
广义相加模型(GAM) ClassificationGAM fitcgam
K.NN. ClassificationKnn. fitcknn
天真的贝父 ClassificationNaiveBayes Fitcnb.
神经网络 ClassificationneuralKetwork.(与行的观察结果) Fitcnet.
SVM 分类VM. fitcsvm

为了效率,提供分类模型模板对象而不是培训的分类模型对象。

分类模型模板或培训的分类模型,指定为这些表中描述的任何分类模型模板对象或培训的分类模型对象。

模板类型 返回的
分类树 Templatetree.
判别分析 templateDiscriminant
集合(增加、套袋和随机子空间) 模板lemble.
纠错输出码(ECOC),多类分类模型 templateECOC
K.NN. templateKNN
天真的贝父 TemplateAniveBayes.
金宝app支持向量机(SVM) Templatesvm.
训练有素的型号类型 模型对象 返回的
分类树 ClassificationTree fitctree
判别分析 分类Discriminant. fitcdiscr.
袋装分类模型的集合 ClassificationBaggedEnsemble fitcensemble
分类模型的集合 ClassificationEnsemble fitcensemble
ecoc模型 Classifiedecoc. fitcecoc.
广义相加模型(GAM) ClassificationGAM fitcgam
K.NN. ClassificationKnn. fitcknn
天真的贝父 ClassificationNaiveBayes Fitcnb.
神经网络 ClassificationneuralKetwork.(与行的观察结果) Fitcnet.
SVM 分类VM. fitcsvm

为了效率,提供分类模型模板对象而不是培训的分类模型对象。

用于应用于第一个完整分类模型或模板的数据,C1.,指定为数字矩阵或表。

每一排X1对应于一个观测,并且每一列对应于一个变量。testckfold.不支持多变量和除字金宝app符向量的单元阵列的其他单元阵列。

X1X2必须是相同的数据类型,并且X1X2y必须具有相同数量的观察结果。

如果您指定y作为阵列,然后testckfold.处理的所有列X1作为单独的预测变量。

数据类型:双倍的||桌子

用于应用于第二个完整分类模型或模板的数据,C2.,指定为数字矩阵或表。

每一排X2对应于一个观测,并且每一列对应于一个变量。testckfold.不支持多变量和除字金宝app符向量的单元阵列的其他单元阵列。

X1X2必须是相同的数据类型,并且X1X2y必须具有相同数量的观察结果。

如果您指定y作为阵列,然后testckfold.处理的所有列X2作为单独的预测变量。

数据类型:双倍的||桌子

真正的类标签,指定为分类,字符或字符串阵列,逻辑或数字矢量,字符向量的小区数组或字符向量或字符串标量。

  • 对于字符向量或字符串标量,X1X2必须是表,他们的反应变量必须具有相同的名称和价值观,y必须是共同的变量名。例如,如果X1.Labels.X2。标签是响应变量,那么y“标签”X1.Labels.X2。标签必须等同。

  • 对于所有其他受支持的数据类型金宝app,y是一系列真正的类标签。

    • 如果y是字符数组,则每个元素必须与数组的一行相对应。

    • X1X2y必须有相同数量的观察(行)。

  • 如果这两个陈述都是真的,那么你可以省略供应y

    • X1X2是包含相同响应变量(值和名称)的表。

    • C1.C2.是否包含完整的分类模型ResponseName属性指定在响应变量名X1X2

    因此,testckfold.使用表中的共同响应变量。例如,如果表中的响应变量是X1.Labels.X2。标签,和的值C1.ResponseName.c2.responseName.“标签”,那么你就不必供应了y

数据类型:分类|char|细绳|逻辑||双倍的|细胞

名称值对参数

指定可选的逗号分离对名称,价值参数。的名字是参数名称和价值为对应值。的名字必须出现在引号内。您可以以任何顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:'另类', '更大', '测试', '10x10t', '选项',statsset( 'UseParallel',真)指定测试第一组预测类标签是否比第二组更准确,执行10 × 10 t测试,并使用并行计算进行交叉验证。

假设检验的显著性水平,指定为逗号分隔对组成'Α'和在区间(0,1)的标量值。

例子:“阿尔法”,0.1

数据类型:|双倍的

替代假设进行评估,指定为逗号分隔的一对组成的'选择'和表中列出的值之一。

价值 备择假设说明 金宝app支持的测试
“不平等”(默认) 对于预测y的一组预测结果C1.应用于X1C2.应用于X2不平等的精度。 '5x2f''5x2t','10x10t'
“更大的” 对于预测y的一组预测结果C1.应用于X1比更准确C2.应用于X2 '5x2t''10x10t'
'较少的' 对于预测y的一组预测结果C1.应用于X1C2.应用于X2 '5x2t''10x10t'

有关支持测试的详细信息,请参阅金宝app测试

例子:“另类”,“大”

标志识别第一个测试集预测器数据中的分类预测器(X1),指定为逗号分隔的对,由“X1CategoricalPredictors”和以下之一:

  • 一个数字矢量与索引1通过P., 在哪里P.是列的数量X1

  • 长度的逻辑矢量P.,其中A.真正的进入意味着相应的列X1是一个分类变量。

  • '全部',意味着所有预测因素都是分类的。

规格X1CategoricalPredictors如果:

  • 至少有一个预测变量是分类和C1.是一个分类树,分类树的集合,ecoc模型或天真的贝叶斯分类模型。

  • 所有预测因素都是分类的C1.是一个K.神经网络分类模型。

如果您指定X1CategoricalPredictors对于任何其他情况,那么testckfold.抛出一个错误。例如,该功能不能使用训练分类预测SVM学习者。

默认值是[],这表明没有分类预测。

例子:'x1categoricalprictics','全部'

数据类型:|双倍的|逻辑|char|细绳

标志识别第二个测试集预测器数据中的分类预测器(X2),指定为逗号分隔的对,由'X2CategoricalPredictors'和以下之一:

  • 一个数字矢量与索引1通过P., 在哪里P.是列的数量X2

  • 长度的逻辑矢量P.,其中A.真正的进入意味着相应的列X2是一个分类变量。

  • '全部',意味着所有预测因素都是分类的。

规格X2类别预备主因如果:

  • 至少有一个预测变量是分类和C2.是一个分类树,分类树的集合,ecoc模型或天真的贝叶斯分类模型。

  • 所有预测因素都是分类的C2.是一个K.神经网络分类模型。

如果您指定X2类别预备主因对于任何其他情况,那么testckfold.抛出一个错误。例如,该功能不能使用训练分类预测SVM学习者。

默认值是[],这表明没有分类预测。

例子:“X2CategoricalPredictors”、“所有”

数据类型:|双倍的|逻辑|char|细绳

类名称,指定为逗号分隔对组成“类名”和一个分类,字符或字符串阵列,逻辑或数字矢量,或字符向量的单元格数组。你必须设置类名使用的数据类型的y

如果类名是字符数组,则每个元素必须与数组的一行相对应。

类名到:

  • 指定与类顺序对应的任何输入参数维度的顺序。例如,使用类名指定尺寸的顺序成本

  • 选择用于测试的类别。例如,假设所有不同类别名称的集合y{'a','b','c'}.使用课程的观测训练和测试模型“一个”“c”只是,指定“类名”,{' a ', ' c '}

中所有不同的类名的集合y

例子:'classnames',{'b','g'}

数据类型:|双倍的|逻辑|char|细绳|细胞|分类

分类代价,指定为逗号分隔对组成'成本'方阵或结构数组。

  • 如果你指定了方阵成本, 然后成本(i,j)将一个点分类的成本是多少j如果它真正的阶级是一世.也就是说,行对应于真正的类,列对应于预测的类。的相应行和列的类顺序成本,另外指定类名名称值对参数。

  • 如果指定结构S., 然后S.必须有两个字段:

    • S.Classnames.,其中包含类名作为与相同数据类型的变量y.您可以使用此字段指定类的顺序。

    • S.Classificycosts.,其中包含成本矩阵,行和列按S.Classnames.

对于成本敏感的测试,testcholdout.

最好的做法是提供与训练分类模型相同的成本矩阵。

默认值是成本(i,j)= 1如果我〜= j,成本(i,j)= 0如果我= J.

例子:'费用',[0 1 2;1 0 2;2 2 0]

数据类型:双倍的||塑造

损失函数,指定为逗号分隔对组成“LossFun”'classiferror''binodeviance''指数'“枢纽”或功能手柄。

  • 下表列出了可用的损失函数。

    价值 损失函数
    'binodeviance' 二项式偏差
    'classiferror' 分类错误
    '指数' 指数损失
    “枢纽” 铰链损失

  • 使用函数句柄表示法指定自己的函数。

    假设N =尺寸(X,1)是有样本量还是有K.独特的课程。您的功能必须具有签名lossvalue =损失义务(C,S,W,成本),地点:

    • 输出参数lossvalue是一个标量。

    • 损失义务是你的函数的名称。

    • C是一个N-经过-K.具有行的逻辑矩阵,指示相应观察属于哪个类。列顺序对应于类顺序类名名称值对参数。

      构造C通过设置C (p, q) = 1如果观察P.是在课堂上问:每行。设置行的所有其他元素P.0.

    • S.是一个N-经过-K.分类分数的数字矩阵。列顺序对应于类顺序类名名称值对参数。S.是分类评分的矩阵。

    • W.是一个N-乘1数值向量的观测权值。如果你通过W.,软件将权重归一化1

    • 成本是一个K.-经过-K.分类费用的数值矩阵。例如,Cost = ones(K) - eye(K)指定0.为了正确的分类和成本1误分类。

    使用指定功能'lockfun',@损失义务

并行计算选项,指定为逗号分隔的一对组成的“选项”和结构数组返回由实例化.这些选项需要并行计算工具箱。testckfold.用途“流”'使用指平行','使用'字段。

此表总结了可用的选项。

选项 描述
“流”

一种randstream.这样的对象的对象或单元阵列。如果没有指定溪流时,软件使用默认流或流。如果您指定溪流,除非下列情况为真,否则使用单个对象:

  • 你有一个开放的并行池。

  • 使用指α.真正的

  • UseSubstreams错误的

在这种情况下,使用相同的大小作为平行池的单元阵列。如果并行游泳池不开放,那么软件会尝试(根据自己的喜好)开放的,并溪流必须提供单个随机数流。

'使用指平行' 如果您有并行计算工具箱,那么你可以通过调用设置的工人池“UseParallel”,真的
'userubstreams' 设置真正的通过指定的流并行计算“流”.默认为错误的.例如,设置溪流允许子流的类型,例如“mlfg6331_64”'MRG32K3A'

例子:'选项',statset('deverypallellel',true)

数据类型:塑造

每个类的先前概率,指定为逗号分隔的配对组成“之前”'经验''制服',数字矢量或结构。

该表总结了设置先验概率的可用选项。

价值 描述
'经验' 类先验概率是相对类频率在y
'制服' 所有类的先前概率等于1 /K., 在哪里K.是的类的数量。
数字矢量 每个元素是一个类的先验概率。指定使用的顺序类名名称值对参数。该软件将其总和的元素标准化为1
结构

结构S.两个字段:

  • S.Classnames.将类名包含为与y

  • S.ClassProbs包含对应的先验概率的矢量。该软件将其总和的元素标准化为1

例子:“之前”,结构(“类名”,{{“setosa”、“癣”}},“ClassProbs”,[1,2])

数据类型:char|细绳||双倍的|塑造

测试进行,指定为逗号分隔的配对组成'测试'他之一跟随:'5x2f''5x2t''10x10t'

价值 描述 金宝app支持备择假设
'5x2f'(默认) 5-by-2配对F测试。只适用于双面测试。 “不平等”
'5x2t' 5-by-2配对T.测试 “不平等”'较少的'“更大的”
'10x10t' 10×10重复交叉验证T.测试 “不平等”'较少的'“更大的”

有关可用测试的详细信息,请参阅重复交叉验证测试.有关支持的替代假说的详细信息,金宝app请参阅选择

例子:'测试', '10x10t'

详细程度,指定为逗号分隔对,由“详细”0.1,或2verb在训练每个交叉验证折叠期间控制软件在命令窗口中显示的诊断信息量。

此表总结了可用的详细级别选项。

价值 描述
0. 该软件不显示诊断信息。
1 每次它实现了一个新的交叉验证的运行时间软件显示诊断消息。
2 该软件每次执行新的交叉验证运行时,以及每次在特定折叠上进行训练时,都会显示诊断消息。

例子:'verbose',1

数据类型:双倍的|

观察权重,指定为逗号分隔的一对组成的'重量'和一个数字矢量。

的大小重量必须等于的行数X1.该软件的重量意见的每一行中X与在相应的权重重量

软件规范化重量总结相应类中的现有概率的值。

数据类型:双倍的|

注:

  • testckfold.对待训练的分类模型作为模板。因此,它忽略了模型中的所有拟合参数。那是,testckfold.只使用模型和预测器数据中指定的选项进行交叉验证。

  • 重复的交叉验证测试取决于假设测试统计数据在零假设下的渐近正常。高度不平衡的成本矩阵(例如,成本=(0 100; 1 0))和高度离散的响应分布(即大多数观察到少数类)可能违反渐近正常假设。对于成本敏感的测试,使用testcholdout.

  • 年代,<未定义>值、空字符向量(''),空字符串(), 和< >失踪Values表示丢失的数据值。

输出参数

全部收缩

假设检验结果,返回一个逻辑值。

H = 1表示拒绝零假设Α意义水平。

H = 0.表示失败拒绝在零假设Α意义水平。

数据类型:逻辑

P.-测试的值,作为区间[0,1]中的标量返回。P.是随机的检验统计量是至少为极端作为观察检验统计量,因为该零假设为真的概率。

testckfold.估计P.使用测试统计的分布,随着测试类型而变化。有关测试统计信息的详细信息,请参阅重复交叉验证测试

分类损失时,返回作为数字矩阵。行的行E1.对应于交叉验证运行和列对应于测试折。

testckfold.施加第一测试组预测数据(X1)到第一个分类模型(C1.)估计第一组类标签。

E1.总结了第一组类标签预测真实类标签的准确性(y),用于运行和折叠每个交叉验证。的元素的含义E1.取决于分类损失的类型。

分类损失时,返回作为数字矩阵。行的行E2.对应于交叉验证运行和列对应于测试折。

testckfold.应用第二个测试设置的预测器数据(X2)到第二分类模型(C2.)来估计第二组类标签。

E2.总结第二组类标签预测真实类标签的准确性(y),用于运行和折叠每个交叉验证。的元素的含义E2.取决于分类损失的类型。

更多关于

全部收缩

重复交叉验证测试

重复交叉验证测试结合重复交叉验证数据产生的分类损失差异,形成比较两种分类模型准确性的检验统计量。当样本量有限时,重复的交叉验证测试是有用的。

进行R.-经过-K.测试:

  1. 随机分(按类分层)预测数据集和真实类标签进入K.集,R.时代。每个部门都被称为a跑步中的每个设置都被称为a折叠.每次运行包含完整的,但是划分,数据集。

  2. 为运行R.= 1〜R.,重复这些步骤K.= 1〜K.

    1. 储备折叠K.作为测试组,并使用在其余各自的预测数据集训练所述两个分类模型K.- 1折。

    2. 使用培训的模型及其各自的折叠预测类标签K.预测数据集。

    3. 将两组估计标签与真实标签进行比较,估计分类损失。表示 E. C R. K. 作为测试集折叠时的分类损失K.在运行R.的分类模型C

    4. 计算两种型号的分类损失之间的差异:

      δ. ^ R. K. = E. 1 R. K. - E. 2 R. K.

    在运行结束时,有K.每个分类模型的分类损失。

  3. 结合步骤2的结果。为每一个R.= 1〜R.

    • 估计差异的折叠内平均值和它们的平均值: δ. ¯ R. = 1 K. σ. K. = 1 K. δ. ^ K. R.

    • 估计差异的总体平均值: δ. ¯ = 1 K. R. σ. R. = 1 R. σ. K. = 1 K. δ. ^ R. K.

    • 估计差异的倍内方差: S. R. 2 = 1 K. σ. K. = 1 K. δ. ^ R. K. - δ. ¯ R. 2

    • 估计的内倍差的平均值: S. ¯ 2 = 1 R. σ. R. = 1 R. S. R. 2

    • 估计的差的总体样本方差: S. 2 = 1 K. R. - 1 σ. R. = 1 R. σ. K. = 1 K. δ. ^ R. K. - δ. ¯ 2

    计算测试统计信息。这里描述金宝app的所有支持的测试假设H0.,估计的差异是独立的,近似正态分布,均值为0,有一个有限的共同标准差。然而,这些检验违背了独立假设,因此检验统计量分布是近似的。

    • 为了R.= 2,测试是配对测试。两个支持的测试是金宝app配对的T.F测试。

      • 检验统计量为配对T.测试是

        T. P. 一种 一世 R. E. D. * = δ. ^ 11 S. ¯ 2

        T. P. 一种 一世 R. E. D. * 有一个T.- 分布R.在零假设下的自由度。

        减少估计差异之间相关的影响,数量 δ. ^ 11 占据分子而不是 δ. ¯

        5-by-2配对T.测试可以稍微保守[4]

      • 检验统计量为配对F测试是

        F P. 一种 一世 R. E. D. * = 1 R. K. σ. R. = 1 R. σ. K. = 1 K. δ. ^ R. K. 2 S. ¯ 2

        F P. 一种 一世 R. E. D. * 有一个F分销rR.自由程度。

        一个5×2配对F测试对5-by-2具有可比的功率T.测试,但比较保守[1]

    • 为了R.> 2,测试是重复的交叉验证测试。测试统计是

      T. C V. * = δ. ¯ S. / ν + 1

      T. C V. * 有一个T.分销ν自由程度。如果差异是完全独立的,然后ν=r- 1。在这种情况下,必须对自由度参数进行优化。

      进行10 × 10的重复交叉验证T.测试,8到11之间的最佳自由度([2][3]).testckfold.用途ν= 10。

反复交叉验证测试的优势在配对测试中是结果更可重复[3].缺点是它们需要大量的计算资源。

分类损失

分类损失表示分类模型或一组预测标签的准确性。通常,对于固定成本矩阵,分类精度随着分类损失的增加而降低。

testckfold.返回分类损失(见E1.E2.(即不受限制的分类损失)。在以下定义中:

  • 分类的损失集中于第一个分类模型。第二个模型分类的损失是相似的。

  • N测试为测试集样本大小。

  • 一世X)为指示函数。如果X那是一个真正的陈述一世X)= 1.否则,一世X)= 0。

  • P. ^ 1 j 是分类模型1的预测类分配,用于观察j

  • yj观察是真正的阶级标签吗j

  • 二项式偏差有形式

    E. 1 = σ. j = 1 N T. E. S. T. W. j 日志 1 + exp. - 2 y j ' F X j σ. j = 1 N T. E. S. T. W. j

    在哪里:

    • yj= 1表示正类,-1表示负类。

    • F X j 为分类得分。

    二项式偏差与二项式似然函数的最大化有关。有关二项式偏差的详细信息,请参阅[5]

  • 指数损失类似于二项式偏差,具有表单

    E. 1 = σ. j = 1 N T. E. S. T. W. j exp. - y j F X j σ. j = 1 N T. E. S. T. W. j

    yj F X j 这里的形式与二项偏差公式相同。

  • 铰链损失有形式

    E. 1 = σ. j = 1 N W. j 最大限度 { 0. 1 - y j ' F X j } σ. j = 1 N W. j

    yj F X j 这里的形式与二项偏差公式相同。

    铰链损失线性惩罚错误分类的观察,并且与用于优化的SVM目标函数有关。有关铰链损失的更多详细信息,请参阅[5]

  • 误分类率,或分类误差,是在区间[0,1]中表示错误分类观测的比例的标量。即第一种分类模型的误分类率为

    E. 1 = σ. j = 1 N T. E. S. T. W. j 一世 P. ^ 1 j y j σ. j = 1 N T. E. S. T. W. j

提示

  • 比较模型的方法包括:

    • 通过通过相同的预测器数据比较简单分类模型和更复杂模型的精度。

    • 用两组不同的预测器比较两种不同模型的准确性。

    • 执行各种类型的功能选择.例如,您可以比较使用一组预测器训练的模型与使用一个子集或不同的预测器训练的模型的准确性。你可以任意选择一组预测器,或者使用特征选择技术,如PCA或序列特征选择(见PCA.sequentialfs).

  • 如果这两个陈述都是真的,那么你可以省略供应y

    • X1X2是否包含响应变量的表,并使用相同的响应变量名。

    • C1.C2.是包含相同的完整分类模型ResponseName属性(例如strcmp(c1.responseName,c2.responseName)=1).

    因此,testckfold.使用表中的共同响应变量。

  • 执行成本不敏感的特征选择的一种方法是:

    1. 创建一个表征第一分类模型分类模型模板(C1.).

    2. 创建一个特征的分类模型模板,其特征是第二分类模型(C2.).

    3. 指定两个预测器数据集。例如,指定X1作为完整的预测仪集和X2作为一个简化集。

    4. 进入Testckfold(C1,C2,X1,X2,Y,'替代','少').如果testckfold.回报1然后,有足够的证据表明,使用更少的预测器的分类模型比使用完整预测器集的模型更好地执行。

    或者,您可以评估这两个模型的准确性是否存在显著差异。要执行此评估,请删除“替代”,“少”在步骤4中规范。testckfold.进行双面测试,并且H = 0.表明没有足够的证据表明这两个模型的精度差。

  • 该测试适用于错误率分类损失,但您可以指定其他丢失功能(参见LossFun).关键假设是在双边零假设下,估计的分类损失是独立的,均值为0,公方差有限的正态分布。除了误分类率以外的分类损失都可能违反这一假设。

  • 高度离散的数据、不平衡的类和高度不平衡的代价矩阵都可能违反分类损失差异的正态性假设。

算法

如果指定要进行10×10重复的交叉验证T.测试使用'测试', '10x10t', 然后testckfold.使用10个自由度T.分布,找到临界区域并估计P.-价值。有关更多详细信息,请参阅[2][3]

备择方案

testcholdout.

  • 用于具有较大样本容量的测试集

  • 为了实现麦克尼马尔测试的变体来比较两个分类模型精度

  • 对于使用卡方或似然比检验成本敏感的测试。卡方检验用途Quadprog.(优化工具箱),这需要一个优化工具箱™许可证。

参考文献

[1] Alpaydin,E。“组合5×2 CV F测试,用于比较监督分类学习算法。”神经计算,卷。11,1999年第8,199,PP。1885-1992。

[2] Bouckaert。R.“两个基于学习的算法之间的校准测试选择。”国际机器学习会议, 2003,第51-58页。

[3] Bouckaert,R.和E. Frank。“评估用于比较学习算法的重要性测试的可复制性。”知识发现与数据挖掘进展,第八届亚太会议,2004年,第3-12页。

[4] Dietterich,T.“近似的统计测试,用于比较监督分类学习算法”。神经计算, 1998年第10卷第7期,1895-1923页。

[5] Hastie的,T.,R. Tibshirani,和J.弗里德曼。统计学习的要素,第二次。纽约:斯普林斯,2008年。

扩展功能

在R2015A介绍