LightGBM

发布于:2024-04-10 ⋅ 阅读:(152) ⋅ 点赞:(0)

一、调优参数Leaf-wise树(最佳优先)

LightGBM使用叶向树生长算法,而许多其他流行的工具使用深度树生长。与深度增长算法相比,叶向增长算法收敛速度更快。然而,如果不使用合适的参数,叶向生长可能会过拟合。

要使用叶状树获得良好的结果,以下是一些重要的参数:

1、num_leaves。这是控制树模型复杂度的主要参数。理论上,我们可以设置num_leaves = 2(max_depth)来获得与深度树相同数量的叶子。然而,这种简单的转换在实践中并不好。原因是,对于固定数量的叶子,叶型树通常比深度型树要深得多。无约束深度会引起过拟合。因此,当尝试优化num_leaves时,我们应该让它小于2(max_depth)。例如,当max_depth=7时,深度树可以获得很好的精度,但是将num_leaves设置为127可能会导致过拟合,将其设置为70或80可能会比深度树获得更好的精度。

2、min_data_in_leaf。这是防止叶状树过度拟合的一个非常重要的参数。它的最优值取决于训练样本的数量和num_leaves。将它设置为一个大的值可以避免树长得太深,但是可能会导致不合适。实际上,将其设置为数百或数千对大型数据集来说就足够了。

3、max_depth。还可以使用max_depth显式地限制树的深度。

二、更快的速度

1、通过设置bagging_fraction和bagging_freq来使用bagging

2、通过设置feature_fraction使用特征子采样

3、使用小型max_bin

4、在以后的学习中使用save_binary来加速数据加载

5、使用并行学习,参考并行学习指南

三、为了更好的精度

1、使用大的max_bin(可能会慢一些)

2、使用小的learning_rate和大的num_iteration

3、使用大的num_leaves(可能导致过拟合)

4、使用更大的训练数据

5、试着dart

四、处理过拟合

1、使用小型max_bin

2、使用小型num_leaves

3、使用min_data_in_leaf和min_sum_hessian_in_leaf

4、使用bagging_fraction和bagging_freq设置袋装

5、使用set feature_fraction进行特征子采样

6、使用更大的训练数据

7、尝试lambda_l1、lambda_l2和min_gain_to_split进行正则化

尝试max_depth以避免树长得太深

作者:Threathunter
链接:https://www.jianshu.com/p/7122a19083d2
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


网站公告

今日签到

点亮在社区的每一天
去签到