xgboost调参

Xgboost调参

英文版参考:https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/

 

Xgboost经常被用作许多数据科学家的终极武器—有多厉害不用强调了。

但是使用xgboost很简单,提高其性能就很难了。算法有太多的参数,为了提高性能,调参是必不可少的,对于一个实际问题,很难回答说—你应该tune哪个参数集?为了得到理想输出,这些参数应该如何设置?

本文会介绍xgboost调参的一些相关知识,面向初学者~

你应该知道什么?

XGBoost (eXtreme Gradient Boosting)是梯度提升算法的高级实现。

 

目录

1.The XGBoost Advantage

2.Understanding XGBoost Parameters

3.Tuning Parameters (with Example)

 

1.The XGBoost Advantage

Ø  正则化:标准GBM(Gradient Boosting Model)没有实现正则化。因此xgboost对正则化的实现可以帮助减少overfitting。

Ø  并行处理:比GBM快很多很多!【但是问题来了,boosting明显是串行结构啊,每一步的权值要根据上一步结果变化的,这是怎么做到的呢?参考http://zhanpengfang.github.io/418home.html   后续有时间的话我会再介绍相关知识。】

Ø  高灵活性:运行用户自定义优化目标和评价准则。

Ø  处理缺失值:内置程序可处理缺失值。

Ø  树剪枝:GBM会在遭遇负损失的时候停止分裂,因而这更多是贪心算法;xgboost可以分裂到max_depth深度,然后开始剪枝。

Ø  内置交叉验证:允许用户在每次迭代的时候运行交叉验证,因而可以很容易在一次运行中得到最优迭代次数。

Ø  在已有模型上继续

以上,more about xgboost,see http://xgboost.readthedocs.io/en/latest/model.html【恩,后续可能会看,也可能会翻译,敬请期待~~xgboost原理篇

 

 

2.Understanding XGBoost Parameters

Xgboost的参数可以分为三类:

Ø  一般参数:指导全面运转;

Ø  Booster参数:指导每一步中的个体booster(树/回归)

Ø  学习任务参数:指导优化执行

2.1 GeneralParameters

²  Booster[default = gbtree]

选择每次迭代运行的模型类型:gbtree(基于树的模型)/gblinear(线性模型)

²  silent[default = 0]

设置为1的话是silent模式,也就是不会打印运行信息,一般保持为0来帮助理解模型。

²  nthread[default to maximum number of threads available if not set]

用于并行处理,可以输入系统核数。如果你想要在所有核上运行,那么不需要输入,算法会自动检测。

还有两个参数,xgboost会自动设置,你不需要关心~

2.2Booster

尽管有两种booster(上面generalparameters也有提及),我们在这里只考虑tree booster因为它通常比linear性能好,因而linear几乎不被使用。

²  eta[default = 0.3]

类似GBM中的learning rate。在每一步中收缩该值会使模型更健壮。

典型的值是0.01-0.2。

²  min_child_weight [default = 1]

定义孩子中所有观察值的权重和的最小值。

类似于GBM中的min_child_leaf,但不完全一样。Xgboost这个是权重之和,GBM是最小数量。

该值用于控制过拟合,Higher value防止模型过拟合,但过高则会导致欠拟合,因此该值需要tuned using CV。

²  max_depth[default = 6]

树的最大深度,与GBM中一致。用于控制过拟合,因为高的深度会允许模型学习到某个样本中过于具体的规则。

需要be tuned using CV,典型值是3-10。

²  max_leaf_nodes

树的末端节点,即叶子的最大数量。可替代max_depth[因为是二叉树嘛,深度为n的树就会有2^n个叶子],如果定义了该值,则会忽略max_depth。

²  gamma[default = 0]

gamma定义了分裂所需的最小损失。该参数根据损失函数的不同会有不同,而且需要be tuned。

²  max_delta_step[default = 0]

该参数一般不需要,但是可能在logistic回归且类别极度不均衡的时候有帮助。

²  subsample[default = 1]

与GBM中的subsample一样。指示每个树的随机采样分数。

²  colsample_bytree [default=1]

²  colsample_bylevel [default=1]

不常用

²  lambda [default=1]

权重的L2正则项(与岭回归相似)

用于处理xgboost的正则化部分,可以用于缓和过拟合。

²  alpha [default=0]

权重的L1正则项(类似Lasso回归)

可以在超高维的情况下使用,以至于算法可以运行的更快。

²  scale_pos_weight [default=1]

在类别十分不均衡时,使该值大于0,可以帮助快速收敛。

2.3运行任务参数

这些参数用于定义每一步中的优化目标,度量准则。

²  objective[default = reg:linear]

定义了需要最小化的损失函数,常用:

二分类:logistic—返回预测概率,而非类别。

多分类:softmax

多分类:softprob

²  eval_metric[default according to objective]

验证数据所使用的准则。

对回归和分类误差缺省使用rmse

典型的值有:

rmse、mae、logloss、error、merror、mlogloss、auc

²  seed[default = 0]

随机数种子,可用于生成可再生/可复写的结果。

For官方的参数介绍,see http://xgboost.readthedocs.io/en/latest/parameter.html#general-parameters

 

3.Tuning Parameters (with Example)

一般调参方法:

²  选择相对高的学习速率(learning rate)。通常0.1works,但是有时0.05-0.3works。对该学习速率决定最优树数目。Xgboost有一个十分有用的函数---‘cv’,它在每次迭代过程中运行交叉验证,然后返回所需的最优树数目。

²  Tune tree-specific参数

²  Tune正则化参数: lambda,alpha,可以帮助降低model复杂度,增强性能。

²  降低学习速率并决定最优参数。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值