数据挖掘十大经典算法(7) AdaBoost
AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,是一种机器学习方法,由Yoav Freund和Robert Schapire提出。
AdaBoost方法的自适应在于:前一个分类器分错的样本会被用来训练下一个分类器。AdaBoost方法对于噪声数据和异常数据很敏感。但在一些问题中,AdaBoost方法相对于大多数其它学习算法而言,不会很容易出现过拟合现象。
AdaBoost方法中使用的分类器可能很弱(比如出现很大错误率),但只要它的分类效果比随机好一点(比如两类问题分类错误率略小于0.5),就能够改善最终得到的模型。而错误率高于随机分类器的弱分类器也是有用的,因为在最终得到的多个分类器的线性组合中,可以给它们赋予负系数,同样也能提升分类效果。
如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它被选中的概率就被降低;
相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。通过这样的方式,AdaBoost方法能“聚焦于”那些较难分(更富信息)的样本上。
在具体实现上,最初令每个样本的权重都相等,对于第k次迭代操作,我们就根据这些权重来选取样本点,进而训练分类器Ck。然后就根据这个分类器,来提高被它分错的的样本的权重,并降低被正确分类的样本权重。然后,权重更新过的样本集被用于训练下一个分类器Ck[2]。整个训练过程如此迭代地进行下去。
Adaboost算法的具体步骤如下:
- 给定训练样本集 ,其中 分别对应于正例样本和负例样本; 为训练的最大循环次数;
- 初始化样本权重 ,即为训练样本的初始概率分布;
- 第一次迭代:
(1) 训练样本的概率分布 下,训练弱分类器:
(2) 计算弱分类器的错误率:
(3) 选取 ,使得 最小
(4) 更新样本权重:
(5) 最终得到的强分类器:
Adaboost算法是经过调整的Boosting算法,其能够对弱学习得到的弱分类器的错误进行适应 性调整。上述算法中迭代了次的主循环,每一次循环根据当前的权重分布对样本x定一个分 布P,然后对这个分布下的样本使用若学习算法得到一个错误率为的弱分类器 ,对于这个算
法定义的弱学习算法,对所有的 ,都有,而这个错误率的上限并不需要事先知道,实际上。 每一次迭代,都要对权重进行更新。更新的规则是:减小弱分类器分类效果较好的数据的概 率,增大弱分类器分类效果较差的数据的概率。最终的分类器是个弱分类器的加权平均。