朵小喵儿|LightGBM的参数详解以及如何调优( 二 )
您应该知道 , 对于较小的数据集(<10000条记录) , lightGBM可能不是最佳选择 。 在这里 , 调优lightgbm参数可能没有帮助 。
此外 , lightgbm使用叶向树生长算法 , 而xgboost使用深度树生长算法 。 叶向方法使树的收敛速度更快 , 但过拟合的几率增加 。
注意:如果有人问您LightGBM和XGBoost之间的主要区别是什么?你可以很容易地说 , 它们的区别在于它们是如何实现的 。
根据lightGBM文档 , 当面临过拟合时 , 您可能需要做以下参数调优:
· 使用更小的max_bin
· 使用更小的num_leaves
· 使用mindatainleaf和minsumhessianin_leaf
· 通过设置baggingfraction和baggingfreq使用bagging_freq
· 通过设置feature_fraction使用特征子采样
· 使用更大的训练数据
· 尝试lambdal1、lambdal2和mingainto_split进行正则化
· 尝试max_depth以避免树的深度增长
在下面的部分中 , 我将更详细地解释这些参数 。
lambda_l1
Lambdal1(和lambdal2)控制l1/l2 , 以及mingainto_split用于防止过拟合 。 我强烈建议您使用参数调优(在后面的小节中讨论)来确定这些参数的最佳值 。
num_leaves
numleaves无疑是控制模型复杂性的最重要参数之一 。 通过它 , 您可以设置每个弱学习者拥有的叶子的最大数量 。 较大的numleaves增加了训练集的精确度 , 也增加了因过度拟合而受伤的几率 。 根据文档 , 一个简单的方法是numleaves = 2^(maxdepth)但是 , 考虑到在lightgbm中叶状树比层次树更深 , 你需要小心过度拟合!因此 , 必须同时使用maxdepth调优numleaves 。
子采样
通过子样例(或bagging_fraction) , 您可以指定每个树构建迭代使用的行数百分比 。 这意味着将随机选择一些行来匹配每个学习者(树) 。 这不仅提高了泛化能力 , 也提高了训练速度 。
我建议对基线模型使用更小的子样本值 , 然后在完成其他实验(不同的特征选择 , 不同的树结构)时增加这个值 。
feature_fraction
特征分数或子特征处理列采样 , LightGBM将在每次迭代(树)上随机选择特征子集 。 例如 , 如果将其设置为0.6,LightGBM将在训练每棵树之前选择60%的特性 。
这个功能有两种用法:
1. 可以用来加速训练吗
1. 可以用来处理过拟合吗
max_depth
该参数控制每棵经过训练的树的最大深度 , 将对:
· num_leaves参数的最佳值
· 模型的性能
· 训练时间
注意 , 如果您使用较大的max_depth值 , 那么您的模型可能会对于训练集过拟合 。
max_bin
装箱是一种用离散视图(直方图)表示数据的技术 。 Lightgbm在创建弱学习者时 , 使用基于直方图的算法来寻找最优分割点 。 因此 , 每个连续的数字特性(例如视频的视图数)应该被分割成离散的容器 。
此外 , 在这个GitHub repo(huanzhang12/lightgbm-gpu)中 , 你可以找到一些全面的实验 , 完全解释了改变max_bin对CPU和GPU的影响 。
推荐阅读
- 一朵小女子七七|佛系也是原罪?,一线教师不争荣誉不抢职称惨遭下岗
- 一朵小女子七七|事关中小学生!家长:觉都不够睡,教育部明确:提高体育分值
- 朵小喵儿5G芯片再创纪录,两大国产芯片企业大突破,不怕以后被限制
- 时尚穿搭|送你一朵小红花!这些针织衫上点缀小花花,时尚又甜美
- 朵小喵儿阿里创业之初的前台小姐,马云给了她0.2%股份,如今过的如何
- 朵小喵儿红米10月新机要来,144Hz+骁龙865,K30至尊版怕吗
- 朵小喵儿 套路深!网友道出了苹果14号发布会的内幕
- 朵小喵儿生活小技巧:手机发热,耗电快?教你一招,立马解决!
- 朵小喵儿动作很快!华为这个项目进展顺利,宣布今后的长期目标
- 朵小喵儿 5 个新变化,微信大更新!聊天会话可隐藏,还有这