【发布时间】:2015-04-15 01:40:06
【问题描述】:
我正在测试使用 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?我相信这个例子应该很容易学习。有没有办法防止这个错误并使用这种方法得到正确的结果?
编辑:上面的代码应该会重现警告。
【问题讨论】: