1.集成学习(ensemble learning)

2.AdaBoost 模型理论

Adaboost 是 boosting 流派中最具代表性的一种方法。AdaBoost,是英文 "Adaptive Boosting"(自适应增强)的缩写,由 Yoav Freund 和 Robert Schapire 在1995年提出。它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。

最初提出的 AdaBoost 算法主要用来解决二分类问题:

当然, AdaBoost 算法同样可以用来解决响应变量为连续的回归问题. 许多学者都研究了AdaBoost 产生能够准确分类的分类器的原因, 他们在数据实验中发现, 当使用基于决策树的分类器作为"基本学习器"(base learner) $G_{m}(\mathbf{x}), m=1, 2, \ldots, M$ 时会使得 AdaBoost 算法比单棵决策树分类模型拥有显著低的分类误差. Breiman 就直接将使用树模型作为基分类器的 AdaBoost 算法称为"世界上最好的直接可以拿来使用的分类器 "(best off-the-shelf classifier in the world). 并且, 许多关 AdaBoost 的算法实验都表明如果算法中不断有基本学习器加进来, 算法的分类误差一直在减小, 从而可以得到AdaBoost 算法似乎不容易过拟合的性质.

Adaboost 迭代算法分3步:

  1. 初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权值:1/N;
  2. 训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权值就被降低;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后,权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去;
  3. 将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小;

AdaBoost 具体算法:

  1. 初始化每个样本观测值的权重 $\omega_{i}^{[0]}=1/N$ , 其中 $i=1, \ldots, N$;
  2. 开始迭代, 令 $m=1$
    • 利用加权重 $\omega_{i}^{[m-1]}$ 的训练数据拟合一个弱分类器 $G_{m}(\cdot)$;
    • 计算加权训练数据的分类错误率: $$err^{[m]} = \frac{\sum_{i=1}^{N}\omega_{i}^{[m-1]}I(y_{i} \neq G_{m}(x_{i}))}{\sum_{i=1}^{N}\omega_{i}^{[m-1]}}.$$
    • 根据上一步的分类错误率计算分类器在最终分类结果上的权重值: $$\alpha^{[m]}=log(\frac{1-err^{[m]}}{err^{[m]}}).$$
    • 根据上面计算出的样本的误分类率更新样本的权重: $$\omega_{i}^{[m]} \leftarrow \omega_{i}^{[m-1]}exp(\alpha^{[m]}I(y_{i} \neq G_{m}(\mathbf{x}_{i})))$$
  3. 重复上面的迭代,直到满足迭代停止条件 $m=M$, 并且将所有在迭代中产生的弱分类器通过加权投票的方法进行聚合, 最终得到的强分类器为: $$G(\mathbf{x}) = sign\Bigg(\sum^{M}_{m=1}\alpha^{[m]}G^{[m]}(\mathbf{x})\Bigg)$$

3.AdaBoost 使用