LightGBM参数

LightGBM的优势。

  1. 更快的训练速度和更高的效率: LightGBM使用基于直方图的算法。例如,它将连续的特征值分桶(buckets)装进离散的箱子(bins),这是的训练过程中变得更快。

  2. 更低的内存占用:使用离散的箱子(bins)保存并替换连续值导致更少的内存占用。

  3. 更高的准确率(相比于其他任何提升算法) : 它通过leaf-wise分裂方法产生比level-wise分裂方法更复杂的树,这就是实现更高准确率的主要因素。然而,它有时候或导致过拟合,但是我们可以通过设置 max-depth 参数来防止过拟合的发生。

  4. 大数据处理能力: 相比于XGBoost,由于它在训练时间上的缩减,它同样能够具有处理大数据的能力。

  5. 支持并行学习

 

LightGBM的重要参数

  • task: 默认值=train,可选项=train,prediction;指定我们希望执行的任务,该任务有两种类型:训练 和 预测;

  • application: 默认值=regression,type=enum,options=options;

    • regression: 执行回归任务;

    • binary:二分类;

    • multiclass:多分类;

    • lambdarank:lambrank应用;

  • data: type=string;training data,LightGBM将从这些数据中进行训练;

  • num_iterations: 默认值为100,类型为int。表示提升迭代次数,也就是提升树的棵树;

  • num_leaves: 每个树上的叶子数,默认值为31,类型为int;

  • device: 默认值=cpu;可选项:cpu,gpu。也就是我们使用什么类型的设备去训练我们的模型。选择GPU会使得训练过程更快;

  • mindatain_leaf: 每个叶子上的最少数据;

  • feature_fraction: 默认值为1;指定每次迭代所需要的特征部分;

  • bagging_fraction: 默认值为1;指定每次迭代所需要的数据部分,并且它通常是被用来提升训练速度和避免过拟合的。

  • mingainto_split: 默认值为1;执行分裂的最小的信息增益;

  • max_bin: 最大的桶的数量,用来装数值的;

  • mindatain_bin: 每个桶内最少的数据量;

  • numthreads: 默认值为OpenMPdefault,类型为int。指定LightGBM算法运行时线程的数量;

  • label: 类型为string;指定标签列;

  • categorical_feature: 类型为string;指定我们想要进行模型训练所使用的特征类别;

  • num_class: 默认值为1,类型为int;仅仅需要在多分类的场合。

 

6.1 为了最好的拟合

  • numleaves:这个参数是用来设置组成每棵树的叶子的数量。numleaves 和 maxdepth理论上的联系是: numleaves = 2^(maxdepth)。然而,但是如果使用LightGBM的情况下,这种估计就不正确了:因为它使用了leafwise而不是depthwise分裂叶子节点。因此,numleaves必须设置为一个小于2^(maxdepth)的值。否则,他将可能会导致过拟合。LightGBM的numleave和max_depth这两个参数之间没有直接的联系。因此,我们一定不要把两者联系在一起。

  • mindatain_leaf : 它也是一个用来解决过拟合的非常重要的参数。把它的值设置的特别小可能会导致过拟合,因此,我们需要对其进行相应的设置。因此,对于大数据集来说,我们应该把它的值设置为几百到几千。

  • max_depth: 它指定了每棵树的最大深度或者它能够生长的层数上限。

6.2 为了更快的速度

  • bagging_fraction : 它被用来执行更快的结果装袋;

  • feature_fraction : 设置每一次迭代所使用的特征子集;

  • maxbin : maxbin的值越小越能够节省更多的时间:当它将特征值分桶装进不同的桶中的时候,这在计算上是很便宜的。

6.3 为了更高的准确率

  • 使用更大的训练数据集;

  • num_leaves : 把它设置得过大会使得树的深度更高、准确率也随之提升,但是这会导致过拟合。因此它的值被设置地过高不好。

  • maxbin : 该值设置地越高导致的效果和numleaves的增长效果是相似的,并且会导致我们的训练过程变得缓慢。

### LightGBM 参数详解 #### 主要参数概述 LightGBM 的主要参数可以分为几大类:通用参数、数据相关参数、目标函数参数和学习控制参数。这些参数共同决定了模型的行为和性能。 - **num_leaves**: 控制树的最大叶子数,默认值为 31。增加此数值可以使模型更复杂,但也可能导致过拟合[^1]。 - **max_depth**: 设置树的最大深度,默认情况下不设置最大深度。通常与 `num_leaves` 配合使用来防止过拟合。 - **learning_rate (eta)**: 学习率,默认值为 0.1。较小的学习率意味着需要更多的迭代次数才能达到相同的训练效果,但能获得更好的泛化能力。 - **n_estimators**: 树的数量,默认值为 100。更多数量的树可能会提高准确性,同时也增加了计算成本。 - **objective**: 定义学习任务的目标函数,常见的选项包括二分类 (`binary`) 和多分类 (`multiclass`) 等。 ```python import lightgbm as lgb params = { 'boosting_type': 'gbdt', 'objective': 'binary', 'metric': {'l2', 'auc'}, 'num_leaves': 31, 'learning_rate': 0.05, 'feature_fraction': 0.9 } ``` #### 自定义评估函数 feval 为了实现更加灵活的评价标准,在 Python API 中可以通过传递额外的关键字参数 `feval` 来指定自定义的评估函数。该函数接收真实标签 y_true 和预测概率 p_pred,并返回名称、分数及是否越大越好三个部分组成的元组。 ```python def custom_metric(y_true, y_pred): """Custom evaluation metric.""" score = some_custom_scoring_function(y_true, y_pred) return 'custom_score', score, True # 或者 False 如果越低越好 bst = lgb.train(params, train_data, valid_sets=[validation_data], feval=custom_metric) ``` #### 性能优化技巧 针对不同的应用场景,调整上述提到的核心超参能够有效提升模型的表现: - 对于大规模稀疏特征的数据集,适当减少 `min_child_samples` 可以帮助构建更深更复杂的树结构; - 当面临类别不平衡问题时,考虑引入权重机制或修改损失函数中的正负样本比例因子; - 利用交叉验证技术寻找最优组合,比如通过 GridSearchCV 或 RandomizedSearchCV 进行网格搜索/随机搜索。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值