Skip to content

树模型:随机森林、GBDT、XGBoost #25

Description

@Frank-LSY

RF与GBDT之间的区别

  • 组成随机森林的树可以分类树也可以是回归树,而GBDT只由回归树组成

  • 组成随机森林的树可以并行生成,而GBDT是串行生成

  • 随机森林的结果是多数表决表决的,而GBDT则是多棵树累加之和

  • 随机森林对异常值不敏感,而GBDT对异常值比较敏感

  • 随机森林是通过减少模型的方差来提高性能,而GBDT是减少模型的偏差来提高性能的

  • 随机森林不需要进行数据预处理,即特征归一化。而GBDT则需要进行特征归一化

  • 分类树使用信息增益或增益比率来划分节点;每个节点样本的类别情况投票决定测试样本的类别。

  • 回归树使用最小化均方差划分节点;每个节点样本的均值作为测试样本的回归预测值

GBDT的核心就在于,每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量

GBDT 和 XGBoost区别

  • 节点分裂的方式不同,gbdt是用的gini系数,xgboost是经过优化推导后的一截和二阶导最小值点
  • 传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。二阶导数有利于梯度下降的更快更准. 使用泰勒展开取得函数做自变量的二阶导数形式, 可以在不选定损失函数具体形式的情况下, 仅仅依靠输入数据的值就可以进行叶子分裂优化计算, 本质上也就把损失函数的选取和模型算法优化/参数选择分开了。
  • Xgboost在代价函数里加入了正则项,用于控制模型的复杂度,降低了过拟合的可能性。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。
  • Xgboost工具支持并行。并行在特征粒度上而非树粒度上。xgboost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行

Metadata

Metadata

Assignees

No one assigned

    Labels

    算法数据挖掘算法

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions