Adaboost 是集成学习中的一类,弱分类器之间存在强依赖性,必须串联。
标准Adaboost只能用于二分类
主要关注降低偏差: 原因:(具体原因可以参考bagging与boosting两种集成模型的偏差bias以及方差variance 的理解)
- boosting 中的每个模型都是弱模型,偏差高(在训练集上准确度低),方差低(防止过拟合能力强)
- 平均法了降低偏差。
- boosting 的核心思想就是,贪心法最小化损失函数,显然能降低偏差。
- 但是,通常模型间相关性很强,所以不能降低方差。
- 对于欠拟合的模型,通常偏差大,通过boosting进行修正。
模型的偏差:模型对训练集的拟合程度
模型的方差:模型在不同测试集合上的表现的效果差异
本文参考文章
算法分析
该算法其实是一个简单的弱分类算法提升过程,这个过程通过不断的训练,可以提高对数据的分类能 Adaboost
力。整个过程如下所示:
1. 先通过对N个训练样本的学习得到第一个弱分类器;
2. 将分错的样本和其他的新数据一起构成一个新的N个的训练样本,通过对这个样本的学习得到第二个弱分类器 ;
3. 将1和2都分错了的样本加上其他的新样本构成另一个新的N个的训练样本,通过对这个样本的学习得到第三个弱分类器;
4. 最终经过提升的强分类器 。即某个数据被分为哪一类要通过 , ……的多数表决。
Adaboost的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。
具体说来,整个Adaboost 迭代算法就3步:
1、初始化训练数据的权值分布。 如果有N个样本,则每一个训练样本最开始时都被赋予相同的权重:1/N。2、训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权重就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。然后,权重更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
备注:对于无法接受带权样本的基学习算法,可以通过重采样法来处理(即,在每一轮学习中,更具样本分布对训练集重新进行采样,再用重采样得到的样本继续进行下一轮的训练)
3、将各个训练得到的弱分类器组合成强分类器 。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。