LightGBM(Light gradient-boosting machine)是由微软开发的一个梯度提升框架,以其卓越的性能和较低的内存占用而闻名。在本文中,我们将基于威斯康星州乳腺癌数据集,深入探讨 LightGBM 的特性参数。
什么是 LightGBM?
微软推出的 LightGBM(Light Gradient Boosting Machine)是一个开源、分布式且高性能的梯度提升系统。它的设计初衷是为了高效训练大规模机器学习模型,尤其在处理具有海量特征和样本的数据集时表现尤为出色。
LightGBM 的独到之处在于,即便面对庞大的数据集,它依然能够快速高效地工作。它采用了以下技术:
- 基于梯度的单侧采样:通过专注于最重要的数据点来加速训练过程。
- 互斥特征捆绑:将相关特征分组在一起,使模型更容易学习到其中的模式。
此外,LightGBM 的 叶子分裂(按最佳优先)策略,通过选择具有 最大 delta loss 的叶子进行生长,有助于高效地创建决策树,并且相比于按层分裂的算法,能产生更低的损失。 !Tree
LightGBM 中的特性参数
LightGBM 提供了大量的参数,我们可以通过调整这些参数来控制模型训练和预测的各个方面。
让我们来探索一些常用的特性参数及其使用场景:
#### 1. boosting (默认为 gbdt)
它决定了在模型训练过程中使用的提升策略。
- gbdt (Gradient Boosting Decision Tree):它利用传统的梯度提升技术,并以决策树作为基学习器。
- dart (Dropouts meet Multiple Additive Regression Trees):在每一次提升迭代中,它会随机丢弃(忽略)一部分树。这种丢弃机制有助于防止过拟合,并且在大多数情况下能提供更好的准确率。我们可以通过以下参数进一步控制 dart:
– drop_rate (0 到 1.0): 要丢弃的树的比例。
– max_drop: 在一次提升迭代期间丢弃的最大树数量。
– skip_drop (0 到 1.0): 在提升迭代中跳过丢弃过程的概率。
– drop_seed: 用于选择丢弃模型的随机种子。
- rf: 随机森林独立构建树并结合它们的预测结果。
#### 2. datasamplestrategy (默认为 bagging)
datasamplestrategy 就像是一个 用于选择学习数据的工具。
- bagging (Randomly Bagging Sampling):这就像是对你的数据进行随机采样并从中学习。如果你想操控默认的 bagging,可以修改以下参数:
– bagging_freq > 0
– bagging_fraction < 1.0
- goss (Gradient-based One-Side Sampling):GOSS 是一种巧妙的方法,它根据数据点的重要性来进行选择。它更关注具有较大梯度的样本,因为这些样本对模型的教导意义最大。就像 bagging 一样,我们可以通过以下参数来修改 goss:
– top_rate: 大梯度数据的保留比例。
– bottom_rate: 小梯度数据的保留比例。
#### 3. learning_rate
它决定了模型在训练过程中更新参数的步长。
较小的 learning rate,例如 0.01,意味着步长微小,模型学习速度较慢但可能会获得非常高的精度。较大的学习率,例如 0.1,意味着步长较大,学习速度更快,但可能会错过最优解。
#### 4. objective (默认为 regression)
目标函数有很多种,我们在此列出最常用的几种:
- regression:模型预测一个连续值,例如根据特征预测房价。
- binary:在二分类问题中,LightGBM 使用 Logistic regression,模型预测两个类别中的一个,类似于“是”或“否”、“男”或“女”等。
#### 5. num_iterations (默认为 100)
模型在训练期间应该进行的提升迭代次数。
#### 6. metric (默认 = "")
用于指定在模型训练过程中评估其性能的评估指标。你可以提供单个指标或指标列表进行评估,例如 ‘metrics‘: [‘auc‘, ‘binary_logloss‘]
当 metric 被设置为空字符串 ("") 或者未指定时,LightGBM 会自动使用对应的指标。