集成学习(ensemble method)--基于树模型

一、Boosting算法

Boosting集成分类器包含多个非常简单的成员分类器,这些成员分类器的性能仅好于随机猜想,常被称为弱学习机。典型的弱学习机的例子就是单层决策树。Boosting算法主要针对难以区分的样本,弱学习机通过在分类错误的样本上进行学习来提高继承分类器的分类性能。Boosting与Bagging不同,在Boosting的初始化阶段采用的是无返回抽样从训练样本中随机抽取一个子集,而Bagging采用的是有放回的抽取。Boosting的过程由四个步骤组成:

1、从训练集D中以无放回抽样方式随机抽取一个训练子集d1,用于弱学习机C1的训练。

2、从训练集D中以无放回抽样方式随机抽取一个训练子集d2,并将C1中误误分类样本的50%加入到训练集中,训练得到弱学习机C2。

3、从训练集D中抽取C1和C2分类结果不一致的训练样本生成训练样本集d3,用d3来训练第三个弱学习机C3。

4、通过多数投票来组合弱学习机C1、C2和C3。

Boosting与Bagging模型相比,Boosting可以同时降低偏差也方差,Bagging只能降低模型的方差。在实际应用中,Boosting算法也还是存在明显的高方差问题,也就是过拟合。

二、AdaBoost算法

AdaBoost算法与Boosting算法不同,它是使用整个训练集来训练弱学习机,其中训练样本在每次迭代的过程中都会重新被赋予一个权重,在上一个弱学习机错误的基础上进行学习来构建一个更加强大的分类器。

实例:一文搞懂AdaBoost集成算法

参数调节的一般方法

之前说过,我们要调节的参数有两种:树参数和boosting参数。learning rate没有什么特别的调节方法,因为只要我们训练的树足够多learning rate总是小值来得好。

虽然随着决定树的增多GBM并不会明显得过度拟合,高learing rate还是会导致这个问题,但如果我们一味地减小learning rate、增多树,计算就会非常昂贵而且需要运行很长时间。了解了这些问题,我们决定采取以下方法调参:

  1. 选择一个相对来说稍微高一点的learning rate。一般默认的值是0.1,不过针对不同的问题,0.05到0.2之间都可以
  2. 决定当前learning rate下最优的决定树数量。它的值应该在40-70之间。记得选择一个你的电脑还能快速运行的值,因为之后这些树会用来做很多测试和调参。
  3. 接着调节树参数来调整learning rate和树的数量。我们可以选择不同的参数来定义一个决定树,后面会有这方面的例子
  4. 降低learning rate,同时会增加相应的决定树数量使得模型更加稳健

控制变量法进行调参,需要注意一下调参顺序,对结果影响最大的参数应该优先调节

Reference:

原文地址:https://www.cnblogs.com/ranjiewen/p/6782706.html