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

简介: 记一次LightGBM-GBDT参数调整经历 调整原因:项目要从有验证集的训练方式转变为无验证集的训练方式。 问题:有验证集的训练方式可以通过验证集earlystop来控制训练的过拟合问题,换成无验证集的训练方式后,无法继续通过使用earlystop这种方式来减少过拟合了,需要增强其他的正则。

记一次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可调参数很多,可进行不断的尝试;
目录
相关文章
|
算法 Python
LightGBM高级教程:自动调参与超参数优化
LightGBM高级教程:自动调参与超参数优化【2月更文挑战第5天】
1524 2
|
Ubuntu NoSQL IDE
树莓派开发笔记(二):qt开发环境搭建:树莓派qt编译和宿主机qt交叉编译
树莓派开发笔记(二):qt开发环境搭建:树莓派qt编译和宿主机qt交叉编译
树莓派开发笔记(二):qt开发环境搭建:树莓派qt编译和宿主机qt交叉编译
|
5月前
|
数据可视化 Python
【负荷预测】基于变分模态分解(VMD-CNN-LSTM)的短期电力负荷预测【Python】
本项目实现了一种基于变分模态分解(VMD)的短期电力负荷预测模型——VMD-CNN-LSTM。通过VMD技术将原始电力负荷数据分解为多个平稳子序列,结合温度和时间等特征构建矩阵,输入CNN-LSTM模型训练,最终叠加重构得到预测结果。此方法有效应对非线性和非平稳性引起的误差,精度高且稳定性强。程序采用Python编写,注释清晰,运行稳定,并提供直观的可视化结果。附带部分代码及详细运行结果展示,下载链接已提供。
|
10月前
|
JavaScript
使用Node.js创建一个简单的Web服务器
使用Node.js创建一个简单的Web服务器
|
SQL JSON 数据库
influxdb 端点使用http进行sql查询,写数据
influxdb 端点使用http进行sql查询,写数据
641 0
|
10月前
|
监控 数据可视化 搜索推荐
6 款办公软件对比评测:谁在团队项目可视化管理中脱颖而出?
本文深入评测了6款办公软件,包括板栗看板、Trello、Asana、Monday.com、ClickUp和Wrike,重点分析了它们在团队项目可视化精细管理中的功能特性与优势。板栗看板以其直观的界面、便捷的任务操控、高效的团队协作和精准的数据洞察,成为中小团队快速实现项目管理可视化的理想选择。其他软件也各有千秋,适合不同规模和需求的团队使用。
239 1
|
数据采集 机器学习/深度学习 Python
在Python中进行特征编码
在Python中进行特征编码
256 1
|
机器学习/深度学习 数据采集 数据可视化
基于数据挖掘与机器学习揭秘脱发主因
基于数据挖掘与机器学习揭秘脱发主因
294 0
|
机器学习/深度学习 Dart 索引
【掰开揉碎】lightgbm params 各参数含义
【掰开揉碎】lightgbm params 各参数含义
346 0
|
分布式计算 MaxCompute
如何绕过ODPS不支持的笛卡尔积的限制
`` select * from pn_tablename a join pn_tablename b; `` odps不支持无 on 的 join 会报 ODPS-0130252 Cartesian product is not allowed without map join 的错误 可以.
12815 0

热门文章

最新文章