测试整体质量
你不能评估一个基于业绩的预测质量的培训数据。乐团倾向于“训练过度”,这意味着他们产生过于乐观的估计他们的预测能力。这意味着的结果resubLoss
分类(resubLoss
回归)通常表示误差低于你得到新的数据。
获得一个更好的主意合奏的质量,使用这些方法之一:
评估整体在一个独立的测试集(有用当你有大量的训练数据)。
通过交叉验证评估合奏(有用当你没有大量的训练数据)。
评估整体out-of-bag数据(有用,当你创建一个袋装合奏
fitcensemble
或fitrensemble
)。
这个示例使用袋装合奏,所以可以使用这三种方法评估整体的质量。
人工数据集生成一个与20个预测因子。每个条目是一个随机数从0到1。最初的分类是 如果 和 否则。
rng (1,“旋风”)%的再现性X =兰特(2000年,20);Y =总和(X (:, 1:5), 2) > 2.5;
此外,结果添加噪声,随机切换分类的10%。
idx = randsample (2000、200);(idx) = ~ Y (idx);
独立的测试集
创建独立的训练集和测试集的数据。使用70%的数据训练集通过调用cvpartition
使用坚持
选择。
cvpart = cvpartition (Y,“坚持”,0.3);Xtrain = X(培训(cvpart):);Ytrain = Y(培训(cvpart):);Xtest = X(测试(cvpart):);欧美= Y(测试(cvpart):);
创建一个袋装从训练数据分类的200棵树。
t = templateTree (“复制”,真正的);%的再现性随机预测的选择袋= fitcensemble (Xtrain Ytrain,“方法”,“包”,“NumLearningCycles”,200,“学习者”,t)
袋= ClassificationBaggedEnsemble ResponseName:‘Y’CategoricalPredictors:[]类名:[0 1]ScoreTransform:“没有一个”NumObservations: 1400 NumTrained: 200方法:“袋子”LearnerNames:{‘树’}ReasonForTermination:“终止通常在完成请求的数量的训练周期。“FitInfo: [] FitInfoDescription:”没有“FResample: 1替换:1 UseObsForLearner: [1400 x200型逻辑]属性,方法
情节的损失(误分类)测试数据的函数在合奏训练有素的树的数量。
图绘制(损失(包,Xtest,欧美,“模式”,“累积”)包含(树木的数量)ylabel (“测试分类错误”)
交叉验证
生成一个五倍旨在袋装。
简历= fitcensemble (X, Y,“方法”,“包”,“NumLearningCycles”,200,“Kfold”5,“学习者”,t)
简历= ClassificationPartitionedEnsemble CrossValidatedModel:“袋子”PredictorNames: {1 x20的细胞}ResponseName:“Y”NumObservations: 2000 KFold: 5分区:[1 x1 cvpartition] NumTrainedPerFold:[200 200 200 200 200]一会:[0 1]ScoreTransform:“没有一个”属性,方法
检查交叉验证损失作为树木的数量的函数。
图绘制(损失(包,Xtest,欧美,“模式”,“累积”)举行在情节(kfoldLoss(简历,“模式”,“累积”),“r”。)举行从包含(树木的数量)ylabel (分类错误的)传说(“测试”,交叉验证的,“位置”,“不”)
交叉验证提供了类似的估计的独立集。
Out-of-Bag估计
生成out-of-bag损失曲线估计,它连同其他曲线。
图绘制(损失(包,Xtest,欧美,“模式”,“累积”)举行在情节(kfoldLoss(简历,“模式”,“累积”),“r”。)情节(oobLoss(包,“模式”,“累积”),“k——”)举行从包含(树木的数量)ylabel (分类错误的)传说(“测试”,交叉验证的,的包的,“位置”,“不”)
out-of-bag估计又类似的其他方法。
另请参阅
fitcensemble
|fitrensemble
|resubLoss
|resubLoss
|cvpartition
|oobLoss
|kfoldLoss
|损失