0%

Boosting_Bagging介绍

介绍

Boosting

1.Boosting方法训练基分类器是采用串行的方式,各个基分类器之间有依赖。
2.Boosting的基本思路是将基分类器层层叠加,每一层在训练的时候,对前一层基分类器分错的样本给予更高的权重。测试时,根据各层分类器的结果的加权得到最终的结果。stacking

Bagging

  1. Bagging因为各基分类器之间无强依赖,所以可以进行串行训练。以基于决策树基分类器的随机森林为代表。
  2. 为了让基分类器之间相互独立,需要将数据集分为若干子集(当训练样本数量较少时,子集之间会有重叠部分)。
  3. Bagging更像天赋不同且单一的几个孩子在单独学习,学习的内容可以相同也可以不同。由于个体之间有差异,最终做出的判断不完全一致,每个个体单独判断,然后通过投票的方式做出最后集体的决策。voting

理解

接下来我们将会从消除基分类器的偏差和方差的角度来理解Boosting和Bagging方法的差异。
基分类器:弱分类器。基分类器的错误。是偏差和方差两种错误之和。偏差主要是由分类器的表达能力有限导致的系统性错误,表现在训练不够收敛。方差是由分类器对样本分布过于敏感,导致在训练样本过少时,产生过拟合。

  1. Boosting方法是通过逐步聚焦于基分类器分错的样本,减小集成分类器的偏差。
  2. Bagging方法是采取分而治之的策略,通过训练样本多次采样,分别计算多个独立的基分类器,综合各个模型减小集成分类器的方差。基模型越多,整体思想越统一,不会受个别模型影响,方差越小。

基本步骤

集成学习一般可分为以下3个步骤:

  1. 找到误差互相独立的基分类器;
  2. 训练基分类器;
  3. 合并基分类器的结果。

合并的方式有voting和stacking两种。也可以将不同分类器的输出结果作为一个特征,使用逻辑回归作为融合模型进行最后的结果预测。

以Adaboost为例具体步骤如下:

  1. 确定基分类器:由于树型模型结构简单,且较易产生随机性(制作相互独立的特性),这里可以选择ID3决策树作为基分类器。当然,其它非树型分类模型也可以作为基分类器。

  2. 训练基分类器:假设训练集为xiyi,k=1,,N\left\langle x_{i} y_{i}\right\rangle, k=1, \ldots, N,其中yi{1,1}y_{i} \in\{-1,1\},并且有TT个基分类器,则可以按照如下过程来训练基分类器。

    ① 初始化采样分布D1(i)=1/ND_{1}(i)=1 / N

    ② 令t=1,2,,Tt=1,2, \ldots, T循环;

    A.) 从训练集中,按照DtD_t分布,采样出子集St={xi,yi},i=1,,NiS_{t}=\left\{x_{i}, y_{i}\right\}, i=1, \dots, N_{i}

    B.) 用SiS_i训练出基分类器hih_i;

    C.) 计算hih_i的错误率:ε1=i=1NiI[hi(xi)yi]Di(xi)Nt\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}},其中I[]I[]为判别函数;

    D.) 计算基分类器hih_i,权重ai=log(1εi)εia_{i}=\log \frac{\left(1-\varepsilon_{i}\right)}{\varepsilon_{i}}

    E.) 设置下一次采样

    Dt+1={Dt(i)Dt(i)(1εt)εtht(xi)yiDt(i)εt(1εt)ht(xi)=yiD_{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. ,并将它归一化为一个概率分布函数。

    ③ 合并基分类器:给定一个未知样本zz,输出分类结果为加权投票的结果sign(t=1Tht(z)at)\operatorname{sign}\left(\sum_{t=1}^{T} h_{t}(z) a_{t}\right)

-------------本文结束感谢您的阅读-------------

欢迎关注我的其它发布渠道