Adaboost

Adaboost是一种增强学习方法,通过改变样本概率分布,训练弱分类器并集成以提高分类性能。它通过调整错误分类样本的权重,选择误差率最小的模型,并线性组合弱学习器形成强学习器。Adaboost与加法模型和前向分布算法有关,适用于解决分类问题,具有提升弱分类器性能的优点,但也可能过于关注难分类样本导致噪声干扰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Adaboost这种增强学习方法之前是看过很多资料都没看懂,最近看李航的《统计学习方法》和 其他几位同学的博客,才明白了其中的原理。

参考资料:https://blog.youkuaiyun.com/guyuealian/article/details/70995333

                  李航的《统计学习方法》

 

什么是增强学习?

增强学习即boosting,它的基本思想是集成思想,即多个专家做出的决策的有效组合要比一个专家做出的决策要好。不同于bagging的并行训练,且子分类器之前不相关。boosting是串行训练的。但和bagging一样,boosting的目标也是提高弱分类器的性能。弱学习是存在一个多项式算法,学习结果仅仅比随机猜测好一点点。强学习是存在一个多项式算法,学习的结果很好。

 

Adaboost简介

boosting是怎样串行训练弱模型并将其集成的呢?《统计》一书中说了,是通过改变样本的概率分布,调用弱学习器对不同分布的样本分而治之,并将弱分类器组合成强分类器。不好理解吧,那我们来看Adaboost是怎样做的,Adaboost会提高被前一个弱学习器分类错误的样本权值,降低被前一个弱学习器分类正确的样本权值,是前者在新一轮训练中在分类错误率中影响增大,后者影响减小。那么在新一轮训练中通过选择参数最小化分类错误率,会选择将前者分类正确的模型作为最优模型。最后将弱学习器线性组合得到最终的分类模型。

 

Adaboost算法可以描述为以下三个步骤:

1) 对N个样本权值分布D_{1}进行初始化, 赋予相同的权重\underset{W_{1}}{\rightarrow} = \left \{ \frac{1}{N}, \frac{1}{N},....,\frac{1}{N}\right \} 

2) 然后,训练弱分类器H_{_{i}}. 如果一个样本被正确分类,它的权重就会减少,如果被错误分类,它的权重就会增加。样本权重更新后被用于下一轮的训练,如此迭代。

3)弱学习器训练完成后,增加正确率高的学习器在最终组合里的权重,即提高话语权,正确率低的学习器话语权就减少。最终,通过线性组合这些弱学习器组成了一个强学习器。

Adaboost的算法过程

给定训练数据集:,其中用于表示训练样本的类别标签,i=1,...,N。Adaboost的目的就是从训练数据中学习一系列弱分类器或基本分类器,然后将这些弱分类器组合成一个强分类器。

相关符号定义:t

 

Adaboost的算法流程如下:

1) 首先,初始化数据的权值分布,每个样本被赋予相同的权值1/N,这时样本的权值分布为D_{1}:

D_{1} = \left \{ w_{1},w_{2},w_{3},.....,w_{N} \right \} = \left \{ 1/N,1/N,1/N,...,1/N \right \}

2)进行迭代t = 1, ... , T

    a)  选择一个误差率最小的弱分类器h作为第t个基分类器H_{t},并计算弱分类器h:\chi \rightarrow \left \{ -1,+1 \right \}, 并计算该弱分类器在D_{t}上的分类误差率:

e_{t} = P(H_{t}(x_{i}) \neq y_{i}) = \sum_{i}^{N} w_{ti}I(H_{t}(x_{i}) \neq y_{i})

分类误差率是分类错误样本的权值之和

b) 计算该分类器在最终分类器中所占权重:

\alpha _{t} = 2ln(\frac{1-e_{t}}{e_{t}})

因为弱分类器中,e_{t} \leq 0.5, 因此e_{t}越小,\alpha _{t}越大。即分类准确率越高,话语权越大。

 

c) 更新样本权重分布D{_{t+1}}:

D_{t+1} = \frac{D_{t}(i)exp(-\alpha _{t}y_{i}H_{t}(i))}{Z_{t}}

Z_{t} = \sum_{i=1}^{N}w_{ti}exp(-\alpha _{t}y_{i}H_{t}(i))) = \sum_{y_{i} =H_{t}(i)}^{ }w^{_{ti}}e^{-\alpha _{t}} + \sum_{y_{i}\neq H_{t}(i)}^{ }w^{_{ti}}e^{\alpha _{t}} = (1-e_{t})e^{-\alpha _{t}} + e_{t}e^{\alpha _{t}} = 2\sqrt{e_{t}(1-e_{t})}

Z_{t}最后一步的变换没有明白。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值