机器学习实战——集成学习 Adaboost 算法
1 模型介绍
1.1 集成学习概述
集成学习通过构建并结合多个学习器来完成学习任务。对于训练集数据,我们通过训练若干个个体学习器,通过一定的结合策略,最终可以形成一个强学习器,以达到博采众长的目的。即如下图:
集成学习需要解决两个主要的问题:
1 个体学习器如何获得;
2 如何选择个体学习器的结合策略。
目前个体学习器的选择有两种方式,第一种是所有的个体学习器都是一个种类的,或者说是同质的,比如都是决策树、神经网络;第二种是所有的个体学习器不全是一个种类的,或者说是异质的。比如个体学习器包含有支持向量机、逻辑回归、朴素贝叶斯。
目前,同质个体学习器的应用是最广泛的,一般我们常说的集成学习的方法都是指同质个体学习器,在同质个体学习器中使用最多的模型是 CART 决策树和神经网络。同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是 boosting 系列算法,比较著名的算法主要有 AdaBoost 算法和梯度提升树(GBDT);第二个是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是 bagging 和随机森林(Random Forest)系列算法。 boosting 与 bagging 的算法原理可以参考这篇文章。
1.2 集成学习的组合策略
1.2.1 平均法
对数值型输出 G i ( x ) G_i(x) Gi(x) 来说,最常见的结合策略是平均法,即输出 K K K 个训练器的平均值。
1 简单平均法
G ( x ) = 1 K ∑ i = 1 K G i ( x ) G(x)=\dfrac{1}{K}\sum_{i=1}^KG_i(x) G(x)=K1i=1∑KGi(x)
2 加权平均法
G ( x ) = ∑ i = 1 K w i G i ( x ) G(x)=\sum_{i=1}^Kw_iG_i(x) G(x)=i=1∑KwiGi(x)
其中 w i w_i wi 是个体学习器 G i ( x ) G_i(x) Gi(x) 的权重,通常有 w i ≥ 0 , ∑ i = 1 T w i = 1 w_i \geq0,\sum_{i=1}^T{w_i}=1 wi≥0,∑i=1Twi=1
1.2.2 投票法
分类问题常用投票法的结合策略,假设预测类别为 { c 1 , c 2 , . . . , c K } \{c_1,c_2,...,c_K\} {
c1,c2,...,cK},对于任意一个预测样本 x x x, K K K 个弱分类器的预测结果为 { G 1 ( x ) , G 2 ( x ) , . . . , G K ( x ) } \{G_1(x),G_2(x),...,G_K(x)\} {
G1(x),G2(x),...,GK(x)}。
1 绝对多数投票法
常说的票数过半,即不止要求 K K K 个弱分类器预测的类别票数最高,还要求票数过半。否则,拒绝预测。
2 相对多数投票法
少数服从多数原则,即选择 K K K 个弱分类器预测的类别票数最高的预测类别,如果不止一个类别获得最高票,则随机选择一个做最终类别。
3 加权投票法
与加权平均法一样,每个弱学习器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。
1.2.3 学习法
当训练数据较多时,一种更为强大的结合策略是使用"学习法",即通过另一个学习器来进行结合。其中比较著名的方法是 Stacking,即将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果,我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器。在该方法下将弱学习器称为初级学习器,将用于结合的学习器称为次级学习器。
1.3 Adaboost 算法的介绍
Adaboost 算法可以理解成模型为加法模型、损失函数为指数函数、学习算法为前向分步学习算法的分类问题。即需要解决如下 3 个问题:
- 如何计算学习误差率
- 如何得到弱学习器权重系数
- 如何更新样本权重
假设训练样本为:
T = { { x 1 , y 1 } , { x 2 , y 2 } , . . . , { x m , y m } } T=\{\{x_1,y_1\},\{x_2,y_2\},...,\{x_m,y_m\}\} T={ { x1,y1},{ x2,y2},...,{ xm,ym}}
Adaboost 算法的加法模型可以表示成如下形式:
f ( x ) = ∑ k = 1 K α k G k ( x ) f(x)=\sum_{k=1}^K\alpha_kG_k(x) f(x)=k=1∑KαkGk(x)
则最终的强分类器可以如下:
G ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ k = 1 K α k G k ( x ) ) G(x)=sign(f(x))=sign(\sum_{k=1}^K\alpha_kG_k(x)) G(x)=sign(f(x))=sign(k=1∑KαkGk(x))
若第 k k k 个弱学习器的输出权重为
D ( k ) = { w k 1 , w k 2 , . . . , w k m } D(k)=\{w_{k1},w_{k2},...,w_{km}\} D(k)={ wk1,wk2,...,wkm}
对初始的弱分类器则有: w 1 i = 1 m , i = 1 , 2 , . . . , m w_{1i}=\frac{1}{m},i=1,2,...,m w1i=m1,i=1,2,...,m 。
由于多元分类是二元分类问题的推广,接下来以二元分类为例进行说明,输出为 { 1 , − 1 } \{1,-1\} { 1,−1},则第 k k k 个弱分类器