GBDT vs RandomForest

GBDT和随机森林都是集成算法,主要区别在于GBDT是boosting,通过减少偏差来提升模型性能,而随机森林是bagging,通过减少方差。GBDT适合稠密数据,对异常值敏感,而随机森林对异常值不敏感,适用于高维特征。两者在特征归一化、基模型选择及优化策略上有不同考虑,如GBDT通常用回归树,而随机森林可用分类或回归树。
摘要由CSDN通过智能技术生成

1 随机森林:

  • bagging算法,可并行
  • 适用于高维特征的数据,特征少的时候不适用
  • 随机性体现在两个方面:
    1:每个节点都随机从M个特征中选择m个特征,m应远小于M
    2:随机从样本中以有放回抽样的方式,抽样N次,形成训练集。未抽到的作为验证集。
  • 每棵树都完整成长而不会剪枝。
  • 对异常数据比较鲁棒
  • 适用于分类,回归效果可能不好,因为他无法输出连续的数据。
  • 减少的是模型的方差

2 GBDT

GBDT(Gradient Boosting Decision Tree),即梯度提升决策树。

  • boosting 算法,学习前一轮的残差
  • 每一轮训练一棵树,训练轮数=基模型个数
  • 训练时串行,速度慢。
  • 预测阶段的计算速度快,可并行。
  • 在分布稠密的数据集上,泛化能力和表达能力都很好。
  • 不适用于高维数据或者稀疏数据。
  • 决策树可解释性好。
  • 模型拟合效果好,减少的是偏差
  • 因为会过拟合,所以对异常数据比较敏感
  • 为防止过拟合,会控制控制树的深度

3 异同点

  1. 相同点:
  • 都是集成算法
  • 基模型都是树
  1. 不同点:
  • 随机森林是bagging,可并行; GBDT是boosting,需串行
  • 随机森林是投票,GBDT是累加
  • 随机森林对异常值不敏感,GBDT对异常值比较敏感
  • 随机森林减少模型方差,GBDT减少模型偏差

问题汇总:

GBDT减少偏差 vs 随机森林减少方差

GBDT
GBDT降低偏差的原理:
GBDT每一轮拟合的是前一轮的残差,所以可以更好的拟合原数据,有效减少偏差。
因为GBDT拟合效果好,为了防止过拟合,我们就选择深度较浅的树,选择更简单的分类器。

随机森林
随机森林降低方差的原理:
假设 X 1 , X 2 , . . . , X n X_1,X_2,...,X_n X1,X2,...,Xn独立同分布,均服从正太分布 N ( μ , σ ) N(\mu,\sigma) N(μ,σ),请问 X ‾ = X 1 + X 2 + . . . + X n n \overline{X}=\frac{X_1+X_2+...+X_n}{n} X=nX1+X2+...+Xn服从什么分布?
答: X ‾ \overline{X} X的分布为 N ( μ , σ / n ) N(\mu,\sigma/\sqrt{n}) N(μ,σ/n )。均值后,方差变小了,这就是随机森林减少方差的原理。
因为随机森林可以有效降低方差,所以我们希望每棵树的拟合效果强一些,预测的偏差小一些,所以我们会倾向于选择深度比较深的树。所以随机森林算法中,会让树完全生长。

特征归一化问题

参考资料
chentq说xgboost不需要做归一化:https://github.com/dmlc/xgboost/issues/357
xgboost不要做归一化的解释:https://stats.stackexchange.com/questions/353462/what-are-the-implications-of-scaling-the-features-to-xgboost
机器学习 需要和不需要做特征归一化的情况总结:https://blog.csdn.net/baoyan2015/article/details/111177161

randomforest不用做特征归一化

当需要计算距离的时候,或需要更新的梯度跟特征值有关系的时候需要做归一化。否则,就不用。比如KNN,SVM,神经网络模型就需要做归一化,而决策树,朴素贝叶斯就不用
randomforest的基模型是树,且树跟树之间是独立的。构造树时,特征分割点的选择,与特征值的大小无关,只跟特征的分布有关。所以不需要做归一化。

xgboost要不要归一化?

xgboost的基模型也是树,不过树之间不是独立的,当前树学习的是上一轮的残差。xgboost使用的是梯度提升方法。损失函数中增加了正则化项,即叶子节点权重的 L 2 L_2 L2范数和。
按理说,梯度更新时,会受叶子节点权重 尺度的影响,那么为什么xgboost不必做特征归一化呢?
原因是因为叶子节点权重就是梯度,预测值=所有对应叶子节点权重的和。叶子节点权重对梯度的影响就是y值大小对梯度的影响。跟特征值是否归一化无关。特征值大,y还是那样大,特征值小,y还是那样大。所以特征值不必做归一化。
当然,如果想做归一化也是可以的,理论上讲好像没太大区别。但是在实践上,好像归一化后效果会好一些。玄学??&#x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值