分类算法之adaboost

本文详细介绍了集成学习中的Adaboost、GBDT(GradientBoostingDecisionTrees)和Bagging算法,包括它们如何通过组合弱学习器提升性能,以及在训练过程中面临的挑战和解决策略。同时讨论了这些方法的优点(如高准确度和自动化特征选择)和缺点(如对异常值敏感和计算开销大)。
摘要由CSDN通过智能技术生成

一、集成学习

   通过构建多个学习器(为了目的构建出的模型)来完成学习任务

强学习器--准确率较高

弱学习器--简单,例如逻辑回归

将多个弱学习器组合起来达到强学习器的效果

优点:将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能

   集成学习算法需要关注的问题:

1、个体学习器如何训练得到(学习不一样数据)--训练数据的权值或概率分布如何改变(有侧重点的进行学习)

2、如何将学习器进行结合

做法不同,产生两种类别--boosting:

个体学习器间存在强依赖关系,必须串行生成的序列化方法(弱学习器之间是有关联的)

解决第一个问题:提高那些在前一轮被弱分类器分错的样本的权值

                             减小那些在前一轮被弱分类器分对的样本的权值

    使误分的样本在后续中受到更多的关注

解决第二个问题:加法模型将弱分类器进行线性组合,(给相应的学习器加上相应的权重)例如:adaboost GBDT

bagging:

个体学习器之间不存在强依赖关系、可同时生成的并行化方法

解决第一个问题:1、从原始样本集中抽取出k个训练集 (每轮从原始样本集中使用Bootstraping法,即自助法,使一种有放回的抽样方法,可能抽到重复的样本,抽取n个训练样本(在训练集中,有些样本可能被多次抽到,而有些样本可能一次都没有抽中)共进行k轮抽取,得到k个训练集,k个训练集相互独立)(随机森林中还会随机抽取一定数量的特征) 2、k个训练集分别训练,共得到k个模型,体现了并行  3、将上步得到的k个模型,通过一定的方式组合起来 a.若是分类问题:将上步得到的k个模型采用投票的方式得到分类结果  b.若是回归问题:计算上述模型的均值作为最后的结果

代表算法:随机森林

二、adaboost

解决的是二分类问题 

思路:
数学表达-加法模型f(x)=\sum_{m=1}^{M} \alpha _{m}G_{m}(x)=\alpha _{1}G_{1}(x)+...+\alpha _{m}G_{m}(x)+...\alpha _{m}G_{m}(x)

\alpha _{m} 由 G_{m}(x) 的“分类误差率”决定   G_{m}(x)  训练样本:提高前一轮“错误分类”的样本的权值,降低前一轮“正确分类”的样本的权值

1、在每一轮中,分别记录好那些被当前弱分类器 正确分类错误分类样本,在下一轮训练时,提高错误分类样本的权值,同时降低正确分类样本的权值,用以训练新的弱分类器,这样以来,那些没有得到正确分类的数据,由于其权值加大,会受到后一轮的弱分类器的更大关注

2、加权多数表决

a.加大分类误差率小的弱分类器的权值,使其在表决中起较大作用

b.减小分类误差率大的弱分类器的权值,使其在表决中起较小作用

1、adaboost算法流程

二分类训练数据集T=\left \{ (x_{1},y_{1}), (x_{2},y_{2}),..., (x_{N},y_{N})\right \}

其中,每个样本由实例和标记组成,实例x_{i}\in X\subseteq R^{n},标记y_{i}\in Y=-1,+1

X是实例空间,Y是标记集合

定义基分类器(弱分类器)G(x)

定义一个阈值k  G(x)=1 ,x>k    G(x)=-1 ,x<k

循环M次 f(x)=\sum_{m=1}^{M} \alpha _{m}G_{m}(x)=\alpha _{1}G_{1}(x)+...+\alpha _{m}G_{m}(x)+...\alpha _{m}G_{m}(x)

有M个循环M次

1、初始化/更新当前训练数据的权值分布

      a.如果是初次--    D_{1}=(w_{1i},...,w_{1N}), w_{1i}=\frac{1}{N}, i=1,2,...,N   权重是均分

      b.非初次,进行更新

e^{-\alpha _{m-1}}是小于1的, e^{\alpha _{m-1}}是大于1的,所以当分类错误时,权重会增加,正确,权重减小

2、训练当前基分类器G(x)

   使用具有权值分布的Dm的训练数据集学习,得到基分类器Gm(x)

 I的含义是当括号里的条件满足时为1,否则为0,找到错误分类样本的权值

em的范围是0-0.5  (条件反转,即可改变误差率)

\alpha _{m}>=0  em单调递减 \alpha _{m} 单调递增

em为分类误差率,当分类误差率较小的时候  \alpha _{m}越大

3、计算当前基分类器的权值\alpham

4、将\alpha _{m}G_{m}(x) 更新到加法模型f(x)中

f(x)=\alpha _{1}G_{1}(x)+\alpha _{2}G_{2}(x)+...\alpha _{m}G_{m}(x)

5、判断是否满足条件退出条件

      分类器个数是否达到M,总分类器误差率是否低于设定的精度--sign[f(x)]

三、加法模型

预测函数

f(x)=\sum_{m=1}^{M}\beta _{m}b(x;\gamma _{m})

加法模型就是将很多学习器线性加权的组合

\beta _{m} 为基函数参数     b(x;\gamma _{m})为基函数     \gamma _{m}为积函数的参数

损失函数:自定义损失函数L(y,f(x))

回归问题--MSE均方误差,,分类问题--指数函数/交叉熵损失

优化方法

不适合使用梯度下降:复杂度较高

使用前向分布算法:是一个用于构造加性模型的贪婪算法。它在每一步中为当前模型添加一个新的基函数,可以将复杂的问题简化为在每一步寻找最优基函数的问题。

前向分布算法的基本思想:

  1. 初始化得到一个常数模型,这个模型通常选择训练集的目标变量(通常表示为Y)的均值或中位数。

  2. 在每一轮的迭代中,找到一个可以使损失函数最小化的基函数。将这个基函数乘以一个估计系数,加到当前的模型上。

  3. 更新损失函数。

  4. 重复步骤2-3,知道停止条件满足——迭代次数达到预设值或在损失函数方面没有显著提升。

四、优点和缺点

优点

  1. 高准确度:AdaBoost往往具有较高的预测准确度,尤其是与单一模型相比。原因在于,AdaBoost在逐轮迭代过程中,不断地调整样本权重和弱分类器权重,关注难以分类的样本,从而达到很高的准确度。

  2. 简单易用:AdaBoost算法简单,易于实现。用户可以自由选择合适的基分类器,例如决策树桩、支持向量机等。

  3. 自动特征选择:若使用决策树桩作为基分类器,AdaBoost会自动选择重要性较高的特征进行分类,从而实现特征选择。这有助于降低模型复杂度和提高模型泛化性能。

  4. 不容易过拟合:在加权组合多个弱分类器的过程中,AdaBoost往往不容易产生过拟合现象。由于每个弱分类器在整个分类器中只占有一定的权重,整体模型可以更好地泛化

缺点

  1. 对异常值敏感:AdaBoost在迭代过程中会不断调整样本权重,因此对异常值较为敏感。异常值可能导致模型过分关注这些异常样本,从而降低模型泛化能力。

  2. 计算开销较大:AdaBoost须按顺序训练弱分类器,因为每次迭代都要根据前一轮弱分类器的结果更新训练样本权重。这不仅限制了算法的并行能力,还可能导致训练过程耗时较长。

  3. 难以解释:虽然单个弱分类器可能具有较好的可解释性,但由多个弱分类器组成的整体分类器可能较难解释。很多实际应用场景中,模型解释性是一个重要的考虑因素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值