集成学习
什么是集成学习?
集成学习就是将多个学习器通过各类方法集成起来,从而获得更好的学习效果的一种学习方式。
一般来说,集成学习分为两种
- 同质集成
该集成中仅仅包含同种类型的学习器 - 异质继承
该集成中包含不同类型的学习器
现在一般都使用同质集成的方式,常用的方法又可以分为两类
- 序列化方法
个体学习器之间存在强依赖关系,必须串行生成,代表算法有Boosting - 并行化方法
个体学习器之间不存在强依赖关系,可以同时生成,代表算法有Bagging和Random Forest
Boosting
这里主要讲Adaboost,所以先简单说一下Boosting
在前文中提过,boosting属于序列化方法,及各个学习器之间存在强依赖关系,需要串行生成。具体的生成流程可以看下图
- D ( i ) D(i) D(i) 是为了让之前普通学习器中分类错误的样本在下一个学习器中多受重视
- m m m 为样本数量
- T T T 为提前设定的普通学习器数量,当训练到第 T T T 个学习器时就停止训练
那么从图中可以看出,一个完整的Boosting学习过程需要解决4个问题
- l o s s loss loss 的计算方式
- α \alpha α 的获取方式
- D D D 的更新方式
- 合并策略的选择
接下来将详细讲述Adaboost针对以上四个问题的解决方法。
Adaboost
符号&参数&其他需要提前说明的东西
符号 | 详细 | 表示 |
---|---|---|
T T T | 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) | 训练集 |
m m m | - | 样本数量 |
D ( k ) D(k) D(k) | D ( k ) = ( w k 1 , w k 2 , . . . , w k m ) D(k)=(w_{k_1}, w_{k_2}, ..., w_{k_m}) D(k)=(wk1,wk2,...,wkm) | 第 k k k个学习器对应的样本权重 |
w k i w_{k_i} wki | w 1 i = 1 m w_{1_i} = \frac{1}{m} w1i=m1 | 第 i i i个样本在第 k k k个学习器中对应的权重,初始化时大家权重相同 |
l o s s ( k ) loss(k) loss(k) | - | 第 k k k个学习器的加权误差 |
α k \alpha_k αk | - | 第 k k k个学习器的权重系数 |
Z k Z_k Zk | - | 规范化因子 |
G k ( x ) G_k(x) Gk(x) | - | 第 k k k个普通学习器 |
K K K | - | 一共有 K K K 个普通学习器 |
f ( x ) f(x) f(x) | - | 总学习器 |
Adaboost解决分类问题
这里以二分类为例,那我们需要的输出就是 { − 1 , 1 } \{-1, 1\} {
−1,1}
先把最后的参数结果列出来
对于第 k k k 个分类器 G k ( x ) G_k(x) Gk(x) 在训练集 T T T 上的参数
- 加权误差 l o s s ( k ) loss(k) loss(k)
l o s s ( k ) = P ( G k ( x i ) ≠ y i ) = ∑ i = 1 m w k , i I ( G k ( x i ) ≠ y i ) \begin {aligned} loss(k) &= P(G_k(x_i)≠y_i) \\ &=\sum_{i=1}^m{w_{k, i}I(G_k(x_i)≠y_i)} \end {aligned} loss(k)=P(Gk(xi)=yi)=i=1∑mwk,iI(Gk(xi)=yi)
其中 I I I 是单位矩阵 - 权重系数 α k \alpha_k αk
α k = 1 2 log 1 − l o s s ( k ) l o s s ( k ) \alpha_k = \frac{1}{2}\log{\frac{1-loss(k)}{loss(k)}} αk=21logloss(k)1−loss(k)
l o s s ( k ) loss(k) loss(k) 越大,该分类器 G k ( x ) G_k(x) Gk(x) 的权重系数越小 - 样本权重 w k + 1 , i w_{k+1, i} wk+1,i
w k + 1 , i = w k , i Z k exp ( − α k y i G k ( x i ) ) Z k = ∑ i = 1 m w k , i exp ( − α k y i G k ( x i ) ) \begin {aligned} w_{k+1, i} &= \frac{w_{k, i}}{Z_k}\exp(-\alpha_ky_iG_k(x_i)) \\ Z_k&=\sum_{i=1}^m{w_{k, i}\exp(-\alpha_ky_iG_k(x_i))} \end {aligned} wk+1,iZk=Zkwk,i