记一次LightGBM-GBDT参数调整经历

  1. 云栖社区>
  2. 博客>
  3. 正文

记一次LightGBM-GBDT参数调整经历

uncle_ll 2019-05-09 19:56:35 浏览652
展开阅读全文

记一次LightGBM-GBDT参数调整经历

调整原因:项目要从有验证集的训练方式转变为无验证集的训练方式。

问题:有验证集的训练方式可以通过验证集earlystop来控制训练的过拟合问题,换成无验证集的训练方式后,无法继续通过使用earlystop这种方式来减少过拟合了,需要增强其他的正则。

项目使用工具包:LightGBM,树模型为GBDT

相关的原理这里不做过多的介绍,上面的文档以及网络上资源很多,这里主要涉及参数调整实录。

官方文档给的建议:

lightgbm的参数有很多:

可以针对性的看一下

over-fitting

WX20190509_195303_2x

可以看到参数有好几个可供调整,但针对不同的树,调整的参数不一样。

这里是调节GBDT树,选的参数有三个:

  • lambda_l2: l2 regularization;
  • min_data_in_leaf:minimal number of data in one leaf;
  • bagging_fraction: this will randomly select part of data without resampling;

三个参数分别控制L2正则,一个叶子中数据最少量,随机采样(相当于剪枝)

参数仿真

1.lambda_l2

lambda_value train(auc) valid(abc)
Early stop 0.0 0.7375 0.6544
0.1 0.742 0.6540
0.2 0.7249 0.6544
0.3 0.7653 0.6557
0.4 0.7883 0.6586
0.5 0.764 0.6566
0.35 0.7517 0.6565
0.38 0.7914 0.6561

2.min_data_in_leaf

min_data_in_leaf value train valid
early stop 20 0.7375 0.6544
200 0.77433 0.6592
500 0.7694 0.6628
1000 0.76372 0.6646
2000 0.75665 0.6622
3000 0.7564 0.66335
20000 0.7482 0.661

3.bagging_fraction

bagging_fraction value train valid
early stop 1.0 0.7375 0.6544
0.9 0.7375 0.6544
0.8 0.7375 0.6544

从上述实验中可以看到,lambda_l2和min_data_in_leaf有效果,而bagging_fraction无效果

合起来实验

lambda value, min data in leaf train test
0.1,1000 0.7677 0.661708
0.1,500 0.772 0.662445
0.1, 200 0.776361 0.6585
0.4,200 0.7755 0.656514
0.4,500 0.7723 0.66195
0.4, 1000 0.7679 0.66207

最终选定参数为lambda_l2=0.1min_data_in_leaf=500

总结

  • lambda_l2和min_data_in_leaf对过拟合有比较明显的效果,而bagging_fraction效果不大;
  • min_data_in_leaf的值越大,仿真越慢,一般是几百至几千;
  • lightGBM可调参数很多,可进行不断的尝试;

网友评论

登录后评论
0/500
评论
uncle_ll
+ 关注