机器学习七之随机森林、Adaboost、GBDT

目录

十七、随机森林、Adaboost、GBDT、XGBoost、LightBGM

一、随机森林

二、Adaboost 

三、GBDT  (梯度提升树)  

四、GBDT和随机森林

 


十七、随机森林、Adaboost、GBDT

一、随机森林


        随机森林在使用CART决策树作为弱学习器的基础上,决策树的建立做了改进,对于普通的决策树,我们会在节点上所有的n个样本特征中选择一个最优的特征来做决策树的左右子树划分,但是RF通过随机选择节点上的一部分样本特征,这个数字小于n,假设为nsub,然后在这些随机选择的nsub个样本特征中,选择一个最优的特征来做决策树的左右子树划分。这样进一步增强了模型的泛化能力。一般nsub = log2(n); 
        步骤:
       1.  样本的随机:从样本集中用(有放回的)Bootstrap随机选取n个样本
       2.  特征的随机:从所有属性中随机选取K个属性,选择最佳分割属性作为节点建立CART决策树
       3.  重复以上两步m次,即建立了m棵CART决策树
       4.  这m个CART形成随机森林,通过投票表决结果,决定数据属于哪一类(投票机制有一票否决制、少数服从多数、加权多数)
       优点:
      1) 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。个人觉得这是的最主要的优点。
      2) 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。
      3) 在训练后,可以给出各个特征对于输出的重要性
      4) 由于采用了随机采样,训练出的模型的方差小,泛化能力强。
      5) 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。
      6) 对部分特征缺失不敏感。
      缺点:
      1)在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
      2) 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。

二、Adaboost 

       属于Boosting,原始的AdaBoost算法是在算法开始的时候,为每一个样本赋上一个权重值,初始的时候,大家都是一样重要的。在每一步训练中得到的模型,会使得数据点的估计有对有错,我们就在每一步结束后,增加分错的点的权重,减少分对的点的权重,这样使得某些点如果老是被分错,那么就会被“重点关注”,也就被赋上一个很高的权重。然后等进行了N次迭代(由用户指定),将会得到N个简单的分类器(basic learner),然后我们将它们组合起来(比如说可以对它们进行加权、或者让它们进行投票等),得到一个最终的模型。

步骤一:首先,初始化训练权重分布,每一个训练样本最开始时都是被赋予相同的权值:1/N。

                                       \large D_i = (w_{i1},w_{i2},...,w_{iN}),w_{ij} = 1/N, i=1,2,...,N
步骤二:进行多轮迭代,用m = 1,2,...,M表示迭代的第多少轮

a. 使用具有权值分布的训练数据集学习,得到基本的分类器(选取让误差率最低的与之来设计基本分类器):

                                               \large G_m(x): \textit{X}\rightarrow \left \{ -1,+1 \right \}                                           
           b. 计算Gm(x)在训练数据集上的分类误差率   
                                                    
           由上述式子可知,Gm(x)在训练数据集上的误差率em就是被Gm(x)误分类样本的权值之和。
           c. 计算Gm(x)的系数,am表示Gm(x)在最终分类器中的重要程度(目的:得到基本分类器在最终分类器中所占的权重):

                                                       \large a_m = \frac{1}{2} log \frac{1-e_m}{e_m}
            由上述式子可知,em <= 1/2时,am >= 0,且am随着em的减小而增大,意味着分类误差率越小的基本分类器在最终分类器中的作用越大。
           d. 更新训练数据集的权值分布(目的:得到样本的新的权值分布),用于下一轮迭代
                                                 
            使得被基本分类器Gm(x)误分类样本的权值增大,而被正确分类样本的权值减小。就这样,通过这样的方式,AdaBoost方法能“重点关注”或“聚焦于”那些较难分的样本上。其中,Zm是规范化因子,使得Dm+1成为一个概率分布:
                                                         
步骤3. 组合各个弱分类器

                                              \large G(x) = sign(f(x)) = sign\left ( \sum_{m=1}^{M} a_m G_m(x)) \right )

三、GBDT  (梯度提升树)  

   
      属于Boosting的优秀代表, 对函数残差近似值进行一阶梯度下降, 用CART回归树做学习器, 集成为回归模型; 
 


 
      GBDT(Gradient Boosting Decison Tree)中的树都是回归树,GBDT用来做回归预测,调整后也可以用于分类(设定阈值,大于阈值为正例,反之为负例),可以发现多种有区分性的特征以及特征组合。GBDT是把所有树的结论累加起来做最终结论的,GBDT的核心就在于,每一棵树学的是之前所有树结论和的残差(负梯度),这个残差就是一个加预测值后能得真实值的累加量。比如A的真实年龄是18岁,但第一棵树的预测年龄是12岁,差了6岁,即残差为6岁。那么在第二棵树里我们把A的年龄设为6岁去学习,如果第二棵树真的能把A分到6岁的叶子节点,那累加两棵树的结论就是A的真实年龄;如果第二棵树的结论是5岁,则A仍然存在1岁的残差,第三棵树里A的年龄就变成1岁,继续学。 Boosting的最大好处在于,每一步的残差计算其实变相地增大了分错instance的权重,而已经分对的instance则都趋向于0。这样后面的树就能越来越专注那些前面被分错的instance。

四、GBDT和随机森林


      相同点: 
      1、都是由多棵树组成 
      2、最终的结果都是由多棵树一起决定
      不同点: 
      1、随机森林的树可以是分类树,也可以是回归树;而GBDT只由回归树组成 
      2、随机森林的树可以并行生成;GBDT只能是串行生成 
      3、随机森林采用多数投票等;GBDT则是将所有结果累加起来,或者加权累加起来 
      4、随机森林对异常值不敏感,GBDT对异常值非常敏感 
      5、随机森林对训练集一视同仁,GBDT是基于权值的弱分类器的集成 
      6、随机森林是通过减少模型方差提高性能,GBDT是通过减少模型偏差提高性能

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值