【机器学习】AdaBoost 原理与推导

AdaBoost是一种Boosting方法,通过调整训练集权重分布训练多个弱分类器,并结合成强分类器。它解决如何调整权重分布和组合弱分类器的问题。在每个迭代中,错误分类的样本权重增加,正确分类的权重降低,加权系数根据分类误差率计算。最终通过线性组合弱分类器形成最终分类模型。

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

AdaBoost 自适应 增强
            Boosting系列代表算法,对同一训练集训练出不同的(弱)分类器,然后集合这些弱分类器构成一个更优性能的(强)分类器
            传统Boosting方法存在两个问题:
                1. 如何调整训练集的权重分布以训练出不同的弱分类器
                2. 如何将各个弱分类器联合起来组成一个强分类器


            AdaBoost解决方案:
                1.从均匀权重分布开始,后一轮弱分类器的输入权重分布将
                    ·提高前一轮弱分类器分类错误样本的权重
                    ·降低前一轮弱分类器分类正确样本的权重
                2.计算各个弱分类器 在训练集上的分类误差率,根据误差率计算各个弱分类器的 加权系数
                    ·对新样本进行分类时,将各个弱分类器的计算结果加权求和,求得最终的分类结果


假设训练一个含有m个弱分类器Gi(i=1,2,...,m)的AdaBoost模型,n个训练样本xj,yj(j=1,2,...n),m个弱分类器输入权重分布 分别为 
                第一个分类器:D1(w11, w12, ..., w1j, ..., w1n)
                第二个分类器:D2(w21, w22, ..., w2j, ..., w2n)
                          ....       :...
                第m个分类器:Dm(wm1,wm2,...,wmj,...,wmn)    【注意:任何情况下权重之和都为1,即对Di有 ∑n_j{wij} = 1】

            1.初始化 D1中 w1j = 1/n, 按样本集以D1的权重分布 来训练 分类器 G1,得到分类模型 G1(x)
                ·计算 G1(x) 在训练集上的 分类误差率 e:        (被G(x)误分类样本的权值之和)
                    e1 = P( G1(xj)≠yi )
                         = ∑n_j{ w1j*  I(G1(xj)≠yi)}        【2.19】
                    其中 I(条件表达式) = 满足条件时值为1,不满足条件时为0
                ·计算 G1(x) 的加权系数 α:            (多分类器集成时使用的权值)
                    α1 = 1/2 * ln( (1-e1)/e1 )        【2.20】
                ·计算 G1(x) 的泛化因子 Z1:
                    Z1 = ∑n_j{ w1j*exp( -α1*yj*G1(xj) ) }    【2.21】  

            2.更新第二个分类器的权值分布 D2(w21, w22, ..., w2j, ..., w2n)
                w2j = (w1j / Z1) * exp( -α1*yj*G1(xj) )        【2.22】
                ·按样本集以D2的权重分布 来训练 分类器 G2,得到分类模型 G2(x)
                ·计算 G2(x) 在训练集上的 分类误差率 e2
                ·计算 G2(x) 的加权系数 α2
                ·计算 G1(x) 的泛化因子 Z2

            3.同步骤2,依次迭代到 第m个分类器 为止
                至此,得到m个分类器的 分类模型 G1,G2,...,GM 及其加权系数 α1,α2,...,αm

            4.构建m个弱分类器的 线性组合模型 f(x):    
                f(x) = ∑m_i{ αi * Gi(x) }            【2.23】
            =》得到最终的AdaBoost分类模型 Cls(x) = sign(f(x)) = sign( ∑m_i{ αi * Gi(x) } )        【2.24】

同属于Boosting系列算法还有 XgBoost:https://blog.youkuaiyun.com/Tinkle2015/article/details/83859164

了解其他集成学习方法 可参考: https://blog.youkuaiyun.com/Tinkle2015/article/details/83859108

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值