• 人工智能知识全面讲解:Bagging族算法


    9.3.1 Bagging是什么

    Bagging是Bootstrap aggregating的缩写,翻译成中文为“套袋”,其同
    样是一类算法的统称。这类算法的主要特点是采用随机、可被重复选择的方式
    挑选训练集,然后“并行”构造弱学习器,最后通过结合方式生成强学习器。
    在 Boosting 算法中,各个弱学习器之间存在依赖关系,?一个学习器依赖上
    一个学习器的学习结果去调整参数,是一种“串行”结构;但是在Bagging算
    法中,各个弱学习器之间没有依赖关系,不需要依赖别的结果,是一种“并
    行”结构。它的工作机制如图9-13所示。

    从上图可以看出,Bagging算法的个体弱学习器的训练集通过随机采样得
    到。通过N次的随机采样,可以得到N个采样集。用这些采样集分别独立训练出
    N个弱学习器,再对这N个弱学习器执行结合策略得到最终的强学习器。
    这种工作机制就像产品经理进行“头脑风暴”的过程。针对某个命题,例
    如“新版本应不应该上线某个功能”,每个人独立思考,形成自己的观点,最
    后再开会集成大家的意见,产生一个结论。由此可见很多机器学习的方法都是
    源于生活的,从生活中吸取解决问题的经验再用到机器学习领域。
    值得注意的是,在这个过程中采用了有放回随机采样的方法。随机采样就
    是从我们的训练集里面采集固定个数的样本,每采集一个样本后,都将样本放
    回原训练集中。也就是说,之前采集到的样本在放回后有可能再次被采集到。
    这一点与 GBDT 的子采样不同。GBDT是无放回采样,而Bagging的子采样是放
    回采样。由于是随机采样,所以每次的采样集和原始训练集是不同的,和其他
    采样集也是不同的,这样得到的数据可以用于训练多个不同的弱学习器。
    Bagging 算法对于弱学习器没有限制,与 AdaBoost 算法一样。但是一般
    在不剪枝决策树、神经网络等易受样本扰动的学习器上它的效果更为明显。例
    如,当基学习器是决策树时,Bagging算法生成的是并行的多个决策树,此时
    可以不做剪枝。这样得到的学习器虽然会产生过拟合现象,但是多个学习器组
    合在一起,可以有效降低过拟合的风险。由于Bagging算法每次都进行采样来
    训练模型,因此泛化能力很强,对于降低模型的方差很有作用。但是对于训练
    集的拟合程度会稍差一些,也就是模型的偏差会大一些。
    9.3.2 随机森林算法
    尽管有剪枝等方法,一棵树的预测效果肯定也不如多棵树。因此有工程师
    会想,能不能把很多棵树的结果集成在一起,再采用某种策略得出结论?随机
    森林算法就这样诞生了。
    随机森林(Random Forest)算法是Bagging算法的一种特殊改进版,顾名
    思?,它是由众多采用随机抽样法生成的CART树的集成学习模式,如图9-14所
    示。可以这样来理解:随机森林算法采用近似的样本数据同时训练很多棵决策
    树,最后以投票的方式选出结果。随机森林算法同样可以解决分类问题与回归
    问题,对于分类问题,通常采用基尼不纯度或者信息增益作为分类依据,对于
    回归问题,通常采用方差或者最小二乘法拟合预测数据。

     

    我们可通过用户调研的方式获得用户在使用某项功能时的感受。我们会设
    置很多问题了解用户的想法,跟某一个用户的交流越深入,获得的信息就越有
    价值。但同时这些信息有一定的偏差性,可能只代表了很小一部分用户的想
    法。因此我们需要调研更多的用户才能获得具有普遍性的想法。这就是一种典
    型的随机森林场景。
    随机森林算法的“随机性”主要体现在两方面:一方面是随机选取数据
    集。从原始的数据集采用有放回抽样,构造子数据集。利用子数据集构建子决
    策树,将这个数据放到每个子决策树中,每个子决策树输出一个结果。对新的
    数据使用随机森林算法得到分类结果,通过对子决策树的判断结果投票,得到
    随机森林算法的输出结果。
    另一方面是随机选取特征。单棵决策树在运行过程中,每个节点被分割成
    使得误差最小的特征,因此模型的方差较大,其对于新数据的拟合程度会差一
    些。但是在随机森林算法中,我们随机选择不同的特征来构建决策树,可以对
    每个特征设置一个随机阈值使单棵树更加随机。这样做产生了广泛的多样性,
    通常可以得到方差更小的模型。同时,随机森林算法中的决策树彼此不同,可
    通过提升系统的多样性,来提升分类性能。

     

    (1)从训练集中选取n个样本作为训练数据输入,一般情况?n远小于整
    体的训练集 N。训练集 N 中没有被挑选的样本称为袋外数据,据实验表明袋
    外数据占比为33.3%?右。
    (2)选取待输入的训练集后,开始构建决策树。具体方法是,每一个分
    裂节点从整体的特征集M中选取m个特征,一般情况?m远小于M。
    (3)选取基尼系数最小的特征作为分裂节点,构建决策树。决策树的其
    他节点都采取相同的分裂规则,直到该节点的所有样本都属于同一类或者达到
    树的最大深度。
    (4)重复步骤2、步骤3多次,每一次输入样本对应一棵决策树,直到模
    型训练完?。
    (5)完成模型训练后,可以使用模型对新数据进行预测。例如输入一个
    待预测数据,然后森林中的所有决策树同时进行决策,采用多数投票的方式判
    定类别。
    我们用一个例子来直观感受一?随机森林算法的分类效果。如图 9-16 所
    示,二维平面上分布着许多样本点并且其中充斥了很多的噪声样本。当只有一
    棵树的时候(t=1),图?边表示单一树,右边表示所有树集合组合起来构成
    的随机森林。因为当前只有一棵树,所以?右两边效果一致。

    从上图可以看出来,树越多,噪声数据对结果的影响越小。这种集成的投
    票机制能够保证较好的降噪性,从而得到比较稳定的结果。同时模型也会越来
    越稳定,能够有更好的表现。在实际应用中,应该尽可能多选择一些树。
    随机森林算法的优点主要有三个:首先在集成过程中不同决策树可以并行
    训练生成,耗时短且效率高;第二,随机森林算法通过投票的机制,避免了单
    棵决策树造成过拟合的问题;第三,随机森林源于决策树,因此继?了决策树
    的众多优点。
    它能够处理大量、高维度的数据。直接把数据放入模型中,不用数据预处
    理,通过简单调参即可得到相对不错的结果。如果项目比较紧张,需要在短时
    间内开发模型,或者我们对手头上的数据不太清楚,数据量太大,随机森林
    算法都会是一个不错的选择 。
    随机森林算法简单的特性使我们在短时间内就能够得到一个性能良好的模
    型。更重要的是,它还能够为我们选择特征提供重要性指导。帮助我们做变量
    筛选,计算每一个特征的重要性。对于解释性较差的特征以及简单特征,直接
    使用随机森林算法即可。通过查看特征的重要性,我们可以知道哪些特征对预
    测过程没有太多贡献或没有贡献,从而决定是否丢弃这类特征。但同时,在集
    成之后随机森林算法牺牲了单棵决策树的可解释性。由于集成机制的解释性
    差,因此也让随机森林算法变成了黑盒算法,不适用于强解释性的场景。
    随机森林算法在众多竞赛中都有良好的表现,已经被广泛应用于不同的领
    域,如金融、互联网广告、天气预报、医药及电子商务等。在银行业,通常用
    于检测频繁贷款且风险较高的客户。在金融领域,随机森林算法可用于选股、
    预测某支股票的价格趋势。在医疗保健领域,随机森林算法可用于识别药品成
    分的正确组合,分析患者的病史以识别疾病。除此之外,在电子商务领域中,
    随机森林算法也常常用于确定哪类商品更受客户的欢迎。

    9.4 两类集成算法的对比
    前面讲述了Boosting与Bagging两类算法族的原理、基本实现步骤以及两
    类集成思想的代表算法。这两种方法都是把若干个分类器整合为一个分类器的
    方法,只是整合的方式不一样,最终得到不一样的结果。接?来我们看看两类
    算法在实现上有什么区别。
    Bagging算法的每个弱分类器挑选训练集的方式是在原始集中随机且有放
    回地选取样本,也就是说同一样本能够被多个弱分类器重复使用,从原始集中
    选出的各轮训练集之间相互独立。
    而 Boosting 算法只需要选取一次训练集,每一轮的训练集不变,只是训
    练集中每个样本在分类器中的权重发生变化。Boosting算法每次采样时,当前
    样本的权重由前面分类器的学习情况决定。所以,在 Boosting 算法中弱学习
    器需要等待前面的学习器训练结束,故它的训练过程是串行的。正是由于这样
    的机制,在每次训练过程中,只有在前面被误分类的样本,才会被提高权重,
    这样新的分类器会把“注意力”放在这些不太好分类的样本上。
    因此,两类算法的主要区别在于取样方式不同,从而导致整个算法的运作
    模式不同。Bagging采用均匀取样,而Boosting根据错误率取样,因而在通常
    情况?,Boosting的分类精度优于Bagging。虽然如此,并非在任何情况?,
    Boosting都是最佳选择。例如,弱分类器采用的学习算法是神经网络这种极为
    耗时的方法时,Bagging可通过并行训练节省大量时间开销,同时它还能很好
    地避免过拟合的问题,从而在很多场景?发挥出独特的优势。两种集成思想虽
    然在实现方式上不同,但它们的基本思想都是将多个弱学习器组合成一个强学
    习器,进而提高模型的性能表现。
    集成算法在一般情况?都能够有比较好的表现。但是对于产品经理而言,
    当面对实际业务场景时,找到模型复杂度和模型效果之间的平衡同样非常重
    要。特别是作为人工智能领域的产品经理更应该清楚地认识到,我们的诉求不
    在于掌握了多少算法,也不在于集成了多少算法,重要的是能够做出合适的选
    择,为不同的业务场景选择恰当的方法。不存在解决所有问题的通用模型,就
    算是集成算法也需要考虑模型的运行效率、可解释性等评价指标,这些对于
    模型能力来说同样重要 。要知道复杂的算法未必优于简单的算法,真正考验
    一个产品经理的硬实力的还是对需求的把握以及对解决方案的选择。因此当面
    对一个问题时,不能过于迷信某个算法,只有“对症?药”才能真正解决问
    题。 

  • 相关阅读:
    axios基本使用
    多媒体数据处理实验2:PCA
    400电话怎么办理(申请开通)
    C语言实战项目---贪吃蛇(上)
    天气这么好,都外出了。顺便了解一下漏桶算法
    boost之测试
    支持向量机之松弛因子与线性支持向量机
    广告和电商应该怎么串联起来呢?我们可以从各大巨头的动作中发掘
    C++之《连连看》
    【Golang之路】——slice总结
  • 原文地址:https://blog.csdn.net/tysonchiu/article/details/125503431