XGBoost参数详解

来源:互联网 发布:qt淘宝兼职刷单流程 编辑:程序博客网 时间:2024/05/16 18:16

本文参考自 Complete Guide to Parameter Tuning in XGBoost (with codes in Python),在其翻译基础上个别地方加上了自己的补充。

XGBoost的优点

  1. 正则
    • 标准的GBM实现是没有正则的。
    • XGBoost也以regularized boosting技术闻名。
  2. 并行处理
    • XGBoost实现了并行化的处理。
    • XGBoost基于boosting方法,原则上不可以并行。但是XGBoost做的是特征粒度上的并行,而不是树粒度上的并行。
    • XGBoost支持hadoop上实现。
  3. 高度的灵活性
    • XGBoost允许用户自定义优化目标评估准则
  4. 处理缺失值方面
    • XGBoost自有一套处理缺失值的方法。
  5. 树剪枝方面
    • GBM是在节点遇到负损失的时候停止分裂,贪心策略。(预剪枝)
    • XGBoost是在分裂抵达max_depth的时候才开始剪枝移除那些没有正收益的分裂。(后剪枝)
  6. 内置的交叉验证
    • XGBoost在boosting过程中的每一次迭代都运行CV,使得在一次运行中就可以确定最优的boosting迭代次数。
    • GBM需要我们使用网格搜索来找最优次数。
  7. 可以在存在的模型上继续训练
    • 在某些特定的场景下非常有用。
    • GBM的sklearn实现也有这个特点。

XGBoost的参数

  1. General Parameters
    1. booster [default=gbtree]
      • gbtree:基于树的模型
      • gblinear:线型模型
    2. silent [default=0]
      • 0会输出运行信息,1不会输出运行信息,建议保持0有助于理解模型
    3. nthread [如果不设置默认与最大的可以线程数相同]
      • 用来控制并行过程,如果想要在所有的核上都运行就让系统自己设置就好
    4. num_pbuffer:prediction buffe,系统自动设置
    5. num_feature:boosting过程中的特征维数,系统自动设置
  2. Booster Paramters 包含两类Booster
    1. eta [default = 0.3]
      • 类似于GBM中的学习率
      • 取值范围:[0,1],通常设置为0.01~0.2
    2. gamma [default=0 别名:min_split_loss]
      • 一个叶子节点继续分裂所需要的最小下降损失。值越大,模型越保守/越不容易过拟合。
      • 取值范围:[0, ∞]
    3. max_depth [default = 6]
      • 树的最大深度。值越大模型越复杂/越可能过拟合。设为0表示不限制。
      • 取值范围:[0, ∞]
    4. min_child_weight [default=1]
      • 孩子节点需要的最小样本权重和。如果分裂导致一个叶子节点的样本权重和小于预设值,就不会继续分裂了。
      • 在线型模型中,简化为每个节点所需要的最小样本数量(?)。
      • 值越大,模型越保守。
    5. min_delta_step [default=0]
      • Maximum delta step we allow each tree’s weight estimation to be. If the value is set to 0, it means there is no constraint.
      • 用的比较少,但是在逻辑回归中,如果类别极度不平衡,调整这个值会有帮助。
    6. subsample [default = 1]
      • 行采样,不用多说。取值范围:(0, 1]
    7. colsample_bytree [default = 1]
      • 列采样,在建立每一棵树的时候对特征的采样比例。取值范围:(0, 1]
    8. colsample_bylevel [default = 1]
      • 在每一次分裂时候列采样的比例(?),用的很少。取值范围:(0, 1]
    9. alpha [default = 0]
      • 权重上的L1正则
    10. lambda [default = 1]
      • 权重上的L2正则
    11. tree method [default = ‘auto’]
      • XGBoost中树构建的方法,一般使用auto。
    12. scale_pos_weight [defualt = 1]
      • 正负样本比例。用来控制正负样本的权重,在类别不平衡的时候用处很大。
      • 常用的计算方法:sum(negative cases) / sum(positive cases)
    13. 【Linear Booster】中有lambda,alpha,lambda_bias(在偏置上的L2正则,为什么偏置上没有L1正则,因为不重要)。
  3. Learning Task Parameters
    1. objective [default=reg:linear] 定义学习目标函数。
      • 常用的:”reg:linear”,”reg:logistic”,”binary:logistic”
      • 可以自定义目标函数,需要传入一阶,二阶导数
    2. base_score 几乎不用
    3. eval_metric [默认值根据objective]
      • 可以传多个评估指标。python特别注意要传list而不是map。

参考:

1.Complete Guide to Parameter Tuning in XGBoost (with codes in Python

2.XGBoost Parameters

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 乙醚倒进下水道了怎么办 乙醚和水不分层怎么办 乙醚闻多了头晕怎么办 爱乐维吃了便秘怎么办 刮完滑石粉墙面很软怎么办 被硫酸泼到皮肤怎么办 头磕了一下头晕怎么办 家里有事与工作不能请怎么办 撞了头头晕想吐怎么办 猫不小心摔一下怎么办 一氧化二氮中毒怎么办 电脑开机变慢了怎么办 怎么办抚顺韦德健身卡 预售健身卡合法吗怎么办 被浓硫酸泼到怎么办 婴儿误喝了生水怎么办 宝宝喝了生水拉肚子怎么办 因妈妈喝生水宝宝拉肚子怎么办 喝了几口生水怎么办 不小心吃到蟑螂怎么办 吃了有蛆的樱桃怎么办 不小心误食了蛆怎么办 吃了有蟑螂的汤怎么办 调节天平时指针向右怎么办 香薰蜡烛融化了怎么办 香薰蜡烛挂壁怎么办y 粗蜡烛只烧中间怎么办 紫薯馒头变绿怎么办 小孩手开水烫了怎么办 被油烫伤了怎么办才不留疤 烫伤水泡蹭破了怎么办 烧伤的水泡破了怎么办 烧伤后水泡破了怎么办 烫伤泡破了红肿怎么办 烧伤第二天水泡破了怎么办? 烧伤后换药特别疼怎么办 盐酸溅到皮肤上怎么办 磷性磷酸酶高440怎么办 浓硫酸沾到皮肤上怎么办 浓硫酸溅到皮肤上怎么办 浓硫酸滴到皮肤上怎么办