AdaBoost弱学习器的错误率总是大于0.5?

数据挖掘 机器学习 Python 决策树 助推
2022-02-12 20:11:01

据我了解,AdaBoost 的弱学习者永远不会产生 > 0.5 的错误率

在训练一个之后,我只收到高于 0.5 的错误率。这怎么可能呢?AdaBoost 树仍然给出了很好的结果,但是所有学习者的权重都应该为零,所以它应该失败。树也从迭代到迭代变得更糟

是否有可能我的错误率阈值改为 0.9(准确度 0.1),因为我有 10 个课程并且文献主要集中在二进制案例上?

from sklearn.ensemble import AdaBoostClassifier

adaboost_tree =  AdaBoostClassifier(
        DecisionTreeClassifier(max_depth=max_d),
        n_estimators=estimators,
        learning_rate=1, algorithm='SAMME')
adaboost_tree.fit(data_train, labels_train)

在此处输入图像描述

1个回答

据我了解,AdaBoost 的弱学习器永远不会产生 > 0.5 的错误率

这仅适用于二元分类问题。最简单的分类器会选择多数类,确保准确率始终 >= 0.5 对于个类的问题,弱学习器的最差错误率将是NN1N

是否有可能我的错误率阈值改为 0.9(准确度 0.1),因为我有 10 个课程并且文献主要关注二元案例?

是的,这完全正确。你的弱学习器在最坏的情况下会有 0.9 的错误率。不出所料,你的大多数学习者的错误率都比随机猜测好,这解释了你的集成的良好性能。

编辑:

树也从迭代到迭代变得更糟

这是 boosting 算法的一个共同特征。每次迭代,训练样本都会被重新加权,以使先前迭代中的错误更加重要。最终结果是,后期迭代中的学习者专门用于对早期学习者出错的示例进行分类。由于后来的学习者专门针对一些难以分类的示例,因此他们在整个数据集上的表现会更差。