0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过学习PPT地址和xgboost导读和实战地址来对xgboost原理和应用分析

c5Gh_DatamingHa 2018-01-02 10:18 次阅读

1、背景

关于xgboost的原理网络上的资源很少,大多数还停留在应用层面,本文通过学习陈天奇博士的PPT地址和xgboost导读和实战地址,希望对xgboost原理进行深入理解。

2、xgboost vs gbdt

说到xgboost,不得不说gbdt。了解gbdt可以看我这篇文章地址,gbdt无论在理论推导还是在应用场景实践都是相当完美的,但有一个问题:第n颗树训练时,需要用到第n-1颗树的(近似)残差。从这个角度来看,gbdt比较难以实现分布式(ps:虽然难,依然是可以的,换个角度思考就行),而xgboost从下面这个角度着手

通过学习PPT地址和xgboost导读和实战地址来对xgboost原理和应用分析

注:红色箭头指向的l即为损失函数;红色方框为正则项,包括L1、L2;红色圆圈为常数项。利用泰勒展开三项,做一个近似,我们可以很清晰地看到,最终的目标函数只依赖于每个数据点的在误差函数上的一阶导数和二阶导数。

3、原理

(1)定义树的复杂度对于f的定义做一下细化,把树拆分成结构部分q和叶子权重部分w。下图是一个具体的例子。结构函数q把输入映射到叶子的索引号上面去,而w给定了每个索引号对应的叶子分数是什么。通过学习PPT地址和xgboost导读和实战地址来对xgboost原理和应用分析通过学习PPT地址和xgboost导读和实战地址来对xgboost原理和应用分析

通过学习PPT地址和xgboost导读和实战地址来对xgboost原理和应用分析

这一个目标包含了TT个相互独立的单变量二次函数。我们可以定义

最终公式可以化简为

通过学习PPT地址和xgboost导读和实战地址来对xgboost原理和应用分析

通过对

然后把

(2)打分函数计算示例

Obj代表了当我们指定一个树的结构的时候,我们在目标上面最多减少多少。我们可以把它叫做结构分数(structure score)

通过学习PPT地址和xgboost导读和实战地址来对xgboost原理和应用分析

(3)枚举不同树结构的贪心法

贪心法:每一次尝试去对已有的叶子加入一个分割

通过学习PPT地址和xgboost导读和实战地址来对xgboost原理和应用分析

对于每次扩展,我们还是要枚举所有可能的分割方案,如何高效地枚举所有的分割呢?我假设我们要枚举所有x < a 这样的条件,对于某个特定的分割a我们要计算a左边和右边的导数和。

通过学习PPT地址和xgboost导读和实战地址来对xgboost原理和应用分析

我们可以发现对于所有的a,我们只要做一遍从左到右的扫描就可以枚举出所有分割的梯度和GL和GR。然后用上面的公式计算每个分割方案的分数就可以了。

观察这个目标函数,大家会发现第二个值得注意的事情就是引入分割不一定会使得情况变好,因为我们有一个引入新叶子的惩罚项。优化这个目标对应了树的剪枝, 当引入的分割带来的增益小于一个阀值的时候,我们可以剪掉这个分割。大家可以发现,当我们正式地推导目标的时候,像计算分数和剪枝这样的策略都会自然地出现,而不再是一种因为heuristic(启发式)而进行的操作了。

4、自定义损失函数

在实际的业务场景下,我们往往需要自定义损失函数。这里给出一个官方的 链接地址

5、Xgboost调参

由于Xgboost的参数过多,使用GridSearch特别费时。这里可以学习下这篇文章,教你如何一步一步去调参。地址

6、python和R对xgboost简单使用

任务:二分类,存在样本不均衡问题(scale_pos_weight可以一定程度上解读此问题)

通过学习PPT地址和xgboost导读和实战地址来对xgboost原理和应用分析

通过学习PPT地址和xgboost导读和实战地址来对xgboost原理和应用分析

7、Xgboost中比较重要的参数介绍

(1)objective [ default=reg:linear ] 定义学习任务及相应的学习目标,可选的目标函数如下:

  • “reg:linear” –线性回归。

  • “reg:logistic” –逻辑回归。

  • “binary:logistic” –二分类的逻辑回归问题,输出为概率。

  • “binary:logitraw” –二分类的逻辑回归问题,输出的结果为wTx。

  • “count:poisson” –计数问题的poisson回归,输出结果为poisson分布。 在poisson回归中,max_delta_step的缺省值为0.7。(used to safeguard optimization)

  • “multi:softmax” –让XGBoost采用softmax目标函数处理多分类问题,同时需要设置参数num_class(类别个数)

  • “multi:softprob” –和softmax一样,但是输出的是ndata * nclass的向量,可以将该向量reshape成ndata行nclass列的矩阵。没行数据表示样本所属于每个类别的概率。

  • “rank:pairwise” –set XGBoost to do ranking task by minimizing the pairwise loss

(2)’eval_metric’ The choices are listed below,评估指标:

  • rmse”: root mean square error

  • “logloss”: negative log-likelihood

  • “error”: Binary classification error rate. It is calculated as #(wrong cases)/#(all cases). For the predictions, the evaluation will regard the instances with prediction value larger than 0.5 as positive instances, and the others as negative instances.

  • “merror”: Multiclass classification error rate. It is calculated as #(wrong cases)/#(all cases).

  • “mlogloss”: Multiclass logloss

  • “auc”: Area under the curve for ranking evaluation.

  • “ndcg”:Normalized Discounted Cumulative Gain

  • “map”:Mean average precision

  • “ndcg@n”,”map@n”: n can be assigned as an integer to cut off the top positions in the lists for evaluation.

  • “ndcg-“,”map-“,”ndcg@n-“,”map@n-“: In XGBoost, NDCG and MAP will evaluate the score of a list without any positive samples as 1. By adding “-” in the evaluation metric XGBoost will evaluate these score as 0 to be consistent under some conditions.

(3)lambda [default=0]L2 正则的惩罚系数

(4)alpha [default=0]L1 正则的惩罚系数

(5)lambda_bias在偏置上的L2正则。缺省值为0(在L1上没有偏置项的正则,因为L1时偏置不重要)

(6)eta [default=0.3]为了防止过拟合,更新过程中用到的收缩步长。在每次提升计算之后,算法会直接获得新特征的权重。 eta通过缩减特征的权重使提升计算过程更加保守。缺省值为0.3取值范围为:[0,1]

(7)max_depth [default=6]数的最大深度。缺省值为6 ,取值范围为:[1,∞]

(8)min_child_weight [default=1]孩子节点中最小的样本权重和。如果一个叶子节点的样本权重和小于min_child_weight则拆分过程结束。在现行回归模型中,这个参数是指建立每个模型所需要的最小样本数。该成熟越大算法越conservative取值范围为: [0,∞]


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    51

    文章

    4678

    浏览量

    83476
  • GBDT
    +关注

    关注

    0

    文章

    13

    浏览量

    3852

原文标题:数据科学家工具箱|xgboost原理以及应用详解

文章出处:【微信号:DatamingHacker,微信公众号:深度学习与数据挖掘实战】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何通过XGBoost解释机器学习

    本文为大家介绍用XGBoost解释机器学习。 这是一个故事,关于错误地解释机器学习模型的危险以及正确解释所带来的价值。如果你发现梯度提升或随机森林之类的集成树模型具有很稳定的准确率,但还是需要
    发表于 10-12 11:48 1589次阅读
    如何<b class='flag-5'>通过</b><b class='flag-5'>XGBoost</b>解释机器<b class='flag-5'>学习</b>

    PyInstaller打包xgboost算法包等可能出现问题是什么

    PyInstaller 打包 xgboost算法包等可能出现问题
    发表于 07-16 14:35

    基于xgboost的风力发电机叶片结冰分类预测 精选资料分享

    xgboost中文叫做极致梯度提升模型,官方文档链接:https://xgboost.readthedocs.io/en/latest/tutorials/model.html2018年9月6日笔记
    发表于 07-12 06:58

    基于xgboost的风力发电机叶片结冰分类预测 精选资料下载

    xgboost中文叫做极致梯度提升模型,官方文档链接:https://xgboost.readthedocs.io/en/latest/tutorials/model.html2018年9月6日笔记
    发表于 07-12 06:44

    面试中出现有关Xgboost总结

    介绍 Xgboost是GB算法的高效实现,xgboost中的基学习器除了可以是CART(gbtree)也可以是线性分类器(gblinear)
    发表于 03-20 16:48 4362次阅读

    XGBoost号称“比赛夺冠的必备大杀器”,横扫机器学习竞赛罕逢敌手

    XGBoost全称:eXtreme Gradient Boosting,是一种基于决策树的集成机器学习算法,使用梯度上升框架,适用于分类和回归问题。优点是速度快、效果好、能处理大规模数据、支持多种语言、支持自定义损失函数等,不足之处是因为仅仅推出了不足5年时间,需要进一步
    的头像 发表于 04-30 09:01 3799次阅读

    XGBoost原理概述 XGBoost和GBDT的区别

    相比于经典的GBDT,xgboost做了一些改进,从而在效果和性能上有明显的提升。
    的头像 发表于 07-16 18:54 7.8w次阅读
    <b class='flag-5'>XGBoost</b>原理概述 <b class='flag-5'>XGBoost</b>和GBDT的区别

    基于遗传算法和随机森林的XGBoost改进方法

    回归预测是机器学习中重要的研究方向之一,有着广阔的应用领域。为了进一步提升回归预测的精度,提出了基于遗传算法与随机森林的 Gboost改进方法( GA Xgboost_RF)。首先利用遗传算法
    发表于 04-26 15:44 6次下载
    基于遗传算法和随机森林的<b class='flag-5'>XGBoost</b>改进方法

    基于Xgboost算法的高锰钢表面粗糙度预测

    基于Xgboost算法的高锰钢表面粗糙度预测
    发表于 06-19 15:09 14次下载

    在几个AWS实例上运行的XGBoost和LightGBM的性能比较

    XGBoost(eXtreme Gradient Boosting)是一个在Gradient Boosting Decision Tree(GBDT)框架下的开源机器学习库(https://github.com/dmlc/xgboost
    的头像 发表于 10-24 10:24 1055次阅读

    XGBoost超参数调优指南

    对于XGBoost来说,默认的超参数是可以正常运行的,但是如果你想获得最佳的效果,那么就需要自行调整一些超参数来匹配你的数据,以下参数对于XGBoost非常重要
    的头像 发表于 06-15 18:15 620次阅读
    <b class='flag-5'>XGBoost</b>超参数调优指南

    详细解释XGBoost中十个最常用超参数

    对于XGBoost来说,默认的超参数是可以正常运行的,但是如果你想获得最佳的效果,那么就需要自行调整一些超参数来匹配你的数据
    的头像 发表于 06-19 17:31 935次阅读
    详细解释<b class='flag-5'>XGBoost</b>中十个最常用超参数

    XGBoost中无需手动编码的分类特征

    XGBoost 中无需手动编码的分类特征
    的头像 发表于 07-05 16:30 287次阅读

    XGBoost 2.0介绍

    XGBoost是处理不同类型表格数据的最著名的算法,LightGBM 和Catboost也是为了修改他的缺陷而发布的。近日XGBoost发布了新的2.0版,本文除了介绍让XGBoost的完整历史以外
    的头像 发表于 11-03 10:12 255次阅读
    <b class='flag-5'>XGBoost</b> 2.0介绍

    详解XGBoost 2.0重大更新!

    另外还有一点是基于树的模型可以轻松地可视化和解释,这进一步增加了吸引力,特别是在理解表格数据结构时。通过利用这些固有的优势,基于树的方法——尤其是像XGBoost这样的高级方法——非常适合处理数据科学中的各种挑战,特别是在处理表格数据时。
    的头像 发表于 11-14 16:22 258次阅读
    详解<b class='flag-5'>XGBoost</b> 2.0重大更新!