通过重复交叉验证比较两种分类模型的准确性
testckfold
通过对两种分类模型的重复交叉验证,确定分类损失的差异,结合分类损失的差异制定检验统计量,统计评估两种分类模型的准确性。当样本量有限时,这种类型的检验尤其适用。
您可以评估分类模型的准确性是否不同,或者一个分类模型是否比另一个更好。可用的测试包括5 × 2配对测试t测试,一个5乘2的配对F测试,并进行10乘10的重复交叉验证t测试。有关更多细节,请参见重复交叉验证测试.为了加快计算速度,testckfold
金宝app支持并行计算(需要并行计算工具箱™许可证)。
在每个节点上,fitctree
默认情况下使用穷尽搜索选择要拆分的最佳预测器。或者,您可以选择通过进行曲率测试来分割显示出与响应相关性证据最多的预测器。此示例在统计上比较了通过穷尽搜索最佳分割生长的分类树和通过进行交互曲率测试生长的分类树。
加载census1994
数据集。
负载census1994.matrng (1)%用于重现性
使用训练集生长一个默认分类树,adultdata
,这是一个表格。响应变量的名称是“工资”
.
C1 = fitctree(adultdata,“工资”)
C1 = ClassificationTree PredictorNames: {1x14 cell} ResponseName: 'salary' CategoricalPredictors: [2 4 6 7 8 9 10 14] ClassNames: [<=50K >50K] ScoreTransform: 'none' NumObservations: 32561 Properties, Methods
C1
是一个完整的ClassificationTree
模型。它的ResponseName
属性是“工资”
.C1
使用穷尽搜索,根据最大拆分增益找到拆分的最佳预测器。
使用相同的数据集生长另一个分类树,但指定找到最好的预测器,使用具有交互作用的曲率测试进行拆分。
C2 = fitctree(adultdata,“工资”,“PredictorSelection”,“interaction-curvature”)
C2 = ClassificationTree PredictorNames: {1x14 cell} ResponseName: 'salary' CategoricalPredictors: [2 4 6 7 8 9 10 14] ClassNames: [<=50K >50K] ScoreTransform: 'none' NumObservations: 32561 Properties, Methods
C2
也是一个完整的ClassificationTree
模型与ResponseName
等于“工资”
.
进行5 × 2配对F利用训练集测试比较两种模型的准确性。因为数据集中的响应变量名和ResponseName
属性均相等,且两个集合中的响应数据相等,则可以省略提供响应数据。
h = testckfold(C1,C2,adultdata,adultdata)
h =逻辑0
H = 0
表示不拒绝零假设C1
而且C2
在5%的水平有相同的准确性。
使用5 × 2配对,对两个模型的误分类率进行统计检验F测试。
载入费雪的虹膜数据集。
负载fisheriris;
使用默认选项创建一个朴素贝叶斯模板和一个分类树模板。
C1 = templateNaiveBayes;C2 =模板树;
C1
而且C2
分别为朴素贝叶斯算法和分类树算法对应的模板对象。
测试两个模型是否具有相同的预测精度。对每个模型使用相同的预测器数据。testckfold
引导一个5 × 2,双面,成对F默认为测试。
rng (1);%用于重现性h = testckfold(C1,C2,meas,meas,species)
h =逻辑0
H = 0
表示不拒绝零假设,即两个模型具有相等的预测精度。
使用10 × 10重复交叉验证进行统计检验,以评估一个更简单的模型是否比一个更复杂的模型具有更好的准确性t测试。
载入费雪的虹膜数据集。创建一个成本矩阵,对错误分类的鸢尾花的惩罚是将处女鸢尾错误分类为彩色鸢尾花的两倍。
负载fisheriris;汇总(物种)
值计数百分比setosa 50 33.33% versicolol50 33.33% virginica 50 33.33%
成本= [0 2 2;2 0 1;2 1 0];ClassNames = {“setosa”“多色的”“virginica”};...%指定开销中行和列的顺序
类别的经验分布是均匀的,分类成本略有不平衡。
创建两个ECOC模板:一个使用线性SVM二元学习器,另一个使用配备RBF内核的SVM二元学习器。
tSVMLinear = templateSVM(“标准化”,真正的);默认为线性支持向量机tSVMRBF = templateSVM(“KernelFunction”,“RBF”,“标准化”,真正的);C1 = templateECOC(“学习者”, tSVMLinear);C2 = templateECOC(“学习者”, tSVMRBF);
C1
而且C2
是ECOC模板对象。C1
为线性支持向量机准备。C2
对支持向量机进行RBF核训练。
测试零假设,更简单的模型(C1
)最多与更复杂的模型(C2
)的分类成本。进行10 × 10重复交叉验证测试。请求返回p-值和错误分类成本。
rng (1);%用于重现性[h,p,e1,e2] = testckfold(C1,C2,meas,meas,species,...“替代”,“更大的”,“测试”,“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-value值略大于0.10,这表明在保留零假设的情况下,更简单的模型最多与更复杂的模型一样准确。该结果与任何显著性水平(α
),最多为0.10。
e1
而且e2
是包含错误分类代价的10乘10矩阵。行r对应于runr重复交叉验证。列k对应于测试集折叠k在特定的交叉验证运行中。的元素(2,4)e2
是0.1333。这个值意味着在交叉验证运行2中,当测试集为fold 4时,估计的测试集错误分类代价为0.1333。
通过从较大的集合中选择预测变量(特征)的子集来降低分类模型的复杂性。然后,统计比较两种模型的准确性。
加载电离层
数据集。
负载电离层
使用AdaBoostM1和整个预测器集训练100个增强分类树的集合。检查每个预测因子的重要性度量。
t = templateTree(“MaxNumSplits”1);弱学习者模板树对象C = fitcensemble(X,Y,“方法”,“AdaBoostM1”,“学习者”t);predImp = predictorImportance(C);bar(predImp) h = gca;h.XTick = 1:2:h.XLim(2);标题(“预测重要性”)包含(“预测”) ylabel (的重要措施)
根据它们的重要性确定前五个预测因素。
[~,idxSort] = sort(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
仅使用指定的选项和预测器数据来估计折叠外分类损失。
H = 0
表示不拒绝零假设,即两个模型具有相等的预测精度。这个结果有利于更简单的集合。
C1
- - - - - -分类模型模板或训练过的分类模型分类模型模板或训练过的分类模型,指定为这些表中描述的任何分类模型模板对象或训练过的分类模型对象。
模板类型 | 返回的 |
---|---|
分类树 | templateTree |
判别分析 | templateDiscriminant |
集合(增强、套袋和随机子空间) | templateEnsemble |
纠错输出码(ECOC),多类分类模型 | templateECOC |
k神经网络 | templateKNN |
朴素贝叶斯 | templateNaiveBayes |
金宝app支持向量机(SVM) | templateSVM |
训练模型类型 | 模型对象 | 返回的 |
---|---|---|
分类树 | ClassificationTree |
fitctree |
判别分析 | ClassificationDiscriminant |
fitcdiscr |
袋装分类模型的集成 | ClassificationBaggedEnsemble |
fitcensemble |
分类模型集合 | ClassificationEnsemble |
fitcensemble |
ECOC模型 | ClassificationECOC |
fitcecoc |
广义相加模型(GAM) | ClassificationGAM |
fitcgam |
k神经网络 | ClassificationKNN |
fitcknn |
朴素贝叶斯 | ClassificationNaiveBayes |
fitcnb |
神经网络 | ClassificationNeuralNetwork (观察结果按行排列) |
fitcnet |
支持向量机 | ClassificationSVM |
fitcsvm |
为了提高效率,提供一个分类模型模板对象,而不是一个训练过的分类模型对象。
C2
- - - - - -分类模型模板或训练模型分类模型模板或训练过的分类模型,指定为这些表中描述的任何分类模型模板对象或训练过的分类模型对象。
模板类型 | 返回的 |
---|---|
分类树 | templateTree |
判别分析 | templateDiscriminant |
集合(增强、套袋和随机子空间) | templateEnsemble |
纠错输出码(ECOC),多类分类模型 | templateECOC |
k神经网络 | templateKNN |
朴素贝叶斯 | templateNaiveBayes |
金宝app支持向量机(SVM) | templateSVM |
训练模型类型 | 模型对象 | 返回的 |
---|---|---|
分类树 | ClassificationTree |
fitctree |
判别分析 | ClassificationDiscriminant |
fitcdiscr |
袋装分类模型的集成 | ClassificationBaggedEnsemble |
fitcensemble |
分类模型集合 | ClassificationEnsemble |
fitcensemble |
ECOC模型 | ClassificationECOC |
fitcecoc |
广义相加模型(GAM) | ClassificationGAM |
fitcgam |
k神经网络 | ClassificationKNN |
fitcknn |
朴素贝叶斯 | ClassificationNaiveBayes |
fitcnb |
神经网络 | ClassificationNeuralNetwork (观察结果按行排列) |
fitcnet |
支持向量机 | ClassificationSVM |
fitcsvm |
为了提高效率,提供一个分类模型模板对象,而不是一个训练过的分类模型对象。
Y
- - - - - -真正的类标签True类标签,指定为类别、字符或字符串数组、逻辑或数字向量、字符向量的单元格数组或字符向量或字符串标量。
对于字符向量或字符串标量,X1
而且X2
必须是表,它们的响应变量必须具有相同的名称和值,并且Y
必须是公共变量名。例如,如果X1。标签
而且X2。标签
那么是响应变量吗Y
是“标签”
而且X1。标签
而且X2。标签
必须是等价的。
对于所有其他支持的数据类型,金宝appY
是一个真正的类标签数组。
如果Y
是字符数组,则每个元素必须对应于数组的一行。
X1
,X2
,Y
必须有相同数量的观察(行)。
如果这两个表述都是正确的,那么您可以省略提供Y
.
因此,testckfold
使用表中的公共响应变量。例如,如果表中的响应变量为X1。标签
而且X2。标签
的值C1。Re年代ponseName
而且C2。Re年代ponseName
是“标签”
,那么你就不必供应了Y
.
数据类型:分类
|字符
|字符串
|逻辑
|单
|双
|细胞
指定逗号分隔的可选对名称,值
参数。的名字
参数名称和价值
对应的值。的名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
“替代”、“大”、“测试”,“10 x10t”、“选项”,statsset (UseParallel,真的)
指定测试第一个预测类标签的第一组是否比第二组更精确,执行10 × 10 t检验,并使用并行计算进行交叉验证。
α
- - - - - -假设检验显著性水平0.05
(默认)|区间(0,1)中的标量值假设检验显著性水平,指定为逗号分隔对组成“α”
和区间(0,1)中的一个标量值。
例子:“阿尔法”,0.1
数据类型:单
|双
替代
- - - - - -评估的备选假设“不平等”
(默认)|“更大的”
|“少”
X1CategoricalPredictors
- - - - - -标识类别预测器的标志[]
(默认)|逻辑向量|数值向量|“所有”
在第一个测试集预测器数据中标识类别预测器的标记(X1
),指定为逗号分隔的对,由“X1CategoricalPredictors”
和以下其中之一:
具有索引的数字向量1
通过p
,在那里p
列数是X1
.
长度的逻辑向量p
,其中真正的
的对应列表示X1
是一个类别变量。
“所有”
这意味着所有的预测因素都是绝对的。
默认为[]
,这表明数据不包含类别预测器。
对于一个k神经网络分类模型,有效选项有[]
而且“所有”
.
您必须指定X1CategoricalPredictors
如果X1
是一个矩阵,它包含范畴预测器。testckfold
不使用CategoricalPredictors
的属性C1
当C1
是经过训练的分类模型。如果C1
用分类预测器训练的模型是指定的吗X1CategoricalPredictors, C1。CategoricalPredictors
.
例子:“X1CategoricalPredictors”、“所有”
数据类型:单
|双
|逻辑
|字符
|字符串
X2CategoricalPredictors
- - - - - -标识类别预测器的标志[]
(默认)|逻辑向量|数值向量|“所有”
在第二个测试集预测器数据中标识类别预测器的标记(X2
),指定为逗号分隔的对,由“X2CategoricalPredictors”
和以下其中之一:
具有索引的数字向量1
通过p
,在那里p
列数是X2
.
长度的逻辑向量p
,其中真正的
的对应列表示X2
是一个类别变量。
“所有”
这意味着所有的预测因素都是绝对的。
默认为[]
,这表明数据不包含类别预测器。
对于一个k神经网络分类模型,有效选项有[]
而且“所有”
.
您必须指定X2CategoricalPredictors
如果X2
是一个矩阵,它包含范畴预测器。testckfold
不使用CategoricalPredictors
的属性C2
当C2
是经过训练的分类模型。如果C2
用分类预测器训练的模型是指定的吗X2CategoricalPredictors, C2。CategoricalPredictors
.
例子:“X2CategoricalPredictors”、“所有”
数据类型:单
|双
|逻辑
|字符
|字符串
一会
- - - - - -类名类名,指定为逗号分隔的对,由“类名”
以及类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。你必须设置一会
的数据类型Y
.
如果一会
是字符数组,则每个元素必须对应于数组的一行。
使用一会
:
指定与类顺序对应的任何输入参数维度的顺序。例如,使用一会
指定…尺寸的顺序成本
.
选择类的一个子集进行测试。例如,假设所有不同的类名的集合Y
是{' a ', ' b ', ' c '}
.训练和测试模型使用观察班级“一个”
而且“c”
只是,指定“类名”,{' a ', ' c '}
.
中的所有不同的类名的集合Y
.
例子:“类名”,{' b ', ' g '}
数据类型:单
|双
|逻辑
|字符
|字符串
|细胞
|分类
成本
- - - - - -成本分类分类开销,指定为逗号分隔的对,由“成本”
和一个方阵或结构数组。
对于成本敏感的测试使用,testcholdout
.
提供用于训练分类模型的相同成本矩阵是一种最佳实践。
默认为成本(i,j) = 1
如果I ~= j
,成本(i,j) = 0
如果I = j
.
例子:'Cost',[0 1 2;10 0 2;2 2 0]
数据类型:双
|单
|结构体
LossFun
- - - - - -损失函数“classiferror”
(默认)|“binodeviance”
|“指数”
|“枢纽”
|函数处理损失函数,指定为逗号分隔的对,由“LossFun”
而且“classiferror”
,“binodeviance”
,“指数”
,“枢纽”
,或函数句柄。
下表列出了可用的损耗函数。
价值 | 损失函数 |
---|---|
“binodeviance” |
二项异常 |
“classiferror” |
分类错误 |
“指数” |
指数损失 |
“枢纽” |
铰链的损失 |
使用函数句柄表示法指定自己的函数。
假设n = size(X,1)
是样本量又有多少K
独特的类。你的函数必须有签名lossvalue =
,地点:lossfun
(C、S、W、成本)
输出参数lossvalue
是一个标量。
lossfun
是函数的名称。
C
是一个n
——- - - - - -K
逻辑矩阵,用行表示对应的观察结果属于哪一类。中的类顺序对应一会
名称-值对参数。
构造C
通过设置C(p,q) = 1
如果观察p
在课堂上问
,为每一行。设置row的所有其他元素p
来0
.
年代
是一个n
——- - - - - -K
分类分数的数字矩阵。中的类顺序对应一会
名称-值对参数。年代
是分类分数的矩阵。
W
是一个n
-by-1观察权重的数值向量。如果你通过了W
,软件将求和的权重归一化1
.
成本
是一个K
——- - - - - -K
分类成本的数字矩阵。例如,成本=个数(K) -眼数(K)
的成本。0
为了正确的分类和成本1
误分类。
使用以下命令指定函数“LossFun”@
.lossfun
选项
- - - - - -并行计算选项[]
(默认)|返回的结构数组statset
并行计算选项,指定为逗号分隔的对,由“选项”
和返回的结构数组statset
.这些选项需要“并行计算工具箱”。testckfold
使用“流”
,“UseParallel”
,“UseSubtreams”
字段。
下表总结了可用的选项。
选项 | 描述 |
---|---|
“流” |
一个
在这种情况下,使用与并行池相同大小的单元格数组。如果一个并行池没有打开,那么软件会尝试打开一个并行池(取决于您的首选项),然后 |
“UseParallel” |
如果您有“并行计算工具箱”,那么您可以通过设置来调用工作人员池“UseParallel”,真的 . |
“UseSubstreams” |
设置为真正的 通过指定的流进行并行计算“流” .默认是假 .例如,set流 到允许子流的类型,例如“mlfg6331_64” 或“mrg32k3a” . |
例子:“选项”,statset (UseParallel,真的)
数据类型:结构体
之前
- - - - - -先验概率“经验”
(默认)|“统一”
|数值向量|结构每个类的先验概率,指定为逗号分隔的对,由“之前”
而且“经验”
,“统一”
数字向量或结构。
下表总结了设置先验概率的可用选项。
价值 | 描述 |
---|---|
“经验” |
类的先验概率是类的相对频率Y . |
“统一” |
所有类的先验概率都等于1/K,在那里K是类的数量。 |
数值向量 | 每个元素都是一个类先验概率。方法指定顺序一会 名称-值对参数。该软件将元素规范化,使它们的和为1 . |
结构 | 一个结构
|
例子:“之前”,结构(“类名”,{{“setosa”、“癣”}},“ClassProbs”,[1,2])
数据类型:字符
|字符串
|单
|双
|结构体
详细的
- - - - - -冗长的水平0
(默认)|1
|2
冗长级别,指定为逗号分隔的对,由“详细”
而且0
,1
,或2
.详细的
控制在每个交叉验证折叠训练期间,软件在命令窗口中显示的诊断信息的数量。
此表总结了可用的冗长级别选项。
价值 | 描述 |
---|---|
0 |
软件不显示诊断信息。 |
1 |
软件每次执行新的交叉验证运行时都会显示诊断消息。 |
2 |
该软件每次执行新的交叉验证运行时,以及每次在特定折叠上进行训练时,都会显示诊断信息。 |
例子:“详细”,1
数据类型:双
|单
权重
- - - - - -观察权重(大小(X, 1), 1)
(默认)|数值向量注:
testckfold
将训练好的分类模型作为模板。因此,它忽略了模型中所有拟合参数。也就是说,testckfold
只使用模型和预测器数据中指定的选项进行交叉验证。
重复交叉验证检验依赖于检验统计量在原假设下渐近正态的假设。高度不平衡的成本矩阵(例如,成本
=[0 100;1 0]
)和高度离散的响应分布(即大多数观测值都在少数类中)可能违反渐近正态性假设。对于成本敏感的测试,使用testcholdout
.
南
年代,<定义>
值,空字符向量(”
),空字符串(""
),< >失踪
值表示丢失的数据值。
h
-假设检验结果1
|0
p
- - - - - -p价值p-value,作为间隔[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或顺序特征选择(参见主成分分析
而且sequentialfs
).
如果这两个表述都是正确的,那么您可以省略提供Y
.
因此,testckfold
使用表中的公共响应变量。
执行成本不敏感特性选择的一种方法是:
创建一个描述第一个分类模型的分类模型模板(C1
).
创建一个描述第二个分类模型的分类模型模板(C2
).
指定两个预测器数据集。例如,指定X1
作为完整的预测集和X2
作为一个约简集。
输入testckfold (C1, C2, X1, X2, Y,“另类”、“少”)
.如果testckfold
返回1
,那么就有足够的证据表明,使用较少预测因子的分类模型比使用完整预测因子集的模型表现得更好。
或者,您可以评估两个模型的准确性之间是否存在显著差异。要执行此评估,请删除“替代”、“少”
步骤4中的规范。testckfold
进行双面测试,并且H = 0
表明没有足够的证据表明两个模型的准确性存在差异。
该试验适用于误分类率分类损失,但您可以指定其他损失函数(参见LossFun
).关键假设是,在双边零假设下,估计的分类损失是独立的,正态分布,均值为0,共方差有限。除了误分类率之外的分类损失可能违反这一假设。
高度离散的数据、不平衡的类和高度不平衡的代价矩阵会违反分类损失差异的正态性假设。
如果您指定进行10 × 10重复交叉验证t测试使用“测试”、“10 x10t
,然后testckfold
使用10个自由度t求出分布的临界区域,并进行估计p价值。有关更多细节,请参见[2]而且[3].
使用testcholdout
:
适用于样本量较大的测试集
实现McNemar检验的变体来比较两种分类模型的准确性
对于使用卡方检验或似然比检验的成本敏感检验。卡方检验使用quadprog
(优化工具箱),这需要一个优化工具箱™许可证。
[1] Alpaydin, E. <比较监督分类学习算法的组合5 × 2 CV F检验>。神经计算1999年第11卷第8期,第1885-1992页。
bouckaer[2]。R.《在基于校准测试的两种学习算法之间的选择》。机器学习国际会议, 2003,第51-58页。
[3]布克尔特和e弗兰克。评估比较学习算法的显著性检验的可复制性。知识发现与数据挖掘研究进展,第八届亚太会议, 2004, pp. 3-12。
[4] Dietterich, T. <比较监督分类学习算法的近似统计检验>。神经计算, 1998年第10卷第7期,1895-1923页。
[5]哈斯蒂,T., R.蒂布希拉尼,J.弗里德曼。统计学习的要素纽约:施普林格,2008。
若要并行运行,请指定“选项”
参数中的名称-值参数,并设置“UseParallel”
选项结构的字段真正的
使用statset
.
例如:“选项”,statset (UseParallel,真的)
有关并行计算的更多信息,请参见运行MATLAB函数与自动并行支持金宝app(并行计算工具箱).
testcholdout
|templateECOC
|templateEnsemble
|templateDiscriminant
|templateTree
|templateSVM
|templateNaiveBayes
|templateKNN
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。