购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.4 集成算法、随机森林算法和梯度增强机算法

集成算法旨在通过组合几种效果相对偏弱的算法,来提升机器学习模型的预测效果。实际问题中,集成算法往往表现出色,是常用的功能强大的算法之一,下面详细讨论集成算法和典型的具体算法的原理。

4.4.1 集成算法

集成算法是一个大的概念,其主要原理是组合一系列较弱的分类算法形成一个新的算法。根据PAC理论框架,新算法的效果一定会得到提升。例如,对于一个分类问题,首先采用几种不同的简单算法进行分类,再使用之前讨论过的逻辑回归和决策树等算法,然后对所有简单算法给出的分类结果进行投票,决定最终的分类结果。

集成算法中常用的算法有两种:Bagging和Boosting。

Bagging算法的运用过程如下。

(1)假设原始数据有n个数据点,首先从原始训练数据中抽取多个训练集,每个训练集的样本大小都为n,训练集来自从原始数据集中采用自助法(Bootstrapping)有放回的抽样得到的n个数据点。如果进行k轮抽取,可以得到k个不完全相同的测试样本集。需要注意的是,由于采用了有放回的抽样,每个自助训练集中可能有相同的数据点,但同时每个自助训练集中,平均有36.8%的原始数据缺失。这个特性保证了每个自助训练集虽然样本大小和原始数据相同,但它们平均和原始样本有36.8%的不同,因而彼此之间也不会完全相同。

36.8%这个数值,是基于一个简单的概率计算得出的。对于原始数据中的任意一个数据点,每次不被选中的概率为

如果进行连续n次抽取,那么同一个数据点都不被选中的概率为

当n足够大时,根据微积分可以算出,这个概率趋向于0.368。

(2)选定一个基本算法,针对每个自助训练集得出一个模型结果,k个训练集会得出k个模型结果。如果是分类模型,模型结果为预测的类别;如果是回归模型,模型结果为预测的连续数值。

(3)对k个模型结果进行投票,得票最多的结果为最终结果。对于回归模型,则计算所有模型的平均结果作为最终结果。

与Bagging算法的并行化思想不同,Boosting是序列化的算法,每个新的模型会试图纠正之前模型的预测误差。Boosting算法具体的实现机制有多种,其中一种方法的运用过程如下。

(1)选定一个训练数据集,所有相关模型都使用相同的数据集;数据集中每个数据点都给予相同的权重;选定一个基础模型算法。

(2)用基础模型第一次预测训练数据。

(3)根据第一次预测的误差,给予数据集中每个数据点不同的权重。数据点误差越大,权重越高。

(4)以此类推,模型不断训练权重被调整过的数据集,每个新模型都对之前模型误判的数据给予更多的重视。

(5)最终的模型结果是所有模型的加权结果,因此效果更加理想。

Bagging算法中具有代表意义的是随机森林算法,而Boosting算法中具有代表意义的是梯度增强机(Gradient Boosting Machine)算法,下面主要介绍这两种算法。

4.4.2 随机森林算法

随机森林算法是一种Bagging算法,应用的基础模型是决策树。单独使用决策树算法容易造成过拟合,而随机森林算法可以有效地解决这个问题,极大地提升模型效果。结合上节的Bagging算法运用过程,随机森林模型中的每一棵树的建立由以下几步组成。

(1)从训练数据中获取一份自助随机样本,随机样本的大小和训练数据的大小一致。

(2)如果数据有M个特征变量,在建立决策树的每个节点的过程中,随机挑选m个变量(m≪M),从这m个变量中选取最佳的变量作为该节点的判断依据。其中m的具体大小可以由验证数据来决定,其最佳值的范围也比较广。通常情况下,对于分类问题,m可以取M的平方根,对于回归问题,m可以取M的1/3。

随机森林模型效果的提升主要依赖以下两点。

(1)随机森林中树与树之间的相关性。相关性越小,总体效果越好。Bootstrapping算法和m个变量的选取都是为了减小相关性。

(2)随机森林中每棵树各自的预测能力。单棵树的预测能力越好,模型总体效果越好。

以上两个特点是相互依赖的,如减小m的大小有助于降低树与树之间的相关性,但是也会降低单棵树的预测能力。增加单棵树的深度会增加预测能力,但又会增加树与树之间的相关性。因此实践中选取最佳的超参数,需要用交叉验证等技术来确定。另外,随机森林不容易过拟合,因此在确定树的具体数量时可以尽可能大。

随机森林算法的交叉验证,其实可以用自身的out-of-bag(oob)误差估计来代替。在每一棵树的训练过程中,有大约36.8%的数据不会被挑选到,因此对于任何一个数据点而言,在大约36.8%的决策树中都不会被用于训练。或者说,对于任意一个数据点,可以没有偏差地获得该数据在36.8%的决策树中的预测结果。最终,这些无偏差的预测结果同样可以根据每一棵树的结果,采用投票方式来获得最终的预测结果。

4.4.3 梯度增强机算法

Boosting算法最早的具体实现形式是自适应算法(Adaptive Boosting,AdaBoost),梯度增强机是AdaBoost在统计框架下的一个衍生。AdaBoost和梯度增强机使用的基础模型都是决策树,但梯度增强机中的决策树形式更加简单,只需要采用回归决策树对连续数值预测。需要注意的是,梯度增强机使用回归决策树作为基础模型和预测问题本身是分类问题或是回归问题没有关系,而是由梯度增强机的性质决定。

通常讨论的梯度下降,是指在参数空间寻找最佳参数,从而使模型的损失函数降低。在梯度增强机的运用中,梯度下降则是在损失函数空间中寻找最佳方向,例如,对于回归问题,寻找损失函数梯度最佳方向,可以使当前所有迭代模型的预测结果和目标变量的残差变得最小。

在梯度增强机的实现过程中,假设经过m次迭代以后的预测函数为F m ( x),相应的损失函数为L ( y,F m ( x ) )。为了达到使损失函数减小速度最快的目的,应沿着损失函数的梯度下降方向构造第m+1次迭代子模型函数,此时的梯度下降方向为

如果损失函数采用平方差的形式,则

对应的梯度下降方向为

因此在使用决策树进行第m+1次迭代时,可以把上式作为待预测的目标变量(这意味着,使用L2损失函数即平方差函数时,新的目标变量即为最近一次预测函数和原始目标变量的残差)。在获得新的决策树模型后,假设数据的新预测值为h(x),那么经过第m+1次迭代后,总的预测函数应为

式中,β m+ 1 为每一次迭代的步长,可以通过最小二乘法找到每一次迭代的最佳步长,即下式的最优解:

为了防止过拟合,还可以让步长乘以一个学习速率λ,λ取值为0~1,从而起到降低收敛速率的作用,防止过拟合,即

随机森林算法的Bagging过程是一个降低方差的过程,梯度增强机算法则对减小模型的方差和偏差均有帮助,因此效果通常更加明显。但是,和随机森林不会过拟合的特性相比,梯度增强机则容易造成过拟合,因此实践中一定要通过交叉验证等手段加以检查和预防。 tPvv23n6jzCnhmqLU7FjXIeREhdCmqJbKF8HNdUw4rmUPdiHSfcjGRWK42VMIp7w

点击中间区域
呼出菜单
上一章
目录
下一章
×