花了三四天学习XGBoost,这篇文章教会了我如何调参。我把文章的主要内容作翻译和摘录,也算是为XGboost中文社区贡献一份资源。

前言

XGBoost中的算法已经成为了许多数据科学家的终极武器了!这是一个内部实现高度复杂的算法,在处理各种不规范的数据时有强大的表现。

(由于DMLC已经将代码和文档不断完善)利用XGBoost建立一个模型是简单的,但是因为它使用了众多参数,所以提升它的预测效果是比较有难度的。其中调参是重要的一步,但仍然有很多现实的挑战——哪些参数是我们需要调整的?每个参数的最佳值又应该是多少呢?

因此,这篇文章最适合刚刚接触XGBoost的人,我们将会了解到调整参数的步骤,获得一些有关XGBoost的新理解。本文使用的语言是Python.

简介

XGBoost(eXtreme Gradient Boosting)是一些梯度提升算法的先进实现。另外一篇文章《GBM完全调参指南(in Python)》能帮助你理解Boosting这一模型提升技术以及GBM调参的步骤。同时,你能了解GBM中参数的内涵。

XGBoost的优势

正则化XGBoost在标准的GBM实现中增加了正则化,从而能有效避免过拟合

并行计算XGBoost实现了并行计算,实在是太快了!(众所周知,Boosting依赖串行序列已有的计算结果,如何并行化呢?看这里)

XGBoost同时支持Hadoop分布式版本的实现

灵活性高XGBoost允许代码家自定义优化目标函数和评价标准(指标/函数)

这使得模型能够获得更多生命力和自由度,你可以任意发挥想象去定义上述函数

能处理缺失值XGBoost内置了一套对缺失值进行处理的方法,并提供接口

使用者必须提供一个与现有取值都不相同的特殊值来代替缺失值。默认是-999. 如果每个节点都有缺失值,XGBoost会采取特殊的处理,尝试学习哪个路径是更好的选择

树剪枝GBM模型的停止条件是当节点继续分列时不能减少损失。这是一种贪心的策略

XGBoost通过指定参数max_depth限制最大的分裂次数(深度),停止分裂的条件是分裂不能带来正增益

内置交叉验证CVXGBoost允许使用者在每次迭代都进行一次交叉验证。因此,很容易在一次实验中直接得到最佳的迭代次数

而GBM只能进行参数网格搜索来测试有限的取值,进而确定最佳迭代次数

模型的继续训练使用者能继续从上一次模型的结束位置开始进一步的训练,这在某些具体应用场景中非常有优势

GBM的sklearn实现也有类似的功能(即将模型保存至硬盘)

XGBoost中的三类参数

General Parametersbooster

根据你的需要选择每一轮迭代中的模型类型,默认情况是gbtree, 另外一种是gblinear. 多数情况下,前者的表现优于后者。

silent

默认为0,将会在运行代码过程中打印提示信息。有助于你探索和理解XGBoost.在使用命令行环境时,建议设置为1.

nthread

默认为最大CPU核数。算法会自动检测可用的最大核数,此时解锁并行计算。这将会占用几乎CPU的所有计算资源(以尽快计算出结果)。

Booster Parameterseta

默认取值为0.3,类似于GBM的学习率,每一步都以此系数来缩小权重,使得模型的学习更加稳健,泛化能力更强。在调参之后,典型的取值为0.01-0.2. 这是经验规律。

min_child_weight

默认是1,对应于在一个叶子节点中,样本的最小权重和。这是停止条件。类似于GBM中的min_child_leaf,但这里是权重和,GBM中是最小样本数。主要是用于限制模型拟合离群值,合适的值通常避免欠拟合或过拟合。

max_depth

默认是6,用于控制模型过拟合。典型取值是3-10.

max_leaf_nodes

一棵树的允许的最大叶子节点数。如果是二叉树,这实际上和树的深度有关。

gamma

默认是0,每一次尝试拆分节点时,必须使得损失函数下降一个大于gamma的数值,才能够被模型接受这次拆分。如果自定义了不同的损失函数,可以尝试调大gamma值,使得模型更加保守。

subsample

默认是1,这与GBM中的参数类似,在训练一棵树时,将按subsample的比例随机抽取样本作为输入。它同样是一个用于防止过拟合的参数。典型取值是0.5-1.

colsample_bytree

默认是1,类似subsample,在训练一棵树时,按colsample_bytree的比例随机抽取某些特征进行训练。

lambda

默认是1,L2正则化项的权重,类似岭回归。

alpha

默认为0, L1正则化项,类似Lasso回归。在特征维度非常高时比较适用。

Learning Task Parametersobjective

默认是reg:linear,这将指定你的损失函数。常用的值有binary:logistic, multi:softmax, multi:softprob.

eval_metric

默认值随objective的具体情况而改变。常见的有:rmse(root mean square error)

mae(mean absolute error)

logloss(negative log-likelihood)

error(Binary classification error rate)

merror(Multiclass classification error rate)

mlogloss(Multiclass logloss)

auc(Area under the curve)seed

默认是0,随机种子数。

python xgboost调参_XGBoost完全调参指南(Python)相关推荐

  1. python做什么模型_主题模型初学者指南[Python]

    引言 近年来涌现出越来越多的非结构化数据,我们很难直接利用传统的分析方法从这些数据中获得信息.但是新技术的出现使得我们可以从这些轻易地解析非结构化数据,并提取出重要信息. 主题模型是处理非结构化数据的 ...

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

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

  3. XGBoost的参数介绍及调参

    XGBoost的参数介绍及调参 XGBoost参数解释 一.通用参数 二.Booster参数 二.学习目标函数 三.XGBoost调参 XGBoost参数解释 XGBoost的参数分为三大类: 通用参 ...

  4. 机器学习系列(12)_XGBoost参数调优完全指南(附Python代码)

    机器学习系列(12)_XGBoost参数调优完全指南(附Python代码) 原文链接:http://blog.csdn.net/han_xiaoyang/article/details/5266539 ...

  5. python xgboost参数_如何对XGBoost模型进行参数调优

    匿名用户 1级 2017-01-19 回答 XGBoost参数调优完全指南(附Python代码) 译注:文内提供的代码和运行结果有一定差异,可以从这里下载完整代码对照参考.另外,我自己跟着教程做的时候 ...

  6. 多旋翼无人机APM(PIX)飞控ardupilot missionplanner扩展调参、基本调参(PID调参)

    目录 1 APM(PIX)飞控ardupilot missionplanner扩展调参.基本调参默认值 2  Copter Home 3  调参各部分的解析示意图 4  在飞行中调roll和pitch ...

  7. 机器学习调参与贝叶斯优化及其典型python实现hyperopt

    机器学习调参与贝叶斯优化及其典型python实现hyperopt hyperopt的详细实施参考笔者的如下文章: 使用hyperopt(Bayesian optimization)为lightGBM模 ...

  8. python xgboost参数_xgboost中XGBClassifier()参数详解

    常规参数 booster gbtree 树模型做为基分类器(默认) gbliner 线性模型做为基分类器 silent silent=0时,不输出中间过程(默认) silent=1时,输出中间过程 n ...

  9. Python的数据分析中超参数调优方法:网格搜索

    [小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python的数据分析中 超参数调优方法:网格搜索 ● 选择题 以下说 ...

最新文章

  1. Asp.Net MVC中Action跳转小结
  2. Pytorch学习 - 保存模型和重新加载
  3. 邻接矩阵和邻接表的相互转化
  4. rocketmq 消息 自定义_RocketMQ的消息发送及消费
  5. ​数据分析最重要的 3 种特征编码,你真的能分清楚?
  6. 设置分区的三种方法coalesce、repartition、partitionBy
  7. 开发者在对项目失去信心后,该做什么?
  8. 韩顺平 php 聪明的小猫代码,聪明的小猫作文600字
  9. linux关闭cups命令,使用linux的cupsenable命令启动指定的打印机
  10. ​百度网盘下线SVIP免第三方广告特权;小米回应手机异常发热;Windows 11新应用商店将于6月24日亮相|极客头条...
  11. CORS - 引入预检请求的动机是什么?
  12. linux 用shell比较两个整数的大小
  13. Ubuntu 14.04 更换阿里云源
  14. Linux 下构建域名服务器
  15. SolidWorks 2018 安装教程
  16. 如何解决tomcat提示文件被锁定
  17. 高中计算机教师学期论文,高中信息技术论文选题
  18. 项目实战之旅游网(一)项目介绍 项目搭建
  19. chrome单击打开标贴在当前窗口的新标签页设置
  20. jQuery子页面刷新父页面--局部刷新+整体刷新

热门文章

  1. Android Launcher 如何去掉主菜单,所有应用摆在桌面,类似小米桌面
  2. FIS学习——利用Matlab创建模糊推理系统Ⅰ
  3. Apache ECharts下载安装(以GitHub下载源为例) |以及第一个echart图表快速上手
  4. python怎么将整数反转输出_python 反转整数
  5. Linux FrameBuffer分析之编写基于FrameBuffer接口的应用程序
  6. 建材信息价简介和说明建筑工程材料价格信息是用来做什么的
  7. 深度解读志拓智慧厕所系统方案(干货合集,一文通透了解智慧厕所) 智慧公厕|智慧城市
  8. 配置 Git 连接 GitHub
  9. 高级操作系统——XV6中断机制
  10. istio-proxy性能洞察之路---性能调研的终点、调优之路的出发点