AdaBoost算法

AdaBoost算法简介

AdaBoost算法的全称是自适应Boosting(Adaptive Boosting),是一种二分类器,它用弱分类器的线性组合构造强分类器。弱分类器的性能不用太好,只需要比随机猜测强,依靠它们可以构造出一个非常准确的强分类器。强分类器的计算公式为:

其中x是输入向量,F(x)是强分类器,f_{(x)}是弱分类器, a_{(t)}是弱分类器的权重值,是一个正数,T为弱分类器的数量。弱分类器的输出值为+1或-1,分别对应于正样本和负样本。分类时的判定规则为:

其中sgn是符号函数。强分类器的输出值也为+1或-1,同样对应于正样本和负样本。弱分类器和它们的权重值通过训练算法得到。之所以叫弱分类器是因为它们的精度不用太高。

训练算法

训练时,依次训练每一个弱分类器,并得到它们的权重值。训练样本同样带有权重,初始时所有样本的权重相等,被前面的弱分类器错分的样本会加大权重,反之会减小权重,因此接下来的弱分类器会更加关注这些难分的样本。弱分类器的权重值根据它的准确率构造,精度越高的弱分类器权重越大。给定l个训练样本( [公式] , [公式] ),其中 [公式] 是特征向量, [公式] 为类别标签,其值为+1或-1。训练算法的流程如下:

初始化样本权重值,所有样本的初始权重相等:

循环,对t=1,…,T依次训练每个弱分类器:

训练一个弱分类器 f_{(x)},并计算它对训练样本集的错误率 e_{t}

计算弱分类器的权重:

更新所有样本的权重:

其中Z_{t}为归一化因子,它是所有样本的权重之和:

结束循环

最后得到强分类器:

根据弱分类器权重的计算公式,错误率低的弱分类器权重大,它是准确率的增函数。在SIGAI之前的公众号文章“大话AdaBoost算法”中,我们给出了一个形象的例子。每个弱分类器类似于一个水平不太高的医生,如果在之前的考核中一个医生的技术更好,对病人情况的判断更准确,那么可以加大他在会诊时说话的分量即权重。而强分类器就是这些医生的结合。

给训练样本加权重是有必要的,如果样本没有权重,每个弱分类器的训练样本是相同的,训练出来的弱分类器也是一样的,这样训练多个弱分类器没有意义。AdaBoost算法的原则是:

关注之前被错分的样本,准确率高的弱分类器有更大的权重。

上面的算法中并没有说明弱分类器是什么样的,具体实现时我们应该选择什么样的分类器作为弱分类器?一般用深度很小的决策树。强分类器是弱分类器的线性组合,如果弱分类器是线性函数,无论怎样组合,强分类器都是线性的,因此应该选择非线性的分类器做弱分类器。

训练算法的推导

AdaBoost看上去是一个脑洞大开想出来的算法,你可能会问:为什么弱分类器的权重计算公式是这样的?为什么样本权重的更新公式是这样的?事实上,它们是有来历的。我们可以用广义加法模型+指数损失函数来推导出AdaBoost的训练算法。

广义加法模型拟合的目标函数是多个基函数的线性组合:

其中 ,\gamma _{i}为基函数的参数, \beta _{i}为基函数的权重系数。训练时这个模型要确定的是基函数的参数和权重值。训练的目标是最小化对所有样本的损失函数:

这是指数损失函数。如果标签值与强分类器的预测值越接近,损失函数的值越小,反之越大。使用指数损失函数而不用均方误差损失函数的原因是均方误差损失函数对分类问题的效果不好。将广义加法模型的拟合函数代入指数损失函数中,得到算法训练弱分类器时要优化的目标函数为:

这里将指数函数拆成了两部分,已有的强分类器,以及当前弱分类器对训练样本的损失函数,前者在之前的迭代中已经求出,可以看成常数。目标函数可以简化为:

其中:

它只和前面的迭代得到的强分类器有关,与当前的弱分类器、弱分类器权重无关,这就是样本权重。这个最优化问题可以分两步求解,首先将 \beta看成常数,由于 y_{i}F_{(x)}的取值只能为+1或-1,要让上面的目标函数最小化,必须让二者相等。因此损失函数对f(x)的最优解为:

其中I是指标函数,根据括号里的条件是否成立其取值为0或1。上式的最优解是使得对样本的加权误差率最小的分类器。得到弱分类器之后,优化目标可以表示成\beta 的函数:

上式前半部分是被正确分类的样本,后半部分是被错误分类的样本。这可以写成:

具体推导过程为:

函数在极值点的导数为0,即:

由此得到关于\beta的方程:

最优解为:

其中 eer_{j}为弱分类器对训练样本集的加权错误率:

对逼近函数做如下更新:

导致下次迭代时样本的权重为:

这就是样本权重的更新公式。AdaBoost训练算法就是求解上述最优化问题的过程

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Adaboost分类器是一种集成学习算法,基于弱分类器的集成,通过迭代训练一系列弱分类器来构建一个强分类器。其计算公式如下: 1. 初始化训练样本的权重:对于有N个训练样本的训练集D,初始时,每个样本的权重Wi=1/N,即每个样本的权重相等。 2. 迭代训练弱分类器:对于每次迭代t=1,2,...,T,T为迭代次数,进行以下操作: a. 训练一个弱分类器:根据当前的样本权重,使用一个弱分类器基于特定特征进行训练。弱分类器可以是任意一种分类算法,比如决策树,朴素贝叶斯等。 b. 计算错误率:根据训练得到的弱分类器,计算分类错误率εt。错误率的计算方式为对于误分类的样本,将其权重相加,即εt = ∑Wi * 错误分类指示符。 c. 更新样本权重:根据分类器的分类效果,更新每个样本的权重。被分类错误的样本权重会增加,被分类正确的样本权重会减小。权重更新公式为Wi(j+1) = Wi(j) * (1/2)^(1+错误分类指示符) / sum(W)。 d. 根据样本权重调整弱分类器权重:每个弱分类器的权重αt = log((1-εt)/εt)。 3. 构建强分类器:将所有步骤2中得到的弱分类器按照其权重进行加权组合得到最终的强分类器。对于输入的新样本,使用强分类器进行分类预测。 通过迭代训练一系列的弱分类器,并将它们进行加权组合,Adaboost算法能够在每次迭代中重点关注被错误分类的样本,以提高整体的分类准确率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值