作者:Fain
博客:https://fainke.com
微信公众号:深度学习视觉
介绍
Boosting
- Boosting方法训练基分类器时采用串行的方式,各个基分类器之间有依赖。
- Boosting的基本思路是将基分类器层层叠加,每一层在训练的时候,对前一层基分类器分错的样本给予更高的权重。测试时,根据各层分类器的结果的加权得到最终的结果。即stacking
Bagging
- Bagging因为各基分类器之间无强依赖,所以可以进行串行训练。以基于决策树基分类器的随机森林为代表。
- 为了让基分类器之间相互独立,需要将数据集分为若干子集(当训练样本数量较少时,子集之间会有重叠部分)。
- Bagging更像天赋不同且单一的几个孩子在单独学习,学习的内容可以相同也可以不同。由于个体之间有差异,最终做出的判断不完全一致,每个个体单独判断,然后通过投票的方式做出最后集体的决策。即voting
理解
接下来我们将会从消除基分类器的偏差和方差的角度来理解Boosting和Bagging方法的差异。
基分类器:弱分类器。基分类器的错误。是偏差和方差两种错误之和。偏差主要是由分类器的表达能力有限导致的系统性错误,表现在训练不够收敛。方差是由分类器对样本分布过于敏感,导致在训练样本过少时,产生过拟合。
- Boosting方法是通过逐步聚焦于基分类器分错的样本,减小集成分类器的偏差。
- Bagging方法是采取分而治之的策略,通过训练样本多次采样,分别计算多个独立的基分类器,综合各个模型减小集成分类器的方差。基模型越多,整体思想越统一,不会受个别模型影响,方差越小。
基本步骤
集成学习一般可分为以下3个步骤:
- 找到误差互相独立的基分类器;
- 训练基分类器;
- 合并基分类器的结果。
合并的方式有voting和stacking两种。也可以将不同分类器的输出结果作为一个特征,使用逻辑回归作为融合模型进行最后的结果预测。
以Adaboost为例具体步骤如下:
- 确定基分类器:由于树型模型结构简单,且较易产生随机性(制作相互独立的特性),这里可以选择ID3决策树作为基分类器。当然,其它非树型分类模型也可以作为基分类器。
-
训练基分类器:假设训练集为 ⟨ x i y i ⟩ , k = 1 , … , N \left\langle x_{i} y_{i}\right\rangle, k=1, \ldots, N ⟨xiyi⟩,k=1,…,N,其中 y i ∈ { − 1 , 1 } y_{i} \in\{-1,1\} yi∈{−1,1},并且有 T T T个基分类器,则可以按照如下过程来训练基分类器。
① 初始化采样分布 D 1 ( i ) = 1 / N D_{1}(i)=1 / N D1(i)=1/N;
② 令 t = 1 , 2 , … , T t=1,2, \ldots, T t=1,2,…,T循环;
A.) 从训练集中,按照 D t D_t Dt分布,采样出子集 S t = { x i , y i } , i = 1 , … , N i S_{t}=\left\{x_{i}, y_{i}\right\}, i=1, \dots, N_{i} St={xi,yi},i=1,…,Ni;
B.) 用 S i S_i Si训练出基分类器 h i h_i hi;
C.) 计算 h i h_i hi的错误率: ε 1 = ∑ i = 1 N i I [ h i ( x i ) ≠ y i ] D i ( x i ) N t \varepsilon_{1}=\frac{\sum_{i=1}^{N_{i}} I\left[h_{i}\left(x_{i}\right) \neq y_{i}\right] D_{i}\left(x_{i}\right)}{N_{t}} ε1=Nt∑i=1NiI[hi(xi)=yi]Di(xi),其中 I [ ] I[] I[]为判别函数;
D.) 计算基分类器 h i h_i hi,权重 a i = log ( 1 − ε i ) ε i a_{i}=\log \frac{\left(1-\varepsilon_{i}\right)}{\varepsilon_{i}} ai=logεi(1−εi);
E.) 设置下一次采样
D t + 1 = { D t ( i ) 或 者 D t ( i ) ( 1 − ε t ) ε t h t ( x i ) ≠ y i D t ( i ) ε t ( 1 − ε t ) h t ( x i ) = y i D_{t+1}= \left\{\begin{array}{l} D_t(i) 或者 {D_t(i)(1-\varepsilon_t)} \over {\varepsilon_t} & h_t(x_i) \neq y_i \\ \frac {D_t(i)\varepsilon_t }{ (1 - \varepsilon_t ) } & h_t(x_i)=y_i \end{array}\right. Dt+1={εtDt(i)或者Dt(i)(1−εt)(1−εt)Dt(i)εtht(xi)=yiht(xi)=yi ,并将它归一化为一个概率分布函数。
③ 合并基分类器:给定一个未知样本 z z z,输出分类结果为加权投票的结果 sign ( ∑ t = 1 T h t ( z ) a t ) \operatorname{sign}\left(\sum_{t=1}^{T} h_{t}(z) a_{t}\right) sign(∑t=1Tht(z)at)