Adaboost算法及其代码实现
Adaboost算法及其代码实现 算法概述 AdaBoost(adaptive boosting),即自适应提升算法。 Boosting 是一类算法的总称,这类算法的特点是通过训练若干弱分类器,然后将弱分类器组合成强分类器进行分类。 为什么要这样做呢?因为弱分类器训练起来很容易,将弱分类器集成起来,往往可以得到很好的效果。 俗话说,"三个臭皮匠,顶个诸葛亮",就是这个道理。 这类 boosting 算法的特点是各个弱分类器之间是串行训练的,当前弱分类器的训练依赖于上一轮弱分类器的训练结果。 各个弱分类器的权重是不同的,效果好的弱分类器的权重大,效果差的弱分类器的权重小。 值得注意的是,AdaBoost 不止适用于分类模型,也可以用来训练回归模型。 这需要将弱分类器替换成回归模型,并改动损失函数。 $几个概念 强学习算法 :正确率很高的学习算法; 弱学习算法 :正确率很低的学习算法,仅仅比随机猜测略好。 弱分类器 :通过弱学习算法得到的分类器, 又叫基本分类器; 强分类器 :多个弱分类器按照权值组合而成的分类器。 $提升方法专注两个问题: 1.每一轮如何改变训练数据的权值或者概率分布: Adaboost的做法是提高被分类错误的训练数据的权值,而提高被分类错误的训练数据的权值。 这样,被分类错误的训练数据会得到下一次弱学习算法的重视。 2.弱组合器如何构成一个强分类器 加权多数表决 。