Adaboost 详解

Adaboost 详解

本文会详细介绍 Adaboost (Adaptive Boosting) 这一 ensemble 模型(属于 boosting)。

1. 算法简介

boosting

这属于集成(ensemble)算法中的提升(boosting)方法,是迭代算法。我们每一轮迭代寻找一个合适的 weak learner 集成到模型中(本质上是梯度下降),通过 T 轮的迭代来集成出一个强分类器,这是一个 boosting 提升过程。

adaptive

这涉及实现提升的细节。所有的样本都有自己的 weight,初始化时一致。training 时每一轮迭代,我们要更新所有样本的 weight,模型正确判别的样本 weight 减小,而错误判别的样本 weight 增加。这就是 Adaboost 的核心了,这非常像一个我们依据错误经验持续学习的过程。

steepest decent with approximate functional gradient

本算法数学上可以解释为类似在函数空间上做最速梯度下降。每次迭代中,选择的 weak classifier 函数其实是当前负梯度方向,而对应的权值则是在此方向使 loss 减少最多的步长(greedy~)。这里使用的 loss function 是 exponential function,而 GBDT(gradient boost decision tree)推广到了其他 error function,也可以说 AdaBoost 是一种 GBDT。

2. 训练流程详解

实际上不同 Adaboost 版本的细节策略略有不同,这里讲解的是Viola-Jones 的 Real-Time Face Detection 论文(AdaBoost 的一个著名的成功应用)中使用的版本。

2.1 initialization

假设我们有 N 个样本 D=[(x1,y1),(x2,y2),...,(xn,yn)],其中 x 为特征向量, y 为 0/1 分类的 label。
我们要迭代训练 T 轮,样本集 weight 向量 ut=1,2...T 初始化为 ut=1=[1N,1N,...,1N],即 N 个样本的重要性一开始是一致的,且和为 1。
(这是正例负例等比例的情况,不等比例时,可以假设正例 M 个而负例 L 个则初始化为 ut=1=[12M,12M,...,12L,12L],即保证正负例各自总权重皆为 12

2.2 training iteration

(对于第 t 轮迭代)

  • 选取 weak classifier 并计算 error:
    根据当前样本权重 ut 获取一个当前最好的 weak classifier ht(x) 函数(训练一个 decision tree 或者 decision stump),函数输出 0/1 结果,其相关 error 为 ϵt=1NNi=1uti|ht(xi)yi|。这里应该有 0ϵt<0.5,因为我们要求 weak classifier 至少优于乱猜。

    • 更新训练集样本权重:
      针对 ϵt,我们设置一个核心变量 scaling factor st=1ϵtϵt1<st<,并更新样本集 weight :

      ut+1i={ utiuti/stht(xi)yi, incorrect caseht(xi)=yi, correct case

      除了上述公式,之后还会对 ut+1i 重新 normalize ut+1i=ut+1iNj=1ut+1j,保证和为 1。
      可以注意到这里的 adaptive 的机制:本轮迭代 ht(x) 错误分类的样本的 weight 会增大(scale up incorrect),正确分类样本的 weight 相应减小(scale down correct)
      • 确认此 weak classifer 权重:
        会根据本轮 ht(x) 的表现给予它一个权重 αt=ln st0<αt<);当 ϵt=0 时,αt= 即对于完美的 classifier 我们可以给到无穷大的权重;而当 ϵt=0.5 时,αt=0 即对于乱猜的 classifier 直接不予集成。可见 error 越小的分类器权重越大。

      2.3 aggregation

      历经 T 轮训练后,将 T 个 ht(x) 线性集成为 strong classifier。实际上集成的参数在迭代过程中已经决定了,这又称为 linearly on the fly with theoretical guarantee,涉及的理论验证之后会详述。

      C(xi)={ 10Ttαtht(xi)12Ttαtotherwise

      ht(xi) 是 weak classifier 的 0/1 投票,αtht(xi) 则是加权投票;当所有 weak classifier 对样本的加权投票结果大于整体权值的 12 时,strong classifier 判定样本为 positive,否则为 negative。

      3. Weak Classifier

      这里把训练流程中的 weak classifier 单独拿出来详细说明。

      3.1 Compare to Random Forest

      Random Forest 也是 ensemble 集成算法,属于 bagging 类别,通过 bootstrap 来 uniformly aggregate 了一组等权重的 decision tree,然后通过投票给出整体结果。这是使用 classification(输出 0/1 结果) 或者 regression decision tree 都可以。

      这个也是 weak classifier 集成为 strong classifier 的过程,但是集成思想和 Adaboost 不一致(bagging vs. boosting)。Adaboost 也可以使用 classification decision tree 作为 weak classifier,但更常用的是更 weaker 的 decision stump。这里还可以想象一下,我们如果给 Adaboost 一个 fully grown 的 decision tree,那么可能会有 ϵ=0s=,训练就崩坏了~ 所以即使用 decision tree 也要做约束出弱的树,而不是像 Random Forest 那样 fully grown。

      3.2 Decision Stump

      这个是一个弱弱的 weak classifier,类似只有 1 层的树,只剩一个树桩了。具体公式如下:

      hf,p,θ(x)={
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值