主要内容

testckfold

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

描述

testckfold统计评估两种分类模型的精度反复交叉验证图谱两个模型,确定不同的分类,然后制定检验统计量相结合的分类损失差异。这种类型的测试尤其合适当样本容量是有限的。

你可以评估是否分类模型的精度是不同的,还是一个分类模型执行比另一个。可用的测试包括一个5×2配对t测试,一个5×2配对F测试和一个10 *重复交叉验证t测试。更多细节,请参阅重复交叉验证测试。加速计算,testckfold金宝app支持并行计算(需要并行计算工具箱™的许可)。

例子

h= testckfold (C1,C2,X1,X2)返回测试结果进行一个5×2配对的决定F交叉验证测试。零假设的分类模型C1C2有同等精度预测真正的类标签使用的预测和响应数据表X1X2h=1表示拒绝零假设在5%的显著性水平。

testckfold进行交叉验证测试通过C1C2所有预测变量X1X2,分别。真正的类标签X1X2必须相同。响应变量名X1,X2,C1.ResponseName,C2.ResponseName必须相同。

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

例子

h= testckfold (C1,C2,X1,X2,Y)适用于完整的分类模型或分类模板C1C2所有数据表或矩阵的预测变量X1X2,分别。Y相对应的表变量名称是正确的类标签,或真正的数组类标签。

例子

h= testckfold (___,名称,值)使用任何输入参数在前面的语法和指定的一个或多个额外的选项名称,值对参数。例如,您可以指定类型的备择假设,测试的类型,或者使用并行计算。

例子

(h,p,e1,e2)= testckfold (___)还返回p假设检验的值(p)和各自的分类损失每个交叉验证运行和褶皱e1e2)。

例子

全部折叠

在每一个节点,fitctree选择最佳预测值将默认使用一个详尽的搜索。或者,您可以选择将预测显示最依赖的证据进行弯曲测试的反应。这个例子统计比较分类树种植通过穷举搜索最好的分裂和生长进行曲率与交互测试。

加载census1994数据集。

负载census1994.matrng (1)%的再现性

增加一个默认使用训练集分类树,adultdata,这是一个表。反应变量名称是“工资”

C1 = fitctree (adultdata“工资”)
C1 = ClassificationTree PredictorNames: {1 x14细胞}ResponseName:“工资”CategoricalPredictors:[2 4 6 7 8 9 10 14]一会:(< = 50 k > 50 k) ScoreTransform:“没有一个”NumObservations: 32561属性,方法

C1是一个完整的ClassificationTree模型。它的ResponseName属性是“工资”C1使用穷举搜索来找到最好的预测将在基于最大分割获得。

增加另一个分类树使用相同的数据集,但指定找到最佳预测值与交互分割使用曲率测试。

C2 = fitctree (adultdata,“工资”,“PredictorSelection”,“interaction-curvature”)
C2 = ClassificationTree PredictorNames: {1 x14细胞}ResponseName:“工资”CategoricalPredictors:[2 4 6 7 8 9 10 14]一会:(< = 50 k > 50 k) ScoreTransform:“没有一个”NumObservations: 32561属性,方法

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

进行一个5×2配对F测试比较两个模型的精度使用训练集,因为数据集和反应变量的名字ResponseName属性都相同的情况下,和响应数据集是相等的,你可以省略提供响应数据。

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

h = 0表示不拒绝零假设C1C2有相同的精度在5%的水平。

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

加载费雪的虹膜数据集。

负载fisheriris;

创建一个朴素贝叶斯模板和一个分类树模板使用默认选项。

C1 = templateNaiveBayes;C2 = templateTree;

C1C2模板对象对应于朴素贝叶斯和分类树算法,分别。

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

rng (1);%的再现性h = testckfold (C1、C2、量量,物种)
h =逻辑0

h = 0表明不拒绝零假设,这两个模型的预测精度。

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

加载费雪的虹膜数据集。创建一个成本矩阵,处罚分类setosa虹膜分类virginica虹膜作为两倍多色的。

负载fisheriris;汇总(物种)
值计算百分比setosa 50杂色的50 virginica 50 33.33% 33.33% 33.33%
成本= [0 2 2;2 0 1 2 1 0];一会= {“setosa”“多色的”“virginica”};%指定行和列的顺序在成本

类的经验分布是均匀的,分类成本略有不平衡。

创建两个ECOC模板:一个使用二进制学习者和使用线性支持向量机SVM二进制学习者配备了RBF的内核。

tSVMLinear = templateSVM (“标准化”,真正的);默认%线性支持向量机tSVMRBF = templateSVM (“KernelFunction”,“RBF”,“标准化”,真正的);C1 = templateECOC (“学习者”,tSVMLinear);C2 = templateECOC (“学习者”,tSVMRBF);

C1C2ECOC模板对象。C1是准备线性支持向量机。C2准备与一个RBF核函数训练支持向量机。

测试简单的零假设模型(C1)是最准确的更复杂的模型(C2)的分类成本。进行10 *重复交叉验证测试。请求返回p值和错误分类的成本。

rng (1);%的再现性(h p e1, e2) = testckfold (C1、C2、量量,物种,“替代”,“更大的”,“测试”,“10 x10t”,“成本”、成本、“类名”类名)
h =逻辑0
p = 0.1077
e1 =10×100 0 0 0 0 0.0667 0.1333 0.0667 0.0667 0.1333 0.0667 - 0.0667 0 0 0 0 0 0 0 0 0 0 0.0667 0.0667 0.0667 0.0667 0.0667 0.0667 0.0667 0.0667 0.0667 0.0667 0.0667 0.0667 0 0 0 0 0 0 0.0667 0.0667 0.0667 0.0667 0.0667 0.0667 0.1333 0 0 0 0 0 0 0 0 0 0 0 0 0.0667 0 0 0.0667 0.0667 0.0667 0.0667 0.0667 0.0667 0.1333 0.0667 - 0.0667 0.0667 - 0.0667 0 0 0 0 0 0 0 0 0 0 0 0.0667 0.0667 0.1333 0.0667 0.0667 0.0667 0.0667 0.0667 0.0667 0 0 0 0
e2 =10×100 0 0 0 0 0 0.0667 0.1333 0.1333 0.2667 0.0667 - 0.0667 0.1333 0 0 0 0 0 0 0 0 0.0667 0.1333 0.1333 0.0667 0.1333 0.1333 0.0667 0.0667 0.0667 0.1333 0.0667 0.0667 0.1333 0.1333 0 0 0 0 0 0 0.0667 0.0667 0.0667 0.0667 0.1333 0.1333 0.0667 0.0667 0.0667 - 0.0667 0 0.0667 0.1333 0.0667 0.0667 0.2000 0.0667 0 0 0 0 0 0.1333 0.0667 0.2000 0.0667 0 0 0.0667 0.1333 0.1333 0 0 0 0 0 0 0 0 0 0.2000 0.1333 0.0667 0.0667 0.0667 0.0667 0.0667 0.0667 0.1333 0.0667 0.0667 - 0.1333 0 0

p值略大于0.10,这表明保留最多的简单模型的零假设是尽可能准确的更复杂的模型。这个结果是一致的任何显著性水平(α0.10)最多。

e1e2是10 *包含误分类代价矩阵。行r对应于运行r的重复交叉验证。列k对应于测试集褶皱k在一个特定的交叉验证。例如,元素(2、4)e2是0.1333。这个值意味着在交叉验证运行2中,当测试集是4折,估计测试集误分类代价是0.1333。

减少分类模型预测变量的复杂性通过选择一个子集(特性)从一个更大的组,然后统计比较两个模型之间的精度。

加载电离层数据集。

负载电离层

火车100提高了分类树的整体使用AdaBoostM1和整个的预测因子。检查每个预测的重要性衡量。

t = templateTree (“MaxNumSplits”1);% Weak-learner模板树对象C = fitcensemble (X, Y,“方法”,“AdaBoostM1”,“学习者”t);predImp = predictorImportance (C);甘氨胆酸栏(predImp) h =;h。XTick = 1:2:h.XLim(2); title(“预测重要性”)包含(“预测”)ylabel (的重要措施)

识别出五大预测的重要性。

[~,idxSort] =排序(predImp,“下”);idx5 = idxSort (1:5);

测试是否两个模型的预测精度。指定了数据集,然后完整的预测数据。利用并行计算来加速计算。

s = RandStream (“mlfg6331_64”);选择= statset (“UseParallel”,真的,“流”年代,“UseSubstreams”,真正的);(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.0625 0.0914 0.0568 0.0400 0.0739 0.0914 0.0966
e2 =5×20.0914 0.0625 0.1257 0.0682 0.0971 0.0625 0.0800 0.0909 0.0914 0.1193

testckfold对待训练分类模型作为模板,所以忽略了所有安装参数C。也就是说,testckfold交叉验证C只使用指定的选项和预测数据来估计out-of-fold分类损失。

h = 0表明不拒绝零假设,这两个模型的预测精度。这个结果支持简单的合奏。

输入参数

全部折叠

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

模板类型 返回的
分类树 templateTree
判别分析 templateDiscriminant
合奏(增强、装袋和随机子空间) templateEnsemble
纠错输出编码(ECOC)、多级分类模型 templateECOC
高斯内核与支持向量机(SVM)分类或逻辑回归的学习者金宝app templateKernel
k神经网络 templateKNN
线性分类支持向量机或逻辑回归的学习者 templateLinear
朴素贝叶斯 templateNaiveBayes
支持向量机 templateSVM
训练有素的模型类型 模型对象 返回的
分类树 ClassificationTree fitctree
判别分析 ClassificationDiscriminant fitcdiscr
袋装分类模型的合奏 ClassificationBaggedEnsemble fitcensemble
系综分类模型 ClassificationEnsemble fitcensemble
ECOC模型 ClassificationECOC fitcecoc
广义可加模型(GAM) ClassificationGAM fitcgam
k神经网络 ClassificationKNN fitcknn
朴素贝叶斯 ClassificationNaiveBayes fitcnb
神经网络 ClassificationNeuralNetwork与观测(行) fitcnet
支持向量机 ClassificationSVM fitcsvm

为了提高效率,提供一个分类模型模板对象,而不是一个训练分类模型对象。

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

模板类型 返回的
分类树 templateTree
判别分析 templateDiscriminant
合奏(增强、装袋和随机子空间) templateEnsemble
纠错输出编码(ECOC)、多级分类模型 templateECOC
高斯内核与支持向量机(SVM)分类或逻辑回归的学习者金宝app templateKernel
k神经网络 templateKNN
线性分类支持向量机或逻辑回归的学习者 templateLinear
朴素贝叶斯 templateNaiveBayes
支持向量机 templateSVM
训练有素的模型类型 模型对象 返回的
分类树 ClassificationTree fitctree
判别分析 ClassificationDiscriminant fitcdiscr
袋装分类模型的合奏 ClassificationBaggedEnsemble fitcensemble
系综分类模型 ClassificationEnsemble fitcensemble
ECOC模型 ClassificationECOC fitcecoc
广义可加模型(GAM) ClassificationGAM fitcgam
k神经网络 ClassificationKNN fitcknn
朴素贝叶斯 ClassificationNaiveBayes fitcnb
神经网络 ClassificationNeuralNetwork与观测(行) fitcnet
支持向量机 ClassificationSVM fitcsvm

为了提高效率,提供一个分类模型模板对象,而不是一个训练分类模型对象。

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

每一行的X1对应于一个观察,每一列对应一个变量。testckfold不支持多列变量和细金宝app胞数组以外的细胞阵列的特征向量。

X1X2必须是相同的数据类型,然后呢X1,X2,Y必须有相同数量的观察。

如果您指定Y作为一个数组,然后testckfold将所有列的X1作为独立的预测变量。

数据类型:||

数据用于申请第二个分类模型或模板,C2,指定为一个数字矩阵或表。

每一行的X2对应于一个观察,每一列对应一个变量。testckfold不支持多列变量和细金宝app胞数组以外的细胞阵列的特征向量。

X1X2必须是相同的数据类型,然后呢X1,X2,Y必须有相同数量的观察。

如果您指定Y作为一个数组,然后testckfold将所有列的X2作为独立的预测变量。

数据类型:||

指定正确的类标签,分类,特点,或字符串数组,一个逻辑或数值向量,一个细胞的特征向量,特征向量或字符串标量。

  • 对于一个向量或字符串标量人物,X1X2必须表,他们响应变量必须具有相同的名称和值,然后呢Y必须是共同的变量名。例如,如果X1.LabelsX2.Labels响应变量,那么Y“标签”X1.LabelsX2.Labels必须是等价的。

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

    • 如果Y每个元素是一个字符数组,那么必须对应一个数组的行。

    • X1,X2,Y必须有相同数量的观察(行)。

  • 如果这两个语句是正确的,那么你可以省略提供Y

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

    • C1C2完整的分类模型包含吗ResponseName属性指定响应变量名X1X2

    因此,testckfold使用共同的响应变量的表。例如,如果在表响应变量X1.LabelsX2.Labels和的值C1.ResponseNameC2.ResponseName“标签”,那么你不需要供应Y

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

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“替代”、“大”、“测试”,“10 x10t”、“选项”,statsset (UseParallel,真的)指定测试是否第一组第一个比第二个更准确预测类标签集,进行10 t测试和交叉验证使用并行计算。

假设检验显著性水平,指定为逗号分隔组成的“α”和一个标量值的区间(0,1)。

例子:“阿尔法”,0.1

数据类型:|

备择假设评估,指定为逗号分隔组成的“替代”表中列出的值。

价值 备择假设描述 金宝app支持测试
“不平等”(默认) 预测Y的预测结果C1应用于X1C2应用于X2不平等的精度。 “5 x2f”,“5 x2t”,“10 x10t”
“更大的” 预测Y的预测结果C1应用于X1更精确的比C2应用于X2 “5 x2t”“10 x10t”
“少” 预测Y的预测结果C1应用于X1不太准确的比C2应用于X2 “5 x2t”“10 x10t”

支持测试的详细信息,请参见金宝app测试

例子:“替代”、“大”

标志识别分类预测的测试集预测数据(X1),指定为逗号分隔组成的“X1CategoricalPredictors”和下列之一:

  • 一个数值向量和指数1通过p,在那里p列的数量吗X1

  • 一个逻辑向量的长度p,一个真正的条目意味着相应的列X1是一个分类变量。

  • “所有”,这意味着所有的预测都直言。

默认值是[],这表明数据不包含分类预测。

对于一个k神经网络分类模型,有效的选项[]“所有”

您必须指定X1CategoricalPredictors如果X1是一个矩阵,包括分类预测。testckfold不使用CategoricalPredictors的属性C1C1是一个训练分类模型。如果C1是一个训练有素的模型与分类预测,指定X1CategoricalPredictors, C1.CategoricalPredictors

例子:“X1CategoricalPredictors”、“所有”

数据类型:||逻辑|字符|字符串

标志识别分类预测在第二个测试集预测数据(X2),指定为逗号分隔组成的“X2CategoricalPredictors”和下列之一:

  • 一个数值向量和指数1通过p,在那里p列的数量吗X2

  • 一个逻辑向量的长度p,一个真正的条目意味着相应的列X2是一个分类变量。

  • “所有”,这意味着所有的预测都直言。

默认值是[],这表明数据不包含分类预测。

对于一个k神经网络分类模型,有效的选项[]“所有”

您必须指定X2CategoricalPredictors如果X2是一个矩阵,包括分类预测。testckfold不使用CategoricalPredictors的属性C2C2是一个训练分类模型。如果C2是一个训练有素的模型与分类预测,指定X2CategoricalPredictors, C2.CategoricalPredictors

例子:“X2CategoricalPredictors”、“所有”

数据类型:||逻辑|字符|字符串

类名称,指定为逗号分隔组成的“类名”和分类、字符或字符串数组,逻辑或数值向量,或单元阵列的特征向量。必须设置一会使用的数据类型Y

如果一会每个元素是一个字符数组,那么必须对应一个数组的行。

使用一会:

  • 指定的任何输入参数维度对应于类订单。例如,使用一会指定的尺寸成本

  • 选择一个子集的类进行测试。例如,假设所有不同的类名称的集合Y{' a ', ' b ', ' c '}。训练和测试模型利用类的观察“一个”“c”只是,指定“类名”,{' a ', ' c '}

默认是所有不同的类名称的集合Y

例子:“类名”,{' b ', ' g '}

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

成本分类,指定为逗号分隔组成的“成本”和一个方阵或结构数组。

  • 如果你指定方阵成本,然后成本(i, j)是一个指向类分类的成本j如果它真正的类。即行对应于真正的阶级和列对应于预测类。指定的类订单相应的行和列成本,另外指定一会名称-值对的论点。

  • 如果你指定的结构年代,然后年代必须有两个字段:

    • S.ClassNames,其中包含类名相同的数据类型的一个变量Y。你可以用这个字段来指定类的顺序。

    • S.ClassificationCosts,其中包含成本矩阵,行和列命令一样S.ClassNames

厂商在为测试使用,testcholdout

这是一个最佳实践提供同样的成本矩阵用于训练分类模型。

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

例子:“成本”,[0 1 2;1 0 2;2 2 0)

数据类型:||结构体

损失函数,指定为逗号分隔组成的“LossFun”“classiferror”,“binodeviance”,“指数”,“枢纽”,或一个函数处理。

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

    价值 损失函数
    “binodeviance” 二项异常
    “classiferror” 分类错误
    “指数” 指数损失
    “枢纽” 铰链的损失

  • 指定你自己的函数使用函数处理符号。

    假设n =大小(X, 1)样本大小还有吗K独特的类。你的函数必须有签名lossvalue =lossfun(C、S、W、成本),地点:

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

    • lossfun是你的函数的名称。

    • C是一个n——- - - - - -K逻辑矩阵行指示相应的观测属于哪个阶级。列顺序对应于类秩序一会名称-值对的论点。

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

    • 年代是一个n——- - - - - -K数字矩阵分类的分数。列顺序对应于类秩序一会名称-值对的论点。年代是一个矩阵的分类的分数。

    • W是一个n1数字的观察向量权重。如果你通过W,该软件可实现权重总和1

    • 成本是一个K——- - - - - -K数字矩阵的分类成本。例如,成本= 1 (K) -眼(K)指定了一个成本0正确的分类和成本1误分类。

    指定你的函数使用“LossFun”@lossfun

并行计算选项,指定为逗号分隔组成的“选项”和一个结构数组返回statset。这些选项需要并行计算工具箱。testckfold使用“流”,“UseParallel”,“UseSubtreams”字段。

这个表总结了可用的选项。

选项 描述
“流”

一个RandStream这样的对象的对象或单元阵列。如果你不指定,软件使用默认流或流。如果您指定,使用一个单独的对象除了下面是正确的:

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

  • UseParallel真正的

  • UseSubstreams

在这种情况下,使用一个相同大小的单元阵列作为平行池。如果平行池没有打开,然后软件试图打开一个(取决于你的喜好),和必须提供一个随机数流。

“UseParallel” 如果你有并行计算工具箱,然后你可以调用一个池的工人通过设置“UseParallel”,真的
“UseSubstreams” 设置为真正的使用指定的流并行计算“流”。默认是。例如,设置一种允许substreams,等“mlfg6331_64”“mrg32k3a”

例子:“选项”,statset (UseParallel,真的)

数据类型:结构体

先验概率为每个类,指定为逗号分隔组成的“之前”“经验”,“统一”,数值向量,或结构。

这个表总结了设置先验概率可用选项。

价值 描述
“经验” 类先验概率类相对频率Y
“统一” 所有类先验概率等于1 /K,在那里K类的数量。
数值向量 每个元素都是一个类的先验概率。指定的顺序使用一会名称-值对的论点。该软件可实现元素,这样他们总和1
结构

一个结构年代两个字段:

  • S.ClassNames包含类名作为相同类型的变量Y

  • S.ClassProbs包含一个向量对应的先验概率。该软件可实现元素,这样他们总和1

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

数据类型:字符|字符串|||结构体

测试进行,指定为逗号分隔组成的“测试”其中一个他后:“5 x2f”,“5 x2t”,“10 x10t”

价值 描述 金宝app支持备择假设
“5 x2f”(默认) 5×2配对F测试。只适合两方面的测试。 “不平等”
“5 x2t” 5×2配对t测试 “不平等”,“少”,“更大的”
“10 x10t” 10 *重复交叉验证t测试 “不平等”,“少”,“更大的”

可用的测试的详细信息,请参见重复交叉验证测试。有关支持替代假说,明白了金宝app替代

例子:“测试”、“10 x10t

冗长的层面上,指定为逗号分隔组成的“详细”0,1,或2详细的控制软件的诊断信息显示在每个交叉验证的命令窗口在训练。

这个表总结了冗长级别选项可用。

价值 描述
0 软件不显示诊断信息。
1 软件显示诊断消息每次实现一个新的交叉验证运行。
2 软件显示诊断消息每次它实现了一个新的交叉验证运行,每次火车在一个特定的褶皱。

例子:“详细”,1

数据类型:|

观察体重、指定为逗号分隔组成的“重量”和一个数字向量。

的大小权重的行数必须等于X1。软件重每一行的观察X与相应的重量权重

该软件可实现权重总结先验概率的值在相应的类中。

数据类型:|

注:

  • testckfold对待训练分类模型作为模板。因此,它忽略了所有安装在模型中参数。也就是说,testckfold旨在仅使用选项中指定的模型和预测数据。

  • 重复交叉验证测试依赖于假设下的测试数据是渐近正态的零假设。高度不平衡成本矩阵(例如,成本=(0 100;1 0))和高度离散响应分布(也就是说,大多数的观察是在一个小数量的类)可能违反了渐近正态性假设。厂商在为测试使用testcholdout

  • 年代,<定义>值、空特征向量(),空字符串(”“),<失踪>值显示缺失的数据值。

输出参数

全部折叠

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

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次了。每个部门被称为运行和每一组被称为运行褶皱。每次运行包含完整,但分裂,数据集。

  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:

    • 估计within-fold平均值的差异和他们的平均: δ ¯ r = 1 K k = 1 K δ ^ k r

    • 估计的总体平均差异: δ ¯ = 1 K R r = 1 R k = 1 K δ ^ r k

    • 估计within-fold方差的差异: 年代 r 2 = 1 K k = 1 K ( δ ^ r k δ ¯ r ) 2

    • 估计的平均值within-fold差异: 年代 ¯ 2 = 1 R r = 1 R 年代 r 2

    • 估计的总体样本方差的差异: 年代 2 = 1 K R 1 r = 1 R k = 1 K ( δ ^ r k δ ¯ ) 2

    计算检验统计量。这里描述金宝app假设所有支持测试,H0,估计差异是独立的和近似正态分布,意思是0和有限的,常见的标准偏差。然而,这些测试违反独立性假设,所以检验统计量分布近似。

    • R= 2,测试是一个配对的测试。支持的两个测试是金宝app一个配对tF测试。

      • 成对的检验统计量t测试是

        t p 一个 r e d = δ ^ 11 年代 ¯ 2

        t p 一个 r e d 有一个t分布与R自由度下的零假设。

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

        5×2配对t测试可以稍微保守[4]

      • 成对的检验统计量F测试是

        F p 一个 r e d = 1 R K r = 1 R k = 1 K ( δ ^ r k ) 2 年代 ¯ 2

        F p 一个 r e d 有一个F分布与RKR的自由度。

        一个5×2配对F测试5×2类似的权力t测试,但更保守[1]

    • R> 2,测试是重复交叉验证测试。测试数据

      t C V = δ ¯ 年代 / ν + 1

      t C V 有一个t分布与ν的自由度。如果差异真正独立ν=RK- 1。在这种情况下,自由度必须优化参数。

      对于一个10 *重复交叉验证t测试中,8 - 11之间的最优的自由度([2][3])。testckfold使用ν= 10。

重复交叉验证测试在配对测试的优点是,更可重复的结果[3]。缺点是它们需要很高的计算资源。

分类损失

分类损失显示一个分类模型或一组预测的准确性标签。一般来说,对于一个固定成本矩阵,分类精度降低分类损失增加。

testckfold返回分类损失(见e1e2)在备择假设下(即无限制的分类损失)。在接下来的定义:

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

  • n测试是测试集样本大小。

  • (x)是指标函数。如果x是一个真实的语句呢(x)= 1。否则,(x)= 0。

  • p ^ 1 j 是分类模型的预测类赋值1观察j

  • yj是真正的类标签的观察j

  • 二项异常的形式

    e 1 = j = 1 n t e 年代 t w j 日志 ( 1 + 经验值 ( 2 y j f ( X j ) ) ) j = 1 n t e 年代 t w j

    地点:

    • yj= 1为正类和1负类。

    • f ( X j ) 是分类得分。

    二项式异常已连接二项式概率函数的最大化。二项异常的细节,请参阅[5]

  • 指数损失类似于二项异常和形式

    e 1 = j = 1 n t e 年代 t w j 经验值 ( y j f ( X j ) ) j = 1 n t e 年代 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 年代 t w j ( p ^ 1 j y j ) j = 1 n t e 年代 t w j

提示

  • 方法比较模型的例子包括:

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

    • 比较两种不同的精度使用两组不同的预测模型。

    • 执行各种类型的特征选择。例如,您可以比较模型的准确性训练使用一组预测的准确性一训练子集或不同的预测。你可以任意选择预测因素的集合,或使用一个特征选择技术如PCA或连续的特征选择(见主成分分析sequentialfs)。

  • 如果这两个语句是正确的,那么你可以省略提供Y

    • X1X2表是包含响应变量和变量名称使用相同的反应。

    • C1C2完整的分类模型包含等于多少ResponseName属性(如。比较字符串(C1.ResponseName C2.ResponseName)=1)。

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

  • 执行cost-insensitive特征选择的方法之一是:

    1. 创建一个分类模型模板,描述第一个分类模型(C1)。

    2. 创建一个分类模型模板,描述第二个分类模型(C2)。

    3. 指定两个预测数据集。例如,指定X1完整的预测集和X2一组降低。

    4. 输入testckfold (C1, C2, X1, X2, Y,“另类”、“少”)。如果testckfold返回1,然后有足够的证据表明,使用更少的分类模型预测性能优于模型,使用完整的预测集。

    或者,您可以评估是否有显著区别这两个模型的精度。执行此评估,删除“替代”、“少”规范在步骤4。testckfold进行双向测试,h = 0表示没有足够的证据显示在两个模型的准确性。

  • 测试适合误分类率分类损失,但您可以指定其他损失函数(见LossFun)。估计分类损失的关键假设是独立的和正态分布均值0和有限的常见的方差在双面的零假设。分类损失以外的误分类率可以违反这一假设。

  • 高度离散的数据,不平衡类和高度不平衡矩阵可以违反常态假设分类损失成本差异。

算法

如果指定的10 *重复交叉验证t测试使用“测试”、“10 x10t,然后testckfold使用10自由度t分发给找到临界区和估计p价值。更多细节,请参阅[2][3]

选择

使用testcholdout:

  • 有大量的样本测试集

  • 实现变异McNemar检验法测试来比较两个分类模型的精度

  • 厂商在为测试使用卡方或似然比检验。卡方检验使用quadprog(优化工具箱),这就需要一种优化工具箱™许可证。

引用

[1]Alpaydin,大肠“联合5 x 2 CV F测试比较监督分类学习算法。”神经计算8号,卷。11日,1999年,页1885 - 1992。

bouckaer [2]。>选择两个学习算法的基础上校准测试。”国际会议上机器学习,2003年,页51-58。

[3]Bouckaert R。和e·弗兰克。“评估意义的可复制性测试对比学习算法。”知识发现和数据挖掘的发展,8日亚太会议,2004年,页3 - 12。

[4]Dietterich, t .“近似统计测试来比较监督分类学习算法。”神经计算7号,卷。10日,1998年,页1895 - 1923。

[5]Hastie, T。,R。Tibshirani, and J. Friedman.统计学习的元素,第二版。纽约:施普林格,2008年。

扩展功能

版本历史

介绍了R2015a