XGBoost参数详解
来源:互联网 发布:qt淘宝兼职刷单流程 编辑:程序博客网 时间:2024/05/16 18:16
本文参考自 Complete Guide to Parameter Tuning in XGBoost (with codes in Python),在其翻译基础上个别地方加上了自己的补充。
XGBoost的优点
- 正则
- 标准的GBM实现是没有正则的。
- XGBoost也以regularized boosting技术闻名。
- 并行处理
- XGBoost实现了并行化的处理。
- XGBoost基于boosting方法,原则上不可以并行。但是XGBoost做的是特征粒度上的并行,而不是树粒度上的并行。
- XGBoost支持hadoop上实现。
- 高度的灵活性
- XGBoost允许用户自定义优化目标和评估准则。
- 处理缺失值方面
- XGBoost自有一套处理缺失值的方法。
- 树剪枝方面
- GBM是在节点遇到负损失的时候停止分裂,贪心策略。(预剪枝)
- XGBoost是在分裂抵达max_depth的时候才开始剪枝移除那些没有正收益的分裂。(后剪枝)
- 内置的交叉验证
- XGBoost在boosting过程中的每一次迭代都运行CV,使得在一次运行中就可以确定最优的boosting迭代次数。
- GBM需要我们使用网格搜索来找最优次数。
- 可以在存在的模型上继续训练
- 在某些特定的场景下非常有用。
- GBM的sklearn实现也有这个特点。
XGBoost的参数
- General Parameters
- booster [default=gbtree]
- gbtree:基于树的模型
- gblinear:线型模型
- silent [default=0]
- 0会输出运行信息,1不会输出运行信息,建议保持0有助于理解模型
- nthread [如果不设置默认与最大的可以线程数相同]
- 用来控制并行过程,如果想要在所有的核上都运行就让系统自己设置就好
- num_pbuffer:prediction buffe,系统自动设置
- num_feature:boosting过程中的特征维数,系统自动设置
- booster [default=gbtree]
- Booster Paramters 包含两类Booster
- eta [default = 0.3]
- 类似于GBM中的学习率
- 取值范围:[0,1],通常设置为0.01~0.2
- gamma [default=0 别名:min_split_loss]
- 一个叶子节点继续分裂所需要的最小下降损失。值越大,模型越保守/越不容易过拟合。
- 取值范围:[0, ∞]
- max_depth [default = 6]
- 树的最大深度。值越大模型越复杂/越可能过拟合。设为0表示不限制。
- 取值范围:[0, ∞]
- min_child_weight [default=1]
- 孩子节点需要的最小样本权重和。如果分裂导致一个叶子节点的样本权重和小于预设值,就不会继续分裂了。
- 在线型模型中,简化为每个节点所需要的最小样本数量(?)。
- 值越大,模型越保守。
- 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.
- 用的比较少,但是在逻辑回归中,如果类别极度不平衡,调整这个值会有帮助。
- subsample [default = 1]
- 行采样,不用多说。取值范围:(0, 1]
- colsample_bytree [default = 1]
- 列采样,在建立每一棵树的时候对特征的采样比例。取值范围:(0, 1]
- colsample_bylevel [default = 1]
- 在每一次分裂时候列采样的比例(?),用的很少。取值范围:(0, 1]
- alpha [default = 0]
- 权重上的L1正则
- lambda [default = 1]
- 权重上的L2正则
- tree method [default = ‘auto’]
- XGBoost中树构建的方法,一般使用auto。
- scale_pos_weight [defualt = 1]
- 正负样本比例。用来控制正负样本的权重,在类别不平衡的时候用处很大。
- 常用的计算方法:sum(negative cases) / sum(positive cases)
- 【Linear Booster】中有lambda,alpha,lambda_bias(在偏置上的L2正则,为什么偏置上没有L1正则,因为不重要)。
- eta [default = 0.3]
- Learning Task Parameters
- objective [default=reg:linear] 定义学习目标函数。
- 常用的:”reg:linear”,”reg:logistic”,”binary:logistic”
- 可以自定义目标函数,需要传入一阶,二阶导数
- base_score 几乎不用
- eval_metric [默认值根据objective]
- 可以传多个评估指标。python特别注意要传list而不是map。
- objective [default=reg:linear] 定义学习目标函数。
参考:
1.Complete Guide to Parameter Tuning in XGBoost (with codes in Python
2.XGBoost Parameters
阅读全文
1 0
- xgboost 参数 scale_pos_weight 详解
- xgboost参数详解
- xgboost参数详解
- XGBoost参数详解
- XGBoost参数
- xgboost 参数
- XGBoost参数
- xgboost详解
- XgBoost详解
- XGBoost:参数解释
- XGBoost参数说明
- XGBoost的参数
- xgboost参数调整
- XGBOOST参数说明
- XGBoost参数调优
- XGBoost Parameters 参数设计
- XGBoost参数调优
- XGBoost:参数解释
- form表单上传文件时,需要的配置
- SpringBoot系列<五>全局异常处理
- 机器学习实战 Python3编译存在的各种问题
- lintcode 2:尾部的零
- C++与matlab存储方式的不同
- XGBoost参数详解
- Java基本类型所占存储空间大小的整理
- lvs部署
- CNN
- springboot 1.5.3 源码分析(四):自定义Conditional注解
- 蓝桥杯练习题之杨辉三角形
- SSL P1786 麻将游戏
- Retrofit详细介绍
- CSS里面的behavior属性的作用