AdaBoost学习算法用于提高简单学习算法的分类性能。
它通过组合一组弱分类函数(具有较高分类错误的弱分类器)来形成更强的分类器。最后的强分类器的预测结果是:采用弱分类器的预测值乘以当前分类器的权重的加权组合的形式。
AdaBoost方法的自适应在于:前一个分类器分错的样本会被用来训练下一个分类器。
AdaBoost方法对于噪声数据和异常数据很敏感,但在一些问题中,AdaBoost方法相对于大多数其它学习算法而言,不会很容易出现过拟合现象。AdaBoost方法中使用的分类器可能很弱(比如出现很大错误率),但只要它的分类效果比随机好一点(比如两类问题分类错误率略小于0.5),就能够改善最终得到的模型。而错误率高于随机分类器的弱分类器也是有用的,因为在最终得到的多个分类器的线性组合中,可以给它们赋予负系数,同样也能提升分类效果。
与Boosting的区别:
Boosting 是一种将弱分类器转化为强分类器的方法统称,而AdaBoost是其中的一种,采用了exponential loss function(其实就是用指数的权重),根据不同的loss function还可以有其他算法,比如L2Boosting, logitboost等。
实现思路:
AdaBoost方法是一种迭代算法,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率。每一个训练样本都被赋予一个权重,表明它被某个分类器选入训练集的概率。如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它被选中的概率就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。
具体过程:
优点分析:
Adaboost作为分类器时,分类精度很高
在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。
作为简单的二元分类器时,构造简单,结果可理解。
不容易发生过拟合
主要缺点:
对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。