LGB : 关于调参的一些说明

本文探讨了针对过拟合问题的模型调参策略,包括调整num_leaves、max_depth、learning_rate等参数以提高预测准确性,以及通过数据抽样、正则化等手段降低过拟合风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接?


调参核心


  • 调参1:提高准确率":num_leaves, max_depth, learning_rate
  • 调参2:降低过拟合 max_bin min_data_in_leaf
  • 调参3:降低过拟合 正则化L1, L2
  • 调参4:降低过拟合 数据抽样 列抽样

调参方向:处理过拟合(过拟合和准确率往往相反)


  • 使用较小的 max_bin

  • 使用较小的 num_leaves

  • 使用 min_data_in_leafmin_sum_hessian_in_leaf

  • 通过设置 bagging_fractionbagging_freq 来使用 bagging

  • 通过设置 feature_fraction <1来使用特征抽样

  • 使用更大的训练数据

  • 使用 lambda_l1, lambda_l2min_gain_to_split 来使用正则

  • 尝试 max_depth 来避免生成过深的树

调参范围


### LightGBM 模型调参的关键参数及其最佳实践 在构建基于 LightGBM 的机器学习模型时,合理调整超参数可以显著提升模型性能。以下是几个关键的调参参数以及其作用说明: #### 1. **树结构相关参数** - `num_leaves`: 控制单棵树的最大叶子数。较大的值会提高模型复杂度并可能导致过拟合。通常建议将其设置为不超过总数据样本数的一定比例[^4]。 - `max_depth`: 设置树的最大深度,默认情况下不受限。如果发现模型容易过拟合,可以通过限制最大深度来缓解这一问题。 #### 2. **学习率与迭代次数** - `learning_rate` (或 eta): 学习速率决定了每次更新步长大小。较低的学习率配合更多的迭代次数 (`n_estimators`) 可以带来更好的泛化能力,但也增加了训练时间[^1]。 #### 3. **正则化参数** 为了防止过拟合,引入了两种类型的 L2 正则项: - `lambda_l1`, `lambda_l2`: 分别对应L1 和 L2 正则化强度。适当增大这两个数值有助于降低模型复杂度,从而改善测试集上的表现[^3]。 #### 4. **特征分数计算方式** - `feature_fraction`: 随机选取部分特征参与分裂决策的比例。类似于随机森林中的特性采样机制,能够有效减少过拟合并加速收敛过程。 - `bagging_fraction`: 类似于子样本抽取比率的概念,允许我们仅利用一部分训练实例来进行每轮Boosting操作。需要注意的是启用此选项需同时开启`bagging_freq`. #### 5. **类别变量处理** 当存在分类属性时,无需像传统方法那样先做One-Hot Encoding转换再喂给算法,因为LightGBM内部已经针对这类字段做了专门优化——即many-vs-many策略划分节点[^2]. 这不仅节省内存开销而且提高了效率. #### 示例代码 下面给出一段简单的Python脚本展示如何应用上述提到的一些重要参数: ```python import lightgbm as lgb params = { 'boosting_type': 'gbdt', 'objective': 'binary', 'metric': {'auc'}, 'num_leaves': 31, 'learning_rate': 0.05, 'feature_fraction': 0.9, # 特征抽样比例 'bagging_fraction': 0.8, # 数据行抽样比例 'bagging_freq': 5, # k次迭代执行一次bagging 'verbose': 0, 'lambda_l1': 0.1, # L1正则化系数 'lambda_l2': 0.1 # L2正则化系数 } train_data = lgb.Dataset(X_train, label=y_train) test_data = lgb.Dataset(X_test, label=y_test) model = lgb.train(params, train_data, valid_sets=[test_data], num_boost_round=1000, early_stopping_rounds=100) ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值