我正在测试我使用 Matlab 的fitensemble
方法构建的增强树模型。
X = rand(100, 10);
Y = X(:, end)>.5;
boosted_tree = fitensemble(X, Y, 'AdaBoostM1', 100,'Tree');
predicted_Y = predict(boosted_tree, X);
我只是想在几个简单的例子上运行它,所以我提出了一个简单的例子,一个特征是 >.5 用于正例,<.5 用于负例。我收到警告
Warning: AdaBoostM1 exits because classification error = 0
这让我想,太好了,它找出了相关的特征,并且所有的训练样本都被正确分类了。
但是如果我看一下准确性
sum(predicted_Y==Y)/length(Y)
结果是 0.5,因为分类器只是将正类分配给所有示例!
为什么Matlab认为分类误差= 0,而它显然不是0?我相信这个例子应该很容易学习。有没有办法防止此错误并使用此方法获得正确的结果?
编辑:上面的代码应该重现警告。