机器学习算法-随机森林及集成学习简介

一、随机森林简介

        在上一节中我们介绍了决策树算法,在实际工作中,我们即可以使用一棵决策树来解决问题,也可以使用多棵决策树来共同解决问题,也就是随机森林。

        随机森林指的是由多棵决策树组成,随机指的是每一个决策树的样本是随机从数据集中采样得到的。假设模型由三棵决策树组成,我们给每棵决策树都随机抽取样本进行训练,由于这三棵树的训练样本不一样,因此他们最后得到的决策结果有可能也不同。最后我们把这三棵树的结果做一个综合,就得到最终的决策结果。

二、如何构建随机森林?

        随机森林算法的创建过程如下所示:

        (1)从样本集中采用Bootstrap采样(即有放回的采样)选出N个样本;
        (2)从所有属性中随机选择K个属性,从K个属性选择最佳分割属性作为节点建立决策树;
        (3)重复以上两步M次,即建立了M棵决策树;
        (4)由这M棵决策树形成随机森林,通过投票表决结果,决定数据属于哪一类。

        随机森林的随机性主要体现在:N个样本的随机和K个特征属性的选择这两个随机上,其总体结构如下图所示。

三、随机森林的优缺点

        因为算法是随机从数据集中进行采样的,所以模型的随机性很好,不容易发生过拟合的情况,同时因为样本也是随机的,所以模型对于样本的异常值也不太敏感。

        其次,因为算法采样的时候,是从整个数据集中抽取其中的一部分进行采样,而且随机森林是由多棵树组合而成的,所以模型中的每一棵决策树都可以并行训练和计算,这样一来,在面向大数据量的时候,随机森林的运行效率更高。

        也正是因为这样,随机森林在训练时需要的计算成本会更高,而且就算他们在整合之后会比之前的单一模型表现好,但在面对复杂样本的时候,它们仍然没有办法很好区分,所以模型的上限很低。

四、集成学习

       上边讲的随机森林其实是集成学习算法的一种。我们都知道一个成语叫集思广益,指的是集中群众的智慧,广泛吸收有益的意见。在机器学习算法中也有类似的思想,被称为集成学习,可以理解为:不是通过某一个单独的机器学习算法解决问题,而是通过多个机器学习算法结合使用来完成最终的算法,最终达到1+1>2的效果,核心原理就是我们常说的“三个臭皮匠赛过一个诸葛亮”。

        集成学习通过训练学习出多个估计器,当需要预测时通过结合器将多个估计器的结果整合起来当作最后的结果输出,其结构图如下图所示。

        集成学习的优势是提升了单个估计器的通用性与鲁棒性,比单个估计器拥有更好的预测性能,集成学习的另一个特点是能方便的进行并行化操作。

        根据多个估计器之间组合方式的不同可以将集成学习分为:Bagging(装袋法)和Boosting(增强法)。

1、Bagging(装袋法)

        ①Bagging原理

        多次随机抽样构建训练集,每构建一次就训练一个模型,最后对多个模型的结果附件一层结果决策,使用投票结果做为最终的结果,其示意图如下图所示。

        ②Bagging策略:

       (1)从样本集中重采样(有重复的)选出N个样本;
       (2)在所有属性上,对这N个样本建立分类器(ID3、C4.5、CART、SVM、Logistic回归等);
       (3)重复以上两步M次,即获得了M个分类器;
       (4)将数据放在这M个分类器上,最后根据这M个分类器的投票结果,决定数据属于哪一类。

        ③代表:随机森林。

        ④特点:训练多个分类器对结果进行投票表决。

2、Boosting(增强法)

        ①Boosting原理:即串行训练,每次把上一次训练的结果作为一个特征,不断地强化学习的效果,其示意图如下图所示。

       ②代表:Adaboost、GBDT等。

       ③特点:从弱学习器开始加强,通过加权进行训练(串行)。

       ④Adaboost算法:

       AdaBoost是英文"Adaptive Boosting"(自适应增强)的缩写,它的自适应在于:前一个基本分类器被错误分类的样本的权值会增大,而正确分类的样本的权值会减小,并再次用来训练下一个基本分类器。同时,在每一轮迭代中,加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数才确定最终的强分类器。
      (1)首先,是初始化训练数据的权值分布D1。假设有N个训练样本数据,则每一个训练样本最开始时,都被赋予相同的权值:w1=1/N。
      (2)然后,训练弱分类器。具体训练过程中是:如果某个训练样本点,被弱分类器准确地分类,那么在构造下一个训练集中,它对应的权值要减小;相反,如果某个训练样本点被错误分类,那么它的权值就应该增大。权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
      (3)最后,将各个训练得到的弱分类器组合成一个强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。
       换而言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。

        优点:

      (1)Adaboost提供一种框架,在框架内可以使用各种方法构建子分类器。可以使用简单的弱分类器,不用对特征进行筛选,也不存在过拟合的现象。
     (2)Adaboost算法不需要弱分类器的先验知识,最后得到的强分类器的分类精度依赖于所有弱分类器。无论是应用于人造数据还是真实数据,Adaboost都能显著的提高学习精度。
     (3)Adaboost算法不需要预先知道弱分类器的错误率上限,且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度,可以深挖分类器的能力。Adaboost可以根据弱分类器的反馈,自适应地调整假定的错误率,执行的效率高。
     (4)Adaboost对同一个训练样本集训练不同的弱分类器,按照一定的方法把这些弱分类器集合起来,构造一个分类能力很强的强分类器,即“三个臭皮匠赛过一个诸葛亮”。

        缺点:

        在Adaboost训练过程中,Adaboost会使得难于分类样本的权值呈指数增长,训练将会过于偏向这类困难的样本,导致Adaboost算法易受噪声干扰。此外,Adaboost依赖于弱分类器,而弱分类器的训练时间往往很长。

        ⑤GDBT算法:

        GBDT是一种基于决策树的集成学习算法,它通过逐步迭代的方式训练一系列决策树模型,并通过梯度下降的方法进行优化,最终得到一个强大的集成模型。它的核心思想是通过不断减小损失函数的梯度来提升模型的性能,每一棵决策树都试图拟合前一棵树的残差。

        梯度提升算法原理:梯度提升算法的核心思想是通过迭代优化一个累加的预测函数,每一步都针对前一轮的残差(即真实值与预测值之差)构建一个新的弱学习器。具体来说,每轮迭代中,模型会计算残差的负梯度作为新的学习目标,训练一个决策树来拟合该梯度,并以适当的学习率将新树加入到累加函数中。通过这种方式,梯度提升树逐步减小残差,从而提升模型的整体性能。

        梯度提升决策树(GBDT)的算法流程:

        1、初始化:设定一个初始预测值,如所有样本的目标值的均值,记作F0(x)=c,此时残差为r0=y-F0(x)。
        2、迭代:对于第t轮(t=1,2,...,T):
        a. 拟合残差:以当前残差rt-1为学习目标,训练一个弱学习器(决策树)h_t(x),使其尽可能拟合rt-1。
        b. 计算步长(学习率):确定一个正的常数αt,通常通过交叉验证或线性搜索找到最佳值。
        c. 更新预测:将新学习到的决策树加入到累加函数中,更新预测值为Ft(x)=Ft_1(x)+αth_t(x)。
        d. 计算新残差:根据新的预测值计算残差rt=y-Ft(x)。
        3、终止:当达到预定的迭代次数T或残差变化小于阈值时停止迭代,最终的预测模型为F(x)=∑t=1Tαth_t(x)。

        构建例子:

        我们以一个简单的回归问题为例,解释GBDT的原理。假设我们有一组输入特征X和对应的目标值Y,我们的目标是构建一个能够准确预测Y的模型。GBDT的训练过程可以分为以下几个步骤:
        1)初始化模型:将初始模型设为一个常数,通常是目标变量的均值。
        2)计算残差:用当前模型对目标变量进行预测,然后计算预测值与实际值之间的残差。
        3)拟合残差:构建一棵决策树,以残差为目标变量进行训练,得到一个新的叶子节点。
        4)更新模型:将当前模型与新生成的决策树进行加权相加,得到新的模型。
        5)重复迭代:重复步骤2-4,直到达到预设的迭代次数或损失函数收敛。
        通过上述迭代过程,GBDT不断优化模型的性能,逐步减小预测误差,最终得到一个强大的集成模型。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值