曲调RobustBoost
的RobustBoost
算法可以在训练数据存在噪声的情况下进行良好的分类预测。然而,默认RobustBoost
参数可以产生一个不能很好预测的集合。这个例子展示了一种调优参数以获得更好预测精度的方法。
生成带有标签噪声的数据。这个例子有20个均匀随机数每个观察,并将观察分类为1
如果前五个数字的和超过2.5(因此大于平均值),和0
否则:
rng (0,“旋风”)%的再现性Xtrain =兰德(2000年,20);Ytrain = sum(Xtrain(:,1:5),2) > 2.5;
为了添加噪声,随机切换10%的分类:
idx = randsample(2000、200);Ytrain (idx) = ~ Ytrain (idx);
创造一个合奏AdaBoostM1
比较的目的:
ada = fitcensemble (Xtrain Ytrain,“方法”,“AdaBoostM1”,...“NumLearningCycles”, 300,“学习者”,“树”,“LearnRate”, 0.1);
创造一个合奏RobustBoost
.因为数据有10%的错误分类,也许15%的错误目标是合理的。
rb1 = fitcensemble (Xtrain Ytrain,“方法”,“RobustBoost”,...“NumLearningCycles”, 300,“学习者”,“树”,“RobustErrorGoal”, 0.15,...“RobustMaxMargin”1);
请注意,如果您将错误目标设置为足够高的值,那么软件将返回一个错误。
创建一个误差目标非常乐观的集合,0.01
:
而已= fitcensemble (Xtrain Ytrain,“方法”,“RobustBoost”,...“NumLearningCycles”, 300,“学习者”,“树”,“RobustErrorGoal”, 0.01);
比较三种系综的替换误差:
图绘制(resubLoss (rb1“模式”,“累积”));持有在情节(resubLoss而已,“模式”,“累积”),“r——”);情节(resubLoss (ada,“模式”,“累积”),“g”。);持有从;包含(树木的数量);ylabel (“Resubstitution错误”);传奇(“ErrorGoal = 0.15”,“ErrorGoal = 0.01”,...“AdaBoostM1”,“位置”,“不”);
所有的RobustBoost
曲线显示回代误差较AdaBoostM1
曲线。的误差目标0.01
曲线显示在大部分范围内的最低再替换误差。
Xtest =兰德(2000年,20);Ytest = sum(Xtest(:,1:5),2) > 2.5;idx = randsample(2000、200);欧美(idx) = ~欧美(idx);图;情节(损失(rb1 Xtest,欧美,“模式”,“累积”));持有在情节(损失(Xtest而已,欧美,“模式”,“累积”),“r——”);情节(损失(ada Xtest,欧美,“模式”,“累积”),“g”。);持有从;包含(树木的数量);ylabel (测试错误的);传奇(“ErrorGoal = 0.15”,“ErrorGoal = 0.01”,...“AdaBoostM1”,“位置”,“不”);
误差目标0.15的误差曲线在所绘制的范围内最低(最好)。AdaBoostM1
具有比误差目标0.15曲线更高的误差。在大部分的绘图范围内,过于乐观的误差目标0.01的曲线仍然比其他算法高(更差)。