最常用的三种集成的决策树算法

集成学习

常见的集成学习框架有三种:Bagging、Boosting、和Stacking。三种集成学习框架在基学习器的产生和综合结果的方式上会有些区别。

1.Bagging

Bagging全称叫Bootstrap aggregating,每个基学习器都会对训练集进行有放回抽样得到子训练集,比较著名的采样法为0.632自助法。每个基学习器基于不同子训练集进行训练,并综合所有基学习器的预测值得到最终的预测结果。Bagging常用的综合方法是投票法,票数最多的类别为预测类别。

 2.Boosting

 Boosting训练过程为阶梯状,基模型的训练是有顺序的,每个基模型都会在前一个基模型学习的基础上进行学习,最终综合所有基模型的预测值产生最终的预测结果,用的比较多的综合方法为加权法。

3.Stacking

Stacking是先用全部数据训练好基模型,然后每个基模型都对每个训练样本进行的预测,其预测值将作为训练样本的特征值,最终会得到新的训练样本,然后基于新的训练样本进行训练得到模型,然后得到最终预测结果。

 

集成学习优于单个学习器的原因在以下三点:

1。训练样本可能无法选择出最好的单个学习器,由于没法选择出最好的学习器,所以干脆结合起来一起用;

2.假设能找到最好的学习器,但由于算法运算的限制无法找到最优解,只能找到次优解,采用继承学习可以弥补算法的不足。

3.可能算法无法得到最优解,而集成学习能够得到近似解。比如最优解是一条对角线,而单个决策树得到的结果只能是平行于坐标轴的,但是集成学习可以去拟合这条对角线。

偏差与方差 

1.集成学习的偏差与方差

偏差描述的是预测值和真实值之差;

方差描述的是预测值作为随机变量的离散程度。

我们常说集成学习中的基模型是弱模型,通常来说弱模型是偏差高(在训练集上准确度低)方差小(防止过拟合能力强)的模型。但是,并不是所有集成学习框架中的基学习器都是弱模型。Bagging和Stacking中的基模型为强模型(偏差低方差高)。

在Bagging和Boosting框架中,通过计算基模型的期望和方差可以得到模型整体的期望和方差。为了简化模型,假设基模型的权重r、标准差\sigma ^{}、以及两两之间的相关系数\rho相等。由于Bagging和Boosting的基模型都是线性组成的,则有:

模型总体期望:

模型总体方差:

2.Bagging的偏差与方差

 对于Bagging,每个基模型的权重等于1/m且期望近似相等(子训练集都是从原训练集中进行抽样的),因此可以进一步简化得到:

通过上式可以看到:

(1)整体模型的期望等于基模型的期望,这也就意味着整体模型的偏差和基模型的偏差近似。

(2) 整体模型的方差小于等于基模型的方差啊,当且仅当相关性为1时取等号,随着基模型数量增多,整体模型的方差减少,从而防止过拟合的能力增强,模型的准确度得到提高。但是,模型的准确度一定会无限逼近于1吗?并不一定,当基模型数增加到一定程度时,方差公式第一项的改变对整体方差的作用很小,防止过拟合的能力达到了极限,这便是准确度的极限了。

对此已经了解了为什么Bagging中的基模型一定要为强模型,如果Bagging使用弱模型则会导致整体模型的偏差提高,而准确度降低。

Random Forest是经典的基于Bagging框架的模型,并在此基础上通过引入特征采样和样本采样来降低基模型间的相关性,在公式中显著降低方差公式中的第二项,略微升高第一项,从而使得整体降低模型整体方差。

3.Boosting的偏差与方差

对于Boosting来说,基模型的训练集抽样是强相关的,那么模型的相关系数近似于1,因此可将Boosting化简公式为:

通过观察整体方差的表达式发现:

(1)整体模型的方差等于基模型的方差,如果基模型不是弱模型,其方差相对较大,这将导致整体模型的方差很大,即无法达到防止过拟合的效果。因此,Boosting 框架中的基模型必须为弱模型。

(2)此外 Boosting 框架中采用基于贪心策略的前向加法,整体模型的期望由基模型的期望累加而成,所以随着基模型数的增多,整体模型的期望值增加,整体模型的准确度提高。

基于 Boosting 框架的 Gradient Boosting Decision Tree 模型中基模型也为树模型,同 Random Forrest,我们也可以对特征进行随机抽样来使基模型间的相关性降低,从而达到减少方差的效果。

4.小结

可以使用模型的偏差和方差来近似描述模型的准确度;

(1)对于 Bagging 来说,整体模型的偏差与基模型近似,而随着模型的增加可以降低整体模型的方差,故其基模型需要为强模型;

(2)对于 Boosting 来说,整体模型的方差近似等于基模型的方差,而整体模型的偏差由基模型累加而成,故基模型需要为弱模型。

Random Forest

RF算法由很多决策树组成,每一颗决策树之间没有关联。建立完森林后,当有新样本进入时,每棵决策树都会分别进行判断,然后基于投票法给出分类结果。

1.思想

RF是Bagging的扩展变体,它在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机特征选择,因此RF包括四个部分:

(1)随机选择样本(放回抽样)

(2)随机选择特征

(3)构建决策树

(4)随机森林投票(平均)

随机选择样本和Bagging相同,采用的是Bootstrap自主采样法;随机选择特征是指在每个节点在分裂过程中都是随机选择特征的(区别与每棵树随机选择一批特征)

这种随机性导致随机森林的偏差会有稍微的增加(相比于单棵不随机树),但是由于随机森林的“平均”特性,会使得它的方差减小,而且方差的减小补偿了偏差的增大,因此总体而言是更好的模型。

随机采样由于引入了两种采样方法保证了随机性,所以每棵树都是最大可能的进行生长就算不剪枝也不会出现过拟合。

2.优缺点

优点:(1)在数据集上表现良好,相对于其他算法有较大的优势。

(2)易于并行化,在大数据集上有很大的优势。

(3)能够处理高维数据,不用做特征选择。

AdaBoost

AdaBoost(Adaptive Boosting,自适应增强),其自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。

1.思想

Adaboost迭代算法有三步:

1.初始化训练样本的权值分布,每个样本具有相同权重;

2.训练弱分类器,如果样本分类正确,则在构造下一个训练集中,它的权值就会被降低;反之提高。用更新过的样本集去训练下一个分类器。

3.将所有弱分类器组合成强分类器,各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,降低分类误差率大的弱分类器的权重。

2.重点

(1)损失函数

Adaboost 模型是加法模型,学习算法为前向分步学习算法,损失函数为指数函数的分类问题。

加法模型:最终的强分类器是由若干个弱分类器加权平均得到的。

前向分布学习算法:算法是通过一轮轮的弱学习器学习,利用前一个弱学习器的结果来更新后一个弱学习器的训练集权重。第 k 轮的强学习器为:

损失函数为:

 利用前向分布学习算法的关系可以得到损失函数为:

 

G(x) ,可以得到: 

 (2)正则化

为了防止 Adaboost 过拟合,通常也会加入正则化项,这个正则化项通常称为步长(learning rate)。定义为 v,对于前面的弱学习器的迭代

 

3.优缺点

优点

  1. 分类精度高;

  2. 可以用各种回归分类模型来构建弱学习器,非常灵活;

  3. 不容易发生过拟合。

缺点

  1. 对异常点敏感,异常点会获得较高权重。

GBDT

GBDT(Gradient Boosting Decision Tree)是一种迭代的决策树算法,该算法由多棵决策树组成,属于Boosting策略,GBDT是被公认的泛化能力较强的算法。

1.思想

GBDT 由三个概念组成:Regression Decision Tree(即 DT)、Gradient Boosting(即 GB),和SHringkage(一个重要演变)

2.回归树

如果认为 GBDT 由很多分类树那就大错特错了(虽然调整后也可以分类)。对于分类树而言,其值加减无意义(如性别),而对于回归树而言,其值加减才是有意义的(如说年龄)。GBDT 的核心在于累加所有树的结果作为最终结果,所以 GBDT 中的树都是回归树,不是分类树,这一点相当重要。

 3.梯度迭代

GBDT 的每一棵树都是以之前树得到的残差来更新目标值,这样每一棵树的值加起来即为 GBDT 的预测值。

模型的预测值可以表示为:

但是,基于残差GBDT容易对异常值敏感。所以一般回归类的损失函数会用绝对损失或者Huber损失函数来代替平方损失函数。

GBDT 的 Boosting 不同于 Adaboost 的 Boosting,GBDT 的每一步残差计算其实变相地增大了被分错样本的权重,而对与分对样本的权重趋于 0,这样后面的树就能专注于那些被分错的样本。

4.优缺点

优点

  1. 可以自动进行特征组合,拟合非线性数据;

  2. 可以灵活处理各种类型的数据。

缺点

  1. 对异常点敏感。

5.与Adaboosting对比

相同:

  1. 都是 Boosting 家族成员,使用弱分类器;

  2. 都使用前向分布算法;

不同:

  1. 迭代思路不同:Adaboost 是通过提升错分数据点的权重来弥补模型的不足(利用错分样本),而 GBDT 是通过算梯度来弥补模型的不足(利用残差);

  2. 损失函数不同:AdaBoost 采用的是指数损失,GBDT 使用的是绝对损失或者 Huber 损失函数;

本文引用GZH:机器学习算法那些事的文章

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值