XGBoost的参数介绍及调参

  • XGBoost参数解释
  • 一、通用参数
  • 二、Booster参数
  • 二、学习目标函数
  • 三、XGBoost调参

XGBoost参数解释

XGBoost的参数分为三大类:

  • 通用参数:根据需求宏观调控。
  • Booster参数:booster参数一般可以调控模型的效果和计算代价。我们所说的调参,很这是大程度上都是在调整booster参数。
  • 学习目标参数:控制训练目标的表现。我们对于问题的划分主要体现在学习目标参数上。比如我们要做分类还是回归,做二分类还是多分类,这都是目标参数所提供的。

一、通用参数

  • booster:我们有两种参数选择,gbtree和gblinear。gbtree是采用树的结构来运行数据,而gblinear是基于线性模型。
  • silent:静默模式,为1时模型运行不输出。
  • nthread: 使用线程数,一般我们设置成-1,使用所有线程。如果有需要,我们设置成多少就是用多少线程。

二、Booster参数

  • n_estimator: 也作num_boosting_rounds,这是生成的最大树的数目,也是最大的迭代次数。

  • learning_rate: 有时也叫作eta,系统默认值为0.3。学习率越大越快收敛,但是容易过拟合,索引我们一般设置为0.1.

  • gamma:系统默认为0,我们也常用0。
    在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。gamma指定了节点分裂所需的最小损失函数下降值。 这个参数的值越大,算法越保守。因为gamma值越大的时候,损失函数下降更多才可以分裂节点。所以树生成的时候更不容易分裂节点。范围: [0,∞]

  • subsample:系统默认为1。
    这个参数控制对于每棵树,随机采样的比例。减小这个参数的值,算法会更加保守,避免过拟合。设置得过小可能会导致欠拟合。 典型值:0.5-10.5代表平均采样,防止过拟合。范围:(0,1]注意不可取0

  • colsample_bytree:系统默认值为1。我们一般设置成0.8左右。

    用来控制每棵随机采样的列数的占比(类采样率)。 典型值:0.5-1.范围: (0,1]

  • colsample_bylevel:默认为1,我们也设置为1.

    这个就相比于前一个更加细致了,它指的是每棵树每次节点分裂的时候列采样的比例。

  • max_depth: 系统默认值为6

    我们常用3-10之间的数字。这个值为树的最大深度。这个值是用来控制过拟合的。max_depth越大,模型学习的更加具体。设置为0代表没有限制,范围: [0,∞]

  • max_delta_step:默认0,我们常用0.

    这个参数限制了每棵树权重改变的最大步长,如果这个参数的值为0,则意味着没有约束。如果他被赋予了某一个正值,则是这个算法更加保守。通常,这个参数我们不需要设置,但是当个类别的样本极不平衡的时候,这个参数对逻辑回归优化器是很有帮助的。

  • lambda:也称reg_lambda,默认值为0。权重的L1正则化项。可以减少过拟合。

  • alpha:也称reg_alpha默认为0。可以应用在高维度的情况下,使得算法更快。

  • scale_pos_weight:默认为1
    在各类别样本十分不平衡时,把这个参数设定为一个正值,可以使算法更快收敛。通常可以将其设置为负样本的数目与正样本数目的比值

二、学习目标函数

objective [objective = 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的向量,其中的值是每个数据分为每个类的概率

eval_metric [eval_metric=通过目标函数选择]

  • rmse: 均方根误差
  • mae: 平均绝对值误差
  • logloss: negative log-likelihood
  • error: 二分类错误率。其值通过错误分类数目与全部分类数目比值得到。对于预测,预测值大于0.5被认为是正类,其它归为负类。 error@t: 不同的划分阈值可以通过 ‘t’进行设置
  • merror: 多分类错误率,计算公式为 (wrong cases)/(all cases)
  • mlogloss: 多分类log损失
  • auc: 曲线下的面积

一般来说,我们都会使用xgboost.train(params, dtrain)函数来训练我们的模型。这里的params指的是booster参数。

三、XGBoost调参

import xgboost as xgb
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score
from sklearn.model_selection import GridSearchCVtrain_x, valid_x, train_y, valid_y = train_test_split(x_train, y_train, test_size=0.333, random_state=0)   # 分训练集和验证集
# 这里不需要Dmatrixparameters = {'max_depth': [5, 10, 15, 20, 25],# 树的最大深度'learning_rate': [0.01, 0.02, 0.05, 0.1, 0.15],# 学习率'n_estimators': [500, 1000, 2000, 3000, 5000],# 最大迭代次数'min_child_weight': [0, 2, 5, 10, 20],# 新分裂的节点样本权重停止分裂的最小阈值'max_delta_step': [0, 0.2, 0.6, 1, 2],# 叶子输出的最大步长'subsample': [0.6, 0.7, 0.8, 0.85, 0.95],# 样本采样率'colsample_bytree': [0.5, 0.6, 0.7, 0.8, 0.9],# 列采样率'reg_alpha': [0, 0.25, 0.5, 0.75, 1],# L2正则化'reg_lambda': [0.2, 0.4, 0.6, 0.8, 1],# L1正则化'scale_pos_weight': [0.2, 0.4, 0.6, 0.8, 1]# 样本不均衡时}xlf = xgb.XGBClassifier(max_depth=10,learning_rate=0.01,n_estimators=2000,silent=True,objective='binary:logistic',nthread=-1,gamma=0,min_child_weight=1,max_delta_step=0,subsample=0.85,colsample_bytree=0.7,colsample_bylevel=1,reg_alpha=0,reg_lambda=1,scale_pos_weight=1,seed=1440,missing=None)# 有了gridsearch我们便不需要fit函数
gsearch = GridSearchCV(xlf, param_grid=parameters, scoring='accuracy', cv=3)
gsearch.fit(train_x, train_y)print("Best score: %0.3f" % gsearch.best_score_)
print("Best parameters set:")
best_parameters = gsearch.best_estimator_.get_params()
for param_name in sorted(parameters.keys()):print("\t%s: %r" % (param_name, best_parameters[param_name]))

XGBoost的参数介绍及调参相关推荐

  1. ML之Xgboost:利用Xgboost模型(7f-CrVa+网格搜索调参)对数据集(比马印第安人糖尿病)进行二分类预测

    ML之Xgboost:利用Xgboost模型(7f-CrVa+网格搜索调参)对数据集(比马印第安人糖尿病)进行二分类预测 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 grid_s ...

  2. [机器学习]XGBoost 和 LightGBM 参数对比与调参

    XGBoost 参数介绍 XGBoost的参数一共分为三类(完整参数请戳官方文档): 通用参数:宏观函数控制. Booster参数:控制每一步的booster(tree/regression).boo ...

  3. 比xgboost强大的LightGBM:调参指南(带贝叶斯优化代码)

    向AI转型的程序员都关注了这个号??? 大数据挖掘DT数据分析  公众号: datadw xgboost的出现,让数据民工们告别了传统的机器学习算法们:RF.GBM.SVM.LASSO........ ...

  4. PID介绍 PID调参 串级PID

    鉴于串级PID在pixhawk系统中的重要性,无论是误差的补偿,如姿态解算:还是控制的实现,如姿态控制,位置控制,靠的都是串级的pid,这里我们先对串级pid做一个介绍,后面会再接着分析,姿态的控制以 ...

  5. adrc算法思想C语言编,关于ADRC算法以及参数整定(调参)的一些心得体会

    关于ADRC算法以及参数整定(调参)的一些心得体会 ADRC,全称叫做Active Disturbance Rejection Control,中文名是自抗扰控制技术.这项控制算法是由中科院的韩京清教 ...

  6. XGBoost python调参示例

    原文地址:Complete Guide to Parameter Tuning in XGBoost by Aarshay Jain 原文翻译与校对:@MOLLY && 寒小阳 (ha ...

  7. 使用贝叶斯优化工具实践XGBoost回归模型调参

    0. 关于调参 0.1. 超参数 在机器学习的上下文中,超参数(hyper parameters)是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据.通常情况下,需要对超参数进行优化,给学 ...

  8. Xgboost调参小结

      XGBoost全称是eXtreme Gradient Boosting,由陈天奇所设计,和传统的梯度提升算法相比,XGBoost进行了许多改进,它能够比其他使用梯度提升的集成算法更加快速.关于xg ...

  9. XGBoost实战与调参优化

    本篇主要内容包括XGBoost的入门教学.调参优化,将之前自己遇到的问题细心的整理一遍:XGBoost参数繁多,所以如果要调参,就一定要知道每个参数的作用于意义,因此本人十分建议在实战之前对XGBoo ...

最新文章

  1. 如果list中既包含字符串,又包含整数,由于非字符串类型没有lower()方法,所以列表生成式会报错:...
  2. HDU 5239 上海大都会 D题(线段树+数论)
  3. win32创建控件的一些问题
  4. cisco路由器设置telnet口令的问题
  5. [剑指Offer] 数据流中的中位数
  6. 我们只知大势将至,却不知未来已来
  7. 做安全操作系统,这位技术老兵是认真的!
  8. python绝对值函数偏码_绝对值python
  9. 我的软件用了那些技术
  10. Hazel for Mac(自动化清理)
  11. ios开发学习-指示器(HUD)效果源码分享
  12. 泰安市建筑物矢量数据(Shp格式+带高度)
  13. python 文件转base64
  14. 华为Ensp常用命令
  15. 海思平台Hi3796MV200芯片处理器介绍
  16. win10系统服务器不能创建对象,win10系统中activex部件不能创建对象怎么修复
  17. python批量下载图片
  18. 知晓当前是在哪一个 Activity Kotlin.Android
  19. ext4解包和重新打包
  20. 二叉树的深度(前序 中序 后序 递归非递归搜素)、广度、搜索 C++

热门文章

  1. 爱奇艺视flash频嵌入网站
  2. ffmpeg转换MP4为mp3格式
  3. 什么是业务,什么是业务架构?
  4. FLUENT中MRF模型简介及应用实例
  5. linux的资源管理器关进程,RHCSA 系列(五): RHEL7 中的进程管理:开机,关机
  6. Win10打印机一直显示正在删除不掉怎么解决?
  7. unity敌人跟随(导航)
  8. SEO代码优化的学习笔记
  9. 2021管理类联考真题pdf-文都管联院
  10. 30天自制操作系统 综合设计