机器学习之AdaBoost
该算法每次迭代改变的是样本的权重(re-weighting),如果无法接受带权样本的基学习算法,则可进行重采样法(re-sampling),获得重启动机会以避免训练过程过早停止;是一个将弱学习器提升的过程,通过不断的训练可以提高对数据的预测能力。
AdaBoost的优点:
(1)可以处理连续值和离散值;
(2)可以将不同的分类算法作为基分类器;
(3)解释性强,结构简单;
(4)泛化错误率低(Margin Theory以及弱学习器通常比较简单,不是很容易陷入过拟合);
(5)无需调整超参。
AdaBoost的缺点:
(1)对训练样本集中的异常点本敏感,异常样本可能会在迭代过程中获得较高的权重值,最终影响模型效果;
(2)迭代次数(弱学习器个数)不好确定。
1、AdaBoost算法的运行过程如下
(1)为训练集中每一个样本赋予一个权重值,这些权重值初始化为相等的值,所有权重总和为1。
(2)在训练集上训练出一个弱学习器,并计算其错误率。
(3)根据分类结果调整每个训练样本的权重值:分错的样本权重增大,分对的样本权重减小。
(4)使用更新过权重值的训练集训练下一个弱学习器
(5)如此迭代直至达到停止条件
(6)将每次训练得到的弱学习器线性组合组合成为一个最终的强学习器,其中分类误差率较小的弱学习器权值较大,分类误差率较大的弱学习器权值较小。
2、Adaboost算法构建及公式推导
(1)训练数据集 {(x1,y1),(x2,y2),...,(xm,ym)}, yi ϵ{-1,+1}
(2)初始化训练数据权重分布
,i=1,2,...,m
(3)进行迭代t=1,2,...,T,即一共训练T个弱学习器
(a)使用具有权值分布Dt的训练数据集进行学习,训练出弱学习器ht:x→{-1,+1}
(b)根据弱学习器各自的权重αt组合各个弱学习器
第t-1轮的弱学习器的组合:
第t轮的弱学习器的组合:
(c)第t轮得到的Ht的错误率为(由指数函数的性质可得AdaBoost的误差上界,且为了书写方便省略除以m)
其中I(·)是示性函数,事件发生取1,不发生取0
(d)计算ht在最终的强学习器中所占的权重αt
在训练的过程中,为了求错误率/损失函数的最小值,对其进行计算:
令loss对αt求导,导数等于零,可以求得公式:
倒数第二步是由εt的定义:
(4)更新训练集样本的权值分布D(t+1)
分对的样本权重减小,分错的样本权重增加:
其中Zt是归一化因子,为了使样本的概率分布总和为1。
(5)得到最终的强学习器,是在线性组合的基础上进行Sign函数转换
3、AdaBoost scikit-learn相关参数