Xgboost调参策略

 Xgboost参数


- 'booster':'gbtree',梯度提升决策树
- 'objective': 'multi:softmax', 多分类的问题
- 'num_class':10, 类别数,与 multisoftmax 并用
- 'gamma':损失下降多少才进行分裂,这个需要调一下,越大越不易过拟合,但是模型性能会降低。
- 'max_depth':12, 构建树的深度,越大越容易过拟合
- 'lambda':1,  控制模型复杂度的权重值的L2正则化项参数,参数越大,模型越不容易过拟合。一般不用调,设为1就好了(或者有其他经验)
- 'subsample':0.7, 随机采样训练样本,支持样本随机采样
- 'colsample_bytree':0.7, 生成树时进行的列采样,也就是对特征随机采样
- 'min_child_weight':3, 孩子节点中最小的样本权重和。如果一个叶子节点的样本权重和小于min_child_weight则拆分过程结束
- 'silent':0 ,设置成1则没有运行信息输出,最好是设置为0.
- 'eta': 0.007, 如同学习率,这棵树的百分之0.7的一个结果,如果为1 说明这个树全加进了来了,也就是每棵树不是取完全的贡献,而是取百分之多少 ,也就是 Shrinkage 缩减
- 'seed':1000,
- 'nthread':7, cpu 线程数

有关参数更详细的介绍:https://baijiahao.baidu.com/s?id=1613550753243799306&wfr=spider&for=pc

xgboost调参经验

https://blog.csdn.net/u010414589/article/details/51153310

自定义评价函数(feval):https://blog.csdn.net/u014712516/article/details/79045402

Xgboost调参策略

调参的策略,随着数据集的增大,逐渐的选择较少的参数分组去调

划重点: 分组进行调节


* Step 1: 选择一组初始参数
* Step 2: 改变 `max_depth` 和 `min_child_weight`.树模型复杂程度

这些参数对xgboost性能影响最大,因此,他们应该调整第一。

  • max_depth: 树的最大深度。增加这个值会使模型更加复杂,也容易出现过拟合,深度3-10是合理的。

  • min_child_weight: 正则化参数. 如果树分区中的实例权重小于定义的总和,则停止树构建过程。

注:分数的提高主要是基于max_depth增加,min_child_weight稍有影响的成绩,可以根据画图得到

* Step 3: 调节 `gamma` 降低模型过拟合风险.

我们选择分高的一些偏小一些的 `gamma`。可以令'gamma':[ 0.1 * i for i in range(0,5)]


* Step 4: 调节 `subsample` 和 `colsample_bytree` 改变数据采样策略.
* Step 5: 调节学习率 `eta`.

参数优化的最后一步是降低学习速度,同时增加更多的估计量(树个数)

` ETA `和` num_boost_round `之间的关系:若有较小的学习率(ETA),应增大树的个数(num_boost_round)

你可能感兴趣的:(机器学习)