XGBOOST的威力不用赘述,反正我是离不开它了。

具体XGBOOST的原理可以参见之前的文章《比XGBOOST更快--LightGBM介绍》

今天说下如何调参。

  1. bias-variance trade-off

xgboost一共有几十个参数:

http://xgboost.readthedocs.io/en/latest/parameter.html

中文版解释:

http://blog.csdn.net/zc02051126/article/details/46711047

文艺青年的调参一般这样的:

1. 设定参数{parm},评判指标{metrics};

2. 根据{metrics}在验证集上的大小,确定树的棵树n_estimators;

3. 采用参数{parm}、n_estimators,训练模型,并应用到测试集

一个字:糙!(kuai)

数据挖掘师的调参一般这样的:

  1. 设定基础参数{parm0},基础评判指标{metrics0};

  2. 在训练集上做cross-validation,做训练集/交叉验证集上偏差/方差与树棵树的关系图;

  3. 判断模型是过拟合 or 欠拟合,更新相应参数{parm1};

  4. 重复2、3步,确定树的棵树n_estimators;

  5. 采用参数{parm1}、n_estimators,训练模型,并应用到测试集;

数据集大小:70000*100,随机准确率 0.17%

在设置了基础参数,设定了树的范围后,可以看到模型在训练集和交叉验证集上的效果是这样子滴:

阴影部分,表示的是模型的方差

从上图,可以得出以下几个结论:

- 验证集上偏差最小&方差最小:n_estimators=66

- 训练集和验证集误差较大:过拟合-----模型过于复杂

- 方差较大----模型过于复杂

这符合下面这个图

以上特征,都表明我们需要降低模型复杂程度,有哪些参数可以调整呢:

- 直接降低模型复杂度

max_depth、min_child_weight、gamma

- 随机化

subsample、colsample_bytree

- 正则化

lambda、alpha

通过,grid-search,再调整了以上的参数后,如下图。最佳trade-off点的variance从0.361降低到0.316,auc_mean从0.8312降低到0.8308。

P-R的提升还是比较明显的:

还有,先粗调,再微调

-- 降低learning_rate,当然同时,提高n_estimators

2. 非平衡数据集怎么办

-- 想办法弄到更多的数据

-- 想办法把数据弄平衡

-- 利用smote等算法来过采样/欠采样

-- 设置weight(初始化DMatrix时)

-- 使用更好的metrics:auc、f1

-- min_child_weight 设的小一点

-- scale_pos_weight = 0值的样本数量/1值的样本数量

-- max_delta_step

-- 自定义评价函数

xgb.train(params, dtrain, num_rounds, watchlist, feval=misclassified, maximize=False)

def misclassified(pred_probs, dtrain):
labels = dtrain.get_label() # obtain true labels
preds = pred_probs > 0.5 # obtain predicted values
return 'misclassified', np.sum(labels != preds)

对数据感兴趣的小伙伴,欢迎交流,微信公共号:一白侃数

论XGBOOST科学调参的更多相关文章

  1. xgboost使用调参

    欢迎关注博主主页,学习python视频资源 https://blog.csdn.net/q383700092/article/details/53763328 调参后结果非常理想 from sklea ...

  2. xgboost&lightgbm调参指南

    本文重点阐述了xgboost和lightgbm的主要参数和调参技巧,其理论部分可见集成学习,以下内容主要来自xgboost和LightGBM的官方文档. xgboost Xgboost参数主要分为三大 ...

  3. xgboost 并行调参

    Parallelism When Cross Validating XGBoost Models This raises the question as to how cross validation ...

  4. xgboost 完全调参指南

    http://www.2cto.com/kf/201607/528771.html xgboost: https://www.analyticsvidhya.com/blog/2016/03/comp ...

  5. Xgboost调参总结

    一.参数速查 参数分为三类: 通用参数:宏观函数控制. Booster参数:控制每一步的booster(tree/regression). 学习目标参数:控制训练目标的表现. 二.回归 from xg ...

  6. xgboost的sklearn接口和原生接口参数详细说明及调参指点

    from xgboost import XGBClassifier XGBClassifier(max_depth=3,learning_rate=0.1,n_estimators=100,silen ...

  7. xgboost入门与实战(实战调参篇)

    https://blog.csdn.net/sb19931201/article/details/52577592 xgboost入门与实战(实战调参篇) 前言 前面几篇博文都在学习原理知识,是时候上 ...

  8. XGBOOST应用及调参示例

    该示例所用的数据可从该链接下载,提取码为3y90,数据说明可参考该网页.该示例的“模型调参”这一部分引用了这篇博客的步骤. 数据前处理 导入数据 import pandas as pd import ...

  9. xgboost/gbdt在调参时为什么树的深度很少就能达到很高的精度?

    问题: 用xgboost/gbdt在在调参的时候把树的最大深度调成6就有很高的精度了.但是用DecisionTree/RandomForest的时候需要把树的深度调到15或更高.用RandomFore ...

随机推荐

  1. HOG特征简述

    ---恢复内容开始--- 参考文献:http://blog.csdn.net/zouxy09/article/details/7929348 分为几步: 1)cell:有n×m个像素组成,计算每个像素 ...

  2. HTTP请求报头及其处理

    ps:详细说明http://www.cnblogs.com/kkgreen/archive/2011/04/11/2012829.html

  3. .NET/C# 使用 Span 为字符串处理提升性能

    .NET Core 2.1 和 C# 7.2 带来了 Span 的原生支持,原本需要使用不安全代码操作的内存块现在可以使用安全的方式来完成.此前在性能和稳定性上需要有所取舍,而现在可以兼得了. 简单的 ...

  4. WPF 中使用附加属性,将任意 UI 元素或控件裁剪成圆形(椭圆)

    不知从什么时候开始,头像流行使用圆形了,于是各个平台开始追逐显示圆形裁剪图像的技术.WPF 作为一个优秀的 UI 框架,当然有其内建的机制支持这种圆形裁剪. 不过,内建的机制仅支持画刷,而如果被裁剪的 ...

  5. Django mysql 字符集问题

    http://www.cnblogs.com/discuss/articles/1862248.html http://www.cnblogs.com/moinmoin/archive/2011/02 ...

  6. 《selenium2 python 自动化测试实战》(10)——下拉框和alert

    # coding: utf-8 from selenium import webdriverfrom selenium.webdriver.common.action_chains import Ac ...

  7. JavaScript:基本包装类型

    为了方便操作,JavaScript提供了3个特殊的引用类型:Boolean.Number和String.实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而可以调用这些 ...

  8. 【深度学习笔记】Anaconda及开发环境搭建

    在学习了一段时间台大李宏毅关于deep learning的课程,以及一些其他机器学习的书之后,终于打算开始动手进行一些实践了. 感觉保完研之后散养状态下,学习效率太低了,于是便想白天学习,晚上对白天学 ...

  9. Beyond Compare3 注册密钥和添加到右键菜单

    本人使用的是 Beyond Compare 3 ,版本 3.3.8(build 16340),密钥应收Beyond Compare 3都能够使用. 如想查看密钥,请参考本文末尾的隐藏内容 Beyond ...

  10. UNIX简化路径

    Given an absolute path for a file (Unix-style), simplify it. For example, path = “/home/”, => “/h ...