打开

集成算法 产品学AI系列(10)

董小矿 1998阅读 2020-02-28

01 什么是集成算法?

顾名思义,集成算法是一种构建并结合多个学习器来完成学习任务的算法。集成学习应成为各类机器学习竞赛的首要选择,也可以说是人工智能领域工业化应用最为广泛的模型。与单一模型相比,集成学习往往能获得更好的效果。

集成学习是一种使用多个“弱学习器”进行学习,并使用某种规则将哥哥学习结果进行整合,从而获得更好的学习效果的机器学习方法。一般情况下,集成学习采用的学习器都是同质的“弱学习器”。这种弱学习器由弱学习算法构成,常见的弱学习算法有决策树、逻辑回归、简单神经网络和朴素贝叶斯等。在通常情况下,这些算法的复杂度低,速度快,易展示效果,但单个弱学习器的学习效果往往不是特别好,因此借助集成的方法放大弱学习器的作用。

集成学习先产生一组“个体学习器”,再通过某种策略将它们结合起来,最后输出判断结果。如果集成中只包含同类型的个体学习器,则这种集成叫做同质集成;若其中的个体学习不全属于同类型的个体学习器,则被叫做异质集成。目前,同质集成应用最为广泛,一般提到的集成算法也都是指同质集成。其中,同质个体学习器使用最多的模型是CART决策树和神经网络。

1.png

集成学习的研究主要解决两个问题:第一是如何得到这些弱学习群;第二是如何选择一个结合策略,将这些弱学习器结合成为一个强学习器。

根据个体学习器之间的关系,目前的集成学习算法可以分为两类:一类是个体学习器是个体学习器之间存在强依赖关系,是一种有前后顺序的串行化方法,这类方法的典型代表是Boosting算法;另一类个体学习器之间并没有直接关联,可同时并行执行,这类方法的典型代表是Bagging算法和随机森林算法。

02 Boosting族算法

Boosting是一类算法的统称,翻译成中文叫“自适应”算法,其特点是使用一组弱学习算法,通过“迭代更新”的方式构造一个强分类器。

Boosting算法并没有规定的具体实现方法,但大多数实现算法会有以下特点:

  1. 在每轮迭代中会在训练集上生成一个新的弱分类器;
  2. 使用新生成的弱分类器对所有样本进行分类,然后基于弱学习器的表现调整样本分布,并增加错误样本的权重,使其在后续受到更多关注。调整好权重的训练集继续生成下一个弱学习器,不断循环该过程,直到生成一定数量的弱学习器;
  3. 最后基于某种结合策略来综合多个弱学习器的输出。

2.png

Boosting算法通过权重投票的方式将N个弱分类器组合成为一个强分类器。只有弱分类器的分类精度高于50%,才可以将它组合到强分类器中,这种方式会逐渐降低强分类器的分类误差。但是这个机制也并非是完美的,由于Boosting算法将注意力集中在最难分的样本上,这使得它对训练集的噪声点非常敏感,把主要精力都放在处理噪声点上,影响了最终强分类器的效果,也容易造成过拟合的现象。

因此有两个问题值得探讨:一、如何在每轮迭代中改变训练数据的分布情况;二、如何将多个弱分类器合成一个强分类器。使用的学习策略不同,学习的效果也不同。

AdaBoost增强

AdaBoost中文名为“自适应增强”。该算法的增强体现在:1)数据的权重;2)弱分类器的权重。

数据的权重主要用于弱分类器寻找其分类误差最小的决策点,找到之后,用这个最小误差计算出该弱分类器的权重,表示该分类器的“发言权”。分类器权重越大,说明该弱分类器在最终决策时拥有越大的发言权。在前一个弱分类器中被错误分类的样本的权重会增大,而正确分类的样本的权重会减小,并再次用来训练下一个基本分类器。同时,在每一轮迭代中,,加入一个新的弱分类器,直到达到某个预定的足够小的错误率,或达到预先指定的最大迭代次数,从而确定最终的强分类器。

Adaboost能够自适应地调整学习算法的错误率,经过若干次迭代后使得错误率达到预期的大小。它的缺点在于:会使得难于分类的样本的权值呈指数上升,训练会过于偏向这类样本,导致算法易受“噪声”干扰。

梯度下降与决策树集成

梯度提升决策树(GBDT)算法也是Boosting家族的重要成员,GBDT结合了梯度下降、决策树两种方法的优点,再采用集成的方法训练模型,从而得到更优的结果。单独使用决策树时,容易产生过拟合现象,而通过梯度提升的方式生成多个决策树,能有效解决这个问题。

GBDT的主要思想是:每一次建立单个学习器时,基于以往已建立模型的损失函数的梯度下降方向优化。我们都知道损失函数越大,模型越容易出错。如果模型能够让损失函数持续下降,则说明模型在不停地往好的方向改进。而最好的下降方式就是让损失函数在其梯度的方向下降。

用一个形象的例子说明。假设小李忘记了每个月自己手机流量有多少,他想通过自己的使用情况测试总量。于是第一轮他下载了一部360MB的电影,发现还有流量;第二轮下载了一部120MB的短片,现还有流量;第三轮他又下载了一本20MB的小说,发现流量终于用完了。如果此时还没有得出结果,则可以继续迭代。每一轮迭代,都会往结果逼近一步,最终加权所有的结果就能够得出流量总共有500MB,这就是GBDT的工作方式。

GBDT目前被广泛应用于欺诈检测、交易风险评估、搜索结果排序、文本信息处理、信息流排序等领域。

03 Bagging族算法

Bagging是 Bootstrap aggregating的缩写,翻译成中文为“套袋”,其同样是一类算法的统称。这里算法的主要特点是采用随机、可被重复选择的方式挑选训练集,然后“并行”构造弱学习器,最终通过结合方式生成强学习器。在Bagging算法中,各个弱学习器之间没有依赖关系,不需要依赖别的结果,是一种“并行”结构。

与GBDT子采样不同的是,GBDT是无房会抽样,而Bagging的子采样是放回采样,也就是说,之前采集到的样本在放回后有可能再次被采集到。Bagging算法对于弱学习器没有限制,与AdaBoosting算法一样。但是一般在不剪枝决策树、神经网络等易受样本扰动的学习器上,它的效果更为明显。例如,当基学习器是决策树时,Bagging算法生成的是并行的多个决策树,此时可以不做剪枝,这样得到的学习器虽然会产生过拟合现象,但是多个学习器组合在一起,可以有效降低过拟合的风险。由于Bagging算法每次都进行采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用。但是对于训练集的拟合程度会稍差一些,偏差略大一些。

随机森林算法

随机森林算法是Bagging算法的一种特殊改进版,它是由众多采用随机抽样法生成的CART树的集成学习模式。可以这样理解:随机森林算法采用近似的样本数据同时训练很多棵决策树,最后以投票的方式选出结果。随机森林算法同样可以解决分类问题与回归问题,对于分类问题,通常采用基尼不纯度或者信息增益作为分类依据,对于回归问题,通常采用方差或者最小二乘法拟合预测数据。

随机森林算法的随机性主要体现在两方面:一方面是随机选取数据集;另一个方面是随机选取特征。其实现步骤具体包含五步:

  1. 从训练集中选取n个样本作为训练数据输入,一般n远小于整体训练集N;
  2. 选取待输入的训练集后,开始构建决策树。具体方法是,每一个分裂节点从整体的特征集M中选取m个特征,一般m远小于M;
  3. 选取基尼系数最小的特征作为分列节点,构建决策树。决策树的其他节点都采取相同的分裂规则,直到该节点的所有样本都属于同一类或者达到树的最大深度;
  4. 重复步骤2、3多次,每一次输入样本对应一棵决策树,直到模型训练完毕;
  5. 完成模型训练后,可以使用模型对新数据进行预测。例如输入一个待预测数据,然后随机森林中的所有决策树同时进行决策,采用多数投票的方式判定类别。

随机森林算法的优点只要有三个:

  1. 在集成过程中,不同决策树可以并行生成,耗时短效率高;
  2. 通过投票的方式,避免了单棵决策树过拟合的问题;
  3. 随机森林源于决策树,因此继承了决策树的众多优点。

它能够处理大量、高纬度的数据。直接把数据放进模型中,不需要预处理,通过简单调参即可得到相对不错的结果。如果项目比较紧张,需要在短时间内开发模型,或者对手头的数据不太清楚,数据量太大,随机森林都会是一个不错的选择。

缺点是:集成之后,随机森林牺牲了单棵决策树的可解释性。由于集成机制的解释性差,因此也让随机算法变成了黑盒算法,不适用于解释性强的场景。

两种方法的比较

3.png

本文内容来自《产品经理进阶:100个案例搞懂人工智能》学习笔记。

写下你的评论

发布评论 取消
500

写下你的评论

发布
500

评论

查看更多评论

删除评论

删除的评论将永久消失,确定要删除吗?

删除 取消
内容不合法,请修改后提交

只需 50 元,让专业人才为你工作

我也要赚钱,上架我的技能

绑定手机

参与互动需要先绑定手机号哦~

完善信息

参与互动需要完善个人信息哦~

参与互动需要进行审核

为了保证社区的内容质量,需要提一个问题,来证明你是可以的!

在问题审核通过后,即可开启PMCAFF所有功能~

  • 微信好友

  • 朋友圈

取消

打开 APP 阅读

推荐使用 PMCAFF APP,阅读体验更佳。

删除

删除后将永久消失,确定要删除吗?

删除 取消