[面试笔记] 决策树、随机森林、GBDT、XGBoost

摘要

本文主要分享了 决策树、随机森林、GBDT、XGBoost 四种模型的原理


决策树

决策树模型 ID3/C4.5/CART算法比较 :
https://www.cnblogs.com/wxquare/p/5379970.html
http://leijun00.github.io/2014/09/decision-tree/
http://blog.csdn.net/baimafujinji/article/details/51724371

对于决策树,李航老师在《统计学习方法》里有详细的解释

分为ID3, C4.5, CART三个基本的树生成算法

  • ID3 是一个多叉树,使用了熵作为信息增益,不能处理连续值,而且有偏向性,倾向于选择类别较多的特征,因为IG相对偏大

  • C4.5 是一个多叉树,使用了熵计算信息增益比,信息增益比进行子节点分裂,对类别较多的特征进行惩罚

  • CART是一棵二叉树,对分类和回归都适用,对于回归树用平方误差最小化,对分类树用基尼指数进行特征选择。分类时和ID3、C4.5类似;回归时会遍历变量j, 对固定的切分变量扫描切分点s,计算MSE,选择使得MSE最小的(j,s)对。

  • CART之所以使用Gini指数是因为熵需要计算log,速度较慢


随机森林(Bagging进化版)

RF使用了CART决策树作为弱学习器,并行的训练出多棵互相独立的树,最后通过投票得出结果

  • RF有两个随机采样过程:
    • 行采样:采用有放回的方式,也就是在采样得到的样本集合中,可能有重复的样本
    • 列采样: 从M个feature中,选择m个(m << M)

通过样本的随机采样和特征的随机采样,RF的鲁棒性非常好


传统Boosting 与 GradientBoost

梯度提升树(GBDT)原理小结:
https://www.cnblogs.com/pinard/p/6140514.html

  • 原始的Boost算法是在算法开始的时候,为每一个样本赋上一个权重值,初始的时候,大家都是一样重要的。

  • 在每一步训练中得到的模型,会使得数据点的估计有对有错,我们就在每一步结束后,增加分错的点的权重,减少分对的点的权重,这样使得某些点如果老是被分错,那么就会被“严重关注”,也就被赋上一个很高的权重。

  • 然后等进行了N次迭代(由用户指定),将会得到N个简单的分类器(basic learner),然后我们将它们组合起来(比如说可以对它们进行加权、或者让它们进行投票等),得到一个最终的模型

  • 而Gradient Boost与传统的Boost的区别是,每一次的计算是为了减少上一次的残差(residual),而为了消除残差,我们可以在残差减少的梯度(Gradient)方向上建立一个新的模型。

  • GBDT每一步都通过上一时刻的输出加上当前时刻的负梯度来得到一个Loss更小的强模型。对于回归而言,就直接是算梯度就行,对于分类而言,需要Logistics变换


XGBoost

论文: https://homes.cs.washington.edu/~tqchen/pdf/BoostedTree.pdf
Slide : https://homes.cs.washington.edu/~tqchen/pdf/BoostedTree.pdf
总结:http://blog.csdn.net/sb19931201/article/details/52557382

  • 根据GBDT的原理,为了在每次迭代中找到负梯度ft(xi),我们需要通过求导得到负梯度

  • 然而XGB不通过求导,而是通过将损失函数(MSE或Logistics)进行泰勒展开,得到一次和二次导数项,得到当前时间步的梯度值。问题转化为如何使得当前梯度值最大,目标函数变为一次、二次导数之和

  • 然后就要开始建树了,建树的目标是使得当前梯度最大

  • 为了防止过拟合,在当前目标函数(一次、二次导数之和)的基础上加入了正则项,包括叶节点个数和对叶节点得分score的L2正则

  • The Structure Score 这个score你可以理解成类似于信息增益的一个指标,在切分点查找算法中用到

  • 切分点查找算法(贪心算法) ,需要扫描所有排序过的特征的得分,得出最优切分点

这里写图片描述

  • 最后通过缩减因子(类似学习率),减小本次迭代中变化的幅度,防止过拟合, 通过这种方式来减小每棵树的影响力,给后面的树提供空间去优化模型

  • 全过程如下:

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值