目前集成学习(Ensemble Learning) 分为两类:
- 个体学习器间存在强依赖关系、必须串行化生成的序列化方法:Boosting
- 个体学习器间不存在强依赖关系,可同时生成的并行化方法:Bagging 和 随机森林
这里先来讲下代表Boosting家族的AdaBoost。
Boosting 是一族可以将弱学习器提升为强学习器的算法。
算法机制:
从初始训练集训练一个基学习器(Base Learner) ,根据基学习器的表现对训练样本分布进行调整,对做错的样本赋予更大的权重,基于调整后的样本分布训练下一个基学习器,直到基学习器的数目达到指定的值 (T),,同时进行学习器权重调整。
1. AdaBoost分类算法流程
假设我们有:
-
训练集 (D={(x_1, y_1), (x_2, y_2), cdots, (x_m, y_m)})
-
训练轮数(学习器数目): (T)
-
基学习器 (h_t(x), t={1,2,3,cdots,T}) ,对应于学习算法
-
基学习器权重 (alpha_t)
-
样本分布 (mathcal D), 训练集在第 (t) 个分类器上的样本权重为:
[
otag
mathcal{D}_t= (w_{t1},w_{t2},cdots, w_{tm})
]
针对以上条件,AdaBoost的算法流程如下:
[egin{align}
&mathcal D_1 =1/m\
& ext{for }t = 1,2, cdots,T ext{ do}
otag \
& e_t = P(h_t(x_i)
eq y_i) = sum_{i=1}^mw_{ti}I(h_t(x_i)
eq y_i)\
& alpha_t = frac{1}{2}ln(frac{1-e_t}{e_t})\
& ext{update distribution }D_{t+1}:
otag \
& w_{t+1,i} = frac{w_{t,i}}{Z_t} imesexp(-alpha_ty_ih_t(x_i)) ext{ for } i=1,2,cdots,m\
& ext{end for}
otag
end{align}
]
根据这个算法,我们一步步讲AdaBoost的流程。
(1) 初始化权重
对于每个样本,我们令其的初始化权重均为 (frac{1}{m}) 。
对于指定的基学习器数目 (T),我们知道Boosting 是串行化训练,每一个基学习器都是基于上一个已训练的基学习器继续训练得到的,所以接下来要做 (T) 个循环
(2) 获得集合分类误差
以二分类 ({+1,-1})为例(多分类是二分类的推广),第 (t) 个基学习器在训练集上的加权误差即如公式(2)所示。
(3) 基学习器获得权重系数
由公式(3)可以得到当前基学习器的权重系数。
由公式可以知道,误差率越高,则当前基学习器的权重系数越小。至于为什么使用这个系数公式,我们放到Adaboost的损失函数优化的时候再讲。
(4) 更新样本权重
单独把公式(4)拿出来讲:
[egin{align}
w_{t+1,i} = frac{w_{t,i}}{Z_t} imesexp(-alpha_ty_ih_t(x_i))
end{align}
]
其中 (Z_t) 是归一化因子:
[egin{align}
Z_t = sum_{i=1}^mw_{t,i} imes exp(-alpha_ty_ih_t(x_i))
end{align}
]
可以看到,如果第 (i) 个样本分类错误,则 有:
[egin{align}
y_ih_t(x_i)<0 & Rightarrow exp(-alpha_i y_ih_t(x_i))>1\
&Rightarrow w_{t+1,i}>w_{t,i}
end{align}
]
则错误分类的样本会在下一个基学习器的训练中,在数据中占有更高的比重。具体为什么用这个权重更新公式,还是放到损失函数优化的时候讲。
(5) 最终的分类策略
最终的强分类器采用了加权平均:
[egin{align}
H(x)= ext{sign}(sum_{t=1}^Talpha_th_t(x))
end{align}
]
2. AdaBoost损失函数
AdaBoost使用指数损失函数:
[egin{align}
ell _{exp}(H|mathcal D)=sum_{i=1}^mexp (-y_iH_T(x))
end{align}
]
通过最小化这个损失函数,我们可以推导出基学习器的权重系数更新策略和样本权重更新策略。至于为什么最小化指数函数误差就可以最小化分类误差,将在最后推导。
基学习器权重更新策略推导
我们知道,(t) 轮训练获得的基学习器是由上一个轮的学习器所得,即有:
[egin{align}
H_t(x)=H_{t-1}(x)+alpha_th_t(x)
end{align}
]
最小化 (t) 轮学习后得到的强分类器损失:
[egin{align}
(alpha_t, h_t(x) )=argminlimits_{alpha, h}sum_{i=1}^mexp(-y_i(H_{t-1}(x)+alpha_th_t(x)))
end{align}
]
我们令 (w_{ti}’=exp(-y_iH_{t-1}(x))),显然,它的值不依赖于 $alpha_t $ 和 (h_t(x)), 仅仅依赖于 (H_{t-1}(x)), 随着迭代改变。
带回式子(12),得
[egin{align}
(alpha_t, h_t(x) )=argminlimits_{alpha, h}sum_{i=1}^mw_{ti}'exp(-y_ialpha_th_t(x))
end{align}
]
为了极小化这个损失函数,我们需要极小化第 (t) 个分类器误差。即:
[egin{align}
h_t(x)=argmin limits_{h}sum_{i=1}^mw_{ti}'I(y_i
eq h(x_i))
end{align}
]
将(14)带入损失函数:
[egin{align}
otag sum_{i=1}^mw_{ti}'exp(-y_ialpha_th_t(x))&=sum_{y_i=h_t(x_i)}w_{ti}'e^{-alpha}+sum_{y_i
eq h_t(x_i)}w_{ti}'e^alpha\
&=sum_{i=1}^mw_{ti}'e^{-alpha}-sum_{y_i
eq h_t(x_i)}w_{ti}'e^{-alpha}+sum_{y_i
eq h_t(x_i)}w_{ti}'e^alpha\
otag &=(e^alpha-e^{-alpha})sum_{y_i
eq h_t(x_i)}w_{ti}'+e^{-alpha}sum_{i=1}^m w_{ti}'
end{align}
]
对于(15)求偏导,令其为0,得:
[egin{align}
(e^alpha+e^{-alpha})sum_{y_i
eq h_t(x_i)}w_{ti}'-e^{-alpha}sum_{i=1}^m w_{ti}'=0
end{align}
]
在基学习器的迭代中,每轮的分类误差为:
[egin{align}
e_t = sum_i^m w_{ti}I(y_i
eq h_t(x_i))=sum_{y_i
eq h_t(x_i)}w_{ij}
end{align}
]
注意到 :
[egin{align}
e_t = frac{ sum_i^m w_{ti}I(y_i
eq h_t(x_i))}{sum_{i=1}^m w_{ti}'}
end{align}
]
则,式(16)变为:
[egin{align}
(e^{alpha_t}+e^{-alpha_t})e_t - e^{-alpha_t}=0
end{align}
]
解得:
[egin{align}
alpha_t = frac{1}{2}ln left( frac{1-e_t}{e_t}
ight)
end{align}
]
样本权重更新策略推导
根据上一节自定义的 (w_{ti}'),我们知道它与 权重参数只差一个归一化因子 (Z_t)。有:
[egin{align}
w_{t+1,i}'&=exp (-y_iH_t(x))\
&=exp(-y_i(H_{t-1}(x)+alpha_th_t(x)))\
&=exp(-y_iH_{t-1}(x)·exp(-y_ialpha_th_t(x))\
&=w_{t,i}'·exp(-y_ialpha_th_t(x))
end{align}
]
最小化指数函数误差=最小化分类误差?
最后讲下为什么最小化指数函数误差=最小化分类误差。
回顾一下指数函数误差。
[egin{align}
ell _{exp}(H|mathcal D)=sum_{i=1}^mexp (-y_iH_T(x))
end{align}
]
为了最小化误差,我们对 (H(x))求偏导:
[
abla H(x)=e^{H(x)}P(y=-1|x)-e^{-H(x)}P(y=+1|x)
]
令 (
abla H(x)=0), 解得:
[egin{align}
H(x)&=frac{1}{2}lnfrac{P(y=+1|x)}{P(y=-1|x)}
end{align}
]
则最终强分类器:
[egin{align}
ext{sign}(H(x))&= ext{sign}left(frac{1}{2}lnfrac{P(y=+1|x)}{P(y=-1|x)}
ight)\
&=mathop{ ext{arg max}} limits_{yin{+1,-1}}P(y|x)
end{align}
]
这意味着最终强分类器达到了贝叶斯最优错误率。换言之,若指数函数最小化,则分类错误率也最小化。
参考资料