XGB算法梳理

作者: 凌霄文强 | 来源:发表于2019-04-09 10:48 被阅读0次

算法原理

XGB(extreme gradient boosting)是GBDT的一种工业实现,也是通过不断增加新树,拟合伪残差去降低损失函数。其拟合过程是使用的损失函数的二阶泰勒展开,这是和GBDT的一个区别。

损失函数

L(\theta)=\sum_{i}\left(y_{i}-\hat{y}_{i}\right)^{2}

分裂结点算法

  • 精确的贪心法
    枚举,时间开销大
  • 近似的贪心

正则化

\Omega(f)=\gamma T+\frac{1}{2} \lambda \sum_{j=1}^{T} w_{j}^{2}
叶子节点数和叶节点权重

对缺失值处理

XGB中允许缺失值存在。在找分裂点时,不遍历迭代缺失样本,减少计算,分配样本时,缺失的样本同时分到左右子树,计算哪边的增益大就自动分到哪边去。但在测试时如果遇到缺失值,会分到右子树。

优缺点

优点(快速高效可容错)

  • 支持线性分类器(相当于引入L1 L2正则惩罚项的LR和线性回归,目标函数公式=误差平方和+正则项,似LR)
  • 代价函数用了二阶Talor展开,引入一阶导和二阶导,提高模型拟和的速度(损失函数:一个样本的误差;代价函数:整个训练集上所有样本误差的平均;目标函数:代价函数 + 正则化项)
  • 可以给缺失值自动划分方向;
  • 同RF,支持样本(行)随机抽取,也支持特征(列)随机抽取,降低运算,防过拟合;
  • 代价函数引入正则化项,控制模型(树)复杂度,
    正则化项包含全部叶子节点个数,每个叶子节点得分的L2模的平方和(代表叶子节点权重的影响)
    从贝叶斯(先验累积思想)方差角度考虑,正则降低了模型的方差,防过拟和;
  • 每次迭代后为叶子分配结合学习速率,减低每棵树权重,减少每棵树影响,灵活调整后面的学习空间;
  • 支持并行,不是树并行,是把特征值先预排序,存起来,可以重复并行使用计算分裂点;
  • 分裂依据分开后与未分前的差值增益,不用每个节点排序算增益,减少计算量,可以并行计算;
  • 可以引入阈值限制树分裂,控制树的规模。

缺点:

  • 容易过拟合;
  • 调参困难。

应用场景

分类,回归

sklearn参数

  • learning_rate:学习率
  • n_estimators:多少棵树
  • max_depth=5:树最大深度
  • min_child_weight:最小权重系数
  • gamma=0:惩罚系数(力度)
  • lambda:正则化
  • alpha:正则化
  • subsample:随机选样本的比例
  • colsample_bytree:随机选特征
  • objective = 'binary:logistic':损失函数loss function,求这个函数的一阶二阶导
  • scale_pos_weight:要不要指定一个均衡的树
  • seed=7 #随机种子,每次复现都是一样的

相关文章

  • XGB算法梳理

    算法原理 XGB(extreme gradient boosting)是GBDT的一种工业实现,也是通过不断增加新...

  • XGB简介

    之前分别简要讲了RF与GBDT的原理,现在终于要到XGB,这个算法之前也是困扰了我好久,现在对它进行一个大概的梳理...

  • 常用的算法总结

    风控模型常用的算法总结 一、常用算法 监督算法 随机森林采用投票机制,xgb则是弱学习机的集合。随机森林关注方差,...

  • 集成算法-XGBoost

    前面我们已经详细介绍了集成算法中的Adaboost和GBDT算法,今天我们继续来介绍一下目前最火的集成算法-XGB...

  • Adaboost、GBDT、xgboost算法调参

    【机器学习】GBDT梯度下降提升算法及参数寻优实例 - brucewong0516的博客 - CSDN博客 XGb...

  • 面试题:逻辑回归与朴素贝叶斯有什么区别

    关注微信公众号"机器学习算法面试"获取更多 问题背景 面试问的啥两个算法的对比比较多,比如你做了GBDT和XGB,...

  • 面试算法知识梳理(5) - 数组第二部分

    面试算法代码知识梳理系列 面试算法知识梳理(1) - 排序算法面试算法知识梳理(2) - 字符串算法第一部分面试算...

  • 面试算法知识梳理(1) - 排序算法

    面试算法代码知识梳理系列 面试算法知识梳理(1) - 排序算法面试算法知识梳理(2) - 字符串算法第一部分面试算...

  • 面试算法知识梳理(4) - 数组第一部分

    面试算法代码知识梳理系列 面试算法知识梳理(1) - 排序算法面试算法知识梳理(2) - 字符串算法第一部分面试算...

  • 面试算法知识梳理(3) - 字符串算法第二部分

    面试算法代码知识梳理系列 面试算法知识梳理(1) - 排序算法面试算法知识梳理(2) - 字符串算法第一部分面试算...

网友评论

    本文标题:XGB算法梳理

    本文链接:https://www.haomeiwen.com/subject/agbviqtx.html