通过重复的交叉验证比较两个分类模型的精度
testckfold.
统计学评估两种分类模型通过反复交叉验证这两个模型中,确定在分类损失的差异,然后通过组合分类损耗差异配制检验统计量的准确度。当样本大小被限制这种类型的测试是特别适合的。
您可以评估分类模型的准确性是否不同,或者一个分类模型是比另一个分类模型更好。可用的测试包括5×2配对T.测试,5乘2对F测试,并进行10 × 10的重复交叉验证T.测试。有关更多详细信息,请参阅重复交叉验证测试.加快计算,testckfold.
金宝app支持并行计算(需要并行计算工具箱™许可证)。
在每个节点,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.
表示不拒绝两个模型具有相同预测精度的原假设。这个结果有利于更简单的集成。
C1.
-分类模型模板或训练的分类模型分类模型模板或培训的分类模型,指定为这些表中描述的任何分类模型模板对象或培训的分类模型对象。
模板类型 | 返回的 |
---|---|
分类树 | 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 |
为了效率,提供分类模型模板对象而不是培训的分类模型对象。
C2.
-分类模型模板或培训的模型分类模型模板或培训的分类模型,指定为这些表中描述的任何分类模型模板对象或培训的分类模型对象。
模板类型 | 返回的 |
---|---|
分类树 | 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 |
为了效率,提供分类模型模板对象而不是培训的分类模型对象。
y
-真正的类标签真正的类标签,指定为分类,字符或字符串阵列,逻辑或数字矢量,字符向量的小区数组或字符向量或字符串标量。
对于字符向量或字符串标量,X1
和X2
必须是表,他们的反应变量必须具有相同的名称和价值观,y
必须是共同的变量名。例如,如果X1.Labels.
和X2。标签
是响应变量,那么y
是“标签”
和X1.Labels.
和X2。标签
必须等同。
对于所有其他受支持的数据类型金宝app,y
是一系列真正的类标签。
如果y
是字符数组,则每个元素必须与数组的一行相对应。
X1
那X2
那y
必须有相同数量的观察(行)。
如果这两个陈述都是真的,那么你可以省略供应y
.
因此,testckfold.
使用表中的共同响应变量。例如,如果表中的响应变量是X1.Labels.
和X2。标签
,和的值C1.ResponseName.
和c2.responseName.
是“标签”
,那么你就不必供应了y
.
数据类型:分类
|char
|细绳
|逻辑
|单
|双倍的
|细胞
指定可选的逗号分离对名称,价值
参数。的名字
是参数名称和价值
为对应值。的名字
必须出现在引号内。您可以以任何顺序指定多个名称和值对参数Name1, Value1,…,的家
.
'另类', '更大', '测试', '10x10t', '选项',statsset( 'UseParallel',真)
指定测试第一组预测类标签是否比第二组更准确,执行10 × 10 t测试,并使用并行计算进行交叉验证。
'Α'
-假设试验意义水平0.05
(默认)|间隔中的标量值(0,1)假设检验的显著性水平,指定为逗号分隔对组成'Α'
和在区间(0,1)的标量值。
例子:“阿尔法”,0.1
数据类型:单
|双倍的
'选择'
-评估的替代假设“不平等”
(默认)|“更大的”
|'较少的'
“X1CategoricalPredictors”
-标志识别分类预测[]
(默认)|逻辑矢量|数字矢量|'全部'
标志识别第一个测试集预测器数据中的分类预测器(X1
),指定为逗号分隔的对,由“X1CategoricalPredictors”
和以下之一:
一个数字矢量与索引1
通过P.
, 在哪里P.
是列的数量X1
.
长度的逻辑矢量P.
,其中A.真正的
进入意味着相应的列X1
是一个分类变量。
'全部'
,意味着所有预测因素都是分类的。
规格X1CategoricalPredictors
如果:
至少有一个预测变量是分类和C1.
是一个分类树,分类树的集合,ecoc模型或天真的贝叶斯分类模型。
所有预测因素都是分类的C1.
是一个K.神经网络分类模型。
如果您指定X1CategoricalPredictors
对于任何其他情况,那么testckfold.
抛出一个错误。例如,该功能不能使用训练分类预测SVM学习者。
默认值是[]
,这表明没有分类预测。
例子:'x1categoricalprictics','全部'
数据类型:单
|双倍的
|逻辑
|char
|细绳
'X2CategoricalPredictors'
-标志识别分类预测[]
(默认)|逻辑矢量|数字矢量|'全部'
标志识别第二个测试集预测器数据中的分类预测器(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
|细绳
|细胞
|分类
'成本'
-分类成本分类代价,指定为逗号分隔对组成'成本'
方阵或结构数组。
对于成本敏感的测试,testcholdout.
.
最好的做法是提供与训练分类模型相同的成本矩阵。
默认值是成本(i,j)= 1
如果我〜= j
,成本(i,j)= 0
如果我= J.
.
例子:'费用',[0 1 2;1 0 2;2 2 0]
数据类型:双倍的
|单
|塑造
“LossFun”
-损失功能'classiferror'
(默认)|'binodeviance'
|'指数'
|“枢纽”
|功能手柄损失函数,指定为逗号分隔对组成“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.
用途“流”
那'使用指平行'
,'使用'
字段。
此表总结了可用的选项。
选项 | 描述 |
---|---|
“流” |
一种
在这种情况下,使用相同的大小作为平行池的单元阵列。如果并行游泳池不开放,那么软件会尝试(根据自己的喜好)开放的,并 |
'使用指平行' |
如果您有并行计算工具箱,那么你可以通过调用设置的工人池“UseParallel”,真的 . |
'userubstreams' |
设置真正的 通过指定的流并行计算“流” .默认为错误的 .例如,设置溪流 允许子流的类型,例如“mlfg6331_64” 或'MRG32K3A' . |
例子:'选项',statset('deverypallellel',true)
数据类型:塑造
“之前”
-先前概率'经验'
(默认)|'制服'
|数字矢量|结构每个类的先前概率,指定为逗号分隔的配对组成“之前”
和'经验'
那'制服'
,数字矢量或结构。
该表总结了设置先验概率的可用选项。
价值 | 描述 |
---|---|
'经验' |
类先验概率是相对类频率在y . |
'制服' |
所有类的先前概率等于1 /K., 在哪里K.是的类的数量。 |
数字矢量 | 每个元素是一个类的先验概率。指定使用的顺序类名 名称值对参数。该软件将其总和的元素标准化为1 . |
结构 | 结构
|
例子:“之前”,结构(“类名”,{{“setosa”、“癣”}},“ClassProbs”,[1,2])
数据类型:char
|细绳
|单
|双倍的
|塑造
“详细”
-冗长水平0.
(默认)|1
|2
详细程度,指定为逗号分隔对,由“详细”
和0.
那1
,或2
.verb
在训练每个交叉验证折叠期间控制软件在命令窗口中显示的诊断信息量。
此表总结了可用的详细级别选项。
价值 | 描述 |
---|---|
0. |
该软件不显示诊断信息。 |
1 |
每次它实现了一个新的交叉验证的运行时间软件显示诊断消息。 |
2 |
该软件每次执行新的交叉验证运行时,以及每次在特定折叠上进行训练时,都会显示诊断消息。 |
例子:'verbose',1
数据类型:双倍的
|单
'重量'
-观察权重(大小(x,1),1)
(默认)|数字矢量观察权重,指定为逗号分隔的一对组成的'重量'
和一个数字矢量。
的大小重量
必须等于的行数X1
.该软件的重量意见的每一行中X
与在相应的权重重量
.
软件规范化重量
总结相应类中的现有概率的值。
数据类型:双倍的
|单
注:
testckfold.
对待训练的分类模型作为模板。因此,它忽略了模型中的所有拟合参数。那是,testckfold.
只使用模型和预测器数据中指定的选项进行交叉验证。
重复的交叉验证测试取决于假设测试统计数据在零假设下的渐近正常。高度不平衡的成本矩阵(例如,成本
=(0 100; 1 0)
)和高度离散的响应分布(即大多数观察到少数类)可能违反渐近正常假设。对于成本敏感的测试,使用testcholdout.
.
南
年代,<未定义>
值、空字符向量(''
),空字符串(“
), 和< >失踪
Values表示丢失的数据值。
用于治疗缺失值X1
和X2
,参见相应的分类模型训练功能参考页面:fitctree
那fitcdiscr.
那fitcensemble
那fitcecoc.
那fitcgam
那fitcknn
那Fitcnb.
,或fitcsvm
.
testckfold.
删除缺失的值y
和相应的行X1
和X2
.
H
-假设检验结果1
|0.
P.
-P.价值P.-测试的值,作为区间[0,1]中的标量返回。P.
是随机的检验统计量是至少为极端作为观察检验统计量,因为该零假设为真的概率。
testckfold.
估计P.
使用测试统计的分布,随着测试类型而变化。有关测试统计信息的详细信息,请参阅重复交叉验证测试.
重复交叉验证测试结合重复交叉验证数据产生的分类损失差异,形成比较两种分类模型准确性的检验统计量。当样本量有限时,重复的交叉验证测试是有用的。
进行R.-经过-K.测试:
随机分(按类分层)预测数据集和真实类标签进入K.集,R.时代。每个部门都被称为a跑跑步中的每个设置都被称为a折叠.每次运行包含完整的,但是划分,数据集。
为运行R.= 1〜R.,重复这些步骤K.= 1〜K.:
储备折叠K.作为测试组,并使用在其余各自的预测数据集训练所述两个分类模型K.- 1折。
使用培训的模型及其各自的折叠预测类标签K.预测数据集。
将两组估计标签与真实标签进行比较,估计分类损失。表示 作为测试集折叠时的分类损失K.在运行R.的分类模型C.
计算两种型号的分类损失之间的差异:
在运行结束时,有K.每个分类模型的分类损失。
结合步骤2的结果。为每一个R.= 1〜R.:
估计差异的折叠内平均值和它们的平均值:
估计差异的总体平均值:
估计差异的倍内方差:
估计的内倍差的平均值:
估计的差的总体样本方差:
计算测试统计信息。这里描述金宝app的所有支持的测试假设H0.,估计的差异是独立的,近似正态分布,均值为0,有一个有限的共同标准差。然而,这些检验违背了独立假设,因此检验统计量分布是近似的。
反复交叉验证测试的优势在配对测试中是结果更可重复[3].缺点是它们需要大量的计算资源。
分类损失表示分类模型或一组预测标签的准确性。通常,对于固定成本矩阵,分类精度随着分类损失的增加而降低。
testckfold.
返回分类损失(见E1.
和E2.
(即不受限制的分类损失)。在以下定义中:
分类的损失集中于第一个分类模型。第二个模型分类的损失是相似的。
N测试为测试集样本大小。
一世(X)为指示函数。如果X那是一个真正的陈述一世(X)= 1.否则,一世(X)= 0。
是分类模型1的预测类分配,用于观察j.
yj观察是真正的阶级标签吗j.
比较模型的方法包括:
通过通过相同的预测器数据比较简单分类模型和更复杂模型的精度。
用两组不同的预测器比较两种不同模型的准确性。
执行各种类型的功能选择.例如,您可以比较使用一组预测器训练的模型与使用一个子集或不同的预测器训练的模型的准确性。你可以任意选择一组预测器,或者使用特征选择技术,如PCA或序列特征选择(见PCA.
和sequentialfs
).
如果这两个陈述都是真的,那么你可以省略供应y
.
因此,testckfold.
使用表中的共同响应变量。
执行成本不敏感的特征选择的一种方法是:
创建一个表征第一分类模型分类模型模板(C1.
).
创建一个特征的分类模型模板,其特征是第二分类模型(C2.
).
指定两个预测器数据集。例如,指定X1
作为完整的预测仪集和X2
作为一个简化集。
进入Testckfold(C1,C2,X1,X2,Y,'替代','少')
.如果testckfold.
回报1
然后,有足够的证据表明,使用更少的预测器的分类模型比使用完整预测器集的模型更好地执行。
或者,您可以评估这两个模型的准确性是否存在显著差异。要执行此评估,请删除“替代”,“少”
在步骤4中规范。testckfold.
进行双面测试,并且H = 0.
表明没有足够的证据表明这两个模型的精度差。
该测试适用于错误率分类损失,但您可以指定其他丢失功能(参见LossFun
).关键假设是在双边零假设下,估计的分类损失是独立的,均值为0,公方差有限的正态分布。除了误分类率以外的分类损失都可能违反这一假设。
高度离散的数据、不平衡的类和高度不平衡的代价矩阵都可能违反分类损失差异的正态性假设。
如果指定要进行10×10重复的交叉验证T.测试使用'测试', '10x10t'
, 然后testckfold.
使用10个自由度T.分布,找到临界区域并估计P.-价值。有关更多详细信息,请参阅[2]和[3].
用于具有较大样本容量的测试集
为了实现麦克尼马尔测试的变体来比较两个分类模型精度
对于使用卡方或似然比检验成本敏感的测试。卡方检验用途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年。
要并行运行,请指定“选项”
对此函数调用中的名称值参数并设置'使用指平行'
字段的选项结构真正的
使用实例化
.
例如:'选项',statset('deverypallellel',true)
有关并行计算的更多信息,请参见运行MATLAB函数与自动并行支持金宝app(并行计算工具箱).
templateDiscriminant
|templateECOC
|模板lemble.
|templateKNN
|TemplateAniveBayes.
|Templatesvm.
|Templatetree.
|testcholdout.
您单击了与此MATLAB命令对应的链接:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。