LightGBM - 核心参数



这些是在使用像 LightGBM 这样的机器学习模型时可以更改的主要设置或选项。它们控制着模型如何从数据中学习,这对模型的准确性和性能有重要影响。

使用关键参数,可以为您的特定数据、任务和限制定制 LightGBM 模型。通过更改这些参数,您可以优化模型的效率、速度和泛化能力。

为什么使用核心参数

LightGBM 中的核心参数可以帮助您 -

  • 控制模型复杂度:限制树的大小和深度,避免使模型过于简单(遗漏模式)或过于复杂(拟合噪声)。

  • 提高准确性:更改模型的学习过程,例如它应该学习的速度,以快速发现最佳选项。

  • 防止过拟合:使用限制或惩罚来防止模型学习数据中的噪声而不是潜在模式。

  • 加速训练:通过决定每个阶段使用多少数据和多少特征来加快训练速度。

  • 适应不同的任务:为您的特定问题(如回归或分类)选择最佳设置,并正确监控性能。

LightGBM 中的核心参数

在这里,我们将重点关注控制模型行为的核心 LightGBM 参数 -

1. boosting_type (默认值 = 'gbdt')

此参数控制训练过程中使用的提升技术。选项如下 -

  • 'gbdt'(梯度提升决策树):默认方法,称为“梯度提升决策树”或“gbdt”,使用梯度提升依次构建决策树。

  • 'dart'(Dropout 遇见多加性回归树):在训练期间,一些树会被随机消除以防止过拟合。

  • 'goss'(基于梯度的单侧采样):选择具有较大梯度的显著数据点以加速训练。

  • 'rf'(随机森林):随机森林,称为“rf”,独立创建树并聚合其预测。

2. objective

创建 LightGBM 将尝试优化的损失函数或目标函数。

  • 'regression':用于预测连续变量的技术,例如房价。

  • 'binary':对于涉及二元分类的任务(例如,是/否,垃圾邮件/非垃圾邮件)使用“binary”。

  • 'multi-class':要指代涉及多类分类的问题,请使用“multi-class”。

3. metric

此参数提供将用于评估模型性能的评估指标。

  • 'binary_logloss':二分类的对数损失。

  • 'auc':ROC 曲线下面积,主要用于分类任务。

  • 'rmse':指回归情况下的均方根误差。

4. learning_rate (默认值 = 0.1)

此核心参数控制每次迭代向损失函数最小值移动时的步长。

  • 较低的值(如 0.01)表示学习速度较慢但准确性较高。

  • 较高的数字(例如,0.1)可能允许更快的学习,但存在错过最佳响应的风险。

5. num_iterations (默认值 = 100)

它主要用于设置模型应运行的提升迭代次数。较高的值意味着更多的提升轮次和更好的学习,但它会增加训练时间。

6. num_leaves (默认值 = 31)

它用于确定每棵树的复杂度。

  • 较高的值提供更复杂的树,但可能导致过拟合。

  • 较低的值简化了树,减少了过拟合的可能性。

7. max_depth (默认值 = -1)

它主要用于限制树的最大深度。如果将其设置为 -1,则表示没有限制。

  • 较低的值(例如 3 或 5)减少了深度,从而减少了模型。

  • 较高的数字允许更深的树,这可以检测更复杂的模式,但可能会过拟合。

8. min_data_in_leaf (默认值 = 20)

它是叶节点中所需的最小数据点数量。

  • 较高的数字通过确保每个叶节点都有足够的数据点来降低过拟合的可能性。

  • 较低的值可以提高模型的灵活性,同时增加过拟合的危险。

9. feature_fraction (默认值 = 1.0)

它用于控制用于训练每棵树的特征数量。

  • 分数 1.0 表示完全使用所有特征。

  • 小于 1.0 的值随机选择一组子集,从而防止过拟合。

10. bagging_fraction (默认值 = 1.0)

确定每次迭代中用于训练的数据点比例。

  • 值 1.0 代表所有数据点。

  • 较低的值包含一个随机子集,这增加了随机性并有助于防止过拟合。

11. bagging_freq (默认值 = 0)

确定 Bagging 的频率。如果设置为正值,则启用 Bagging,并且数据会在每个 bagging_freq 周期随机选择。

12. lambda_l1 & lambda_l2 (默认值 = 0.0)

它分别控制 L1 和 L2 正则化。较高的值会向模型添加正则化,通过惩罚较大的值来防止过拟合。

13. min_gain_to_split (默认值 = 0.0)

它是创建叶节点上的另一个分割所需的最小增益。较高的值使模型更加保守,从而防止过拟合。

使用核心参数实现 LightGBM

让我们使用 LightGBM 为乳腺癌数据集构建一个使用这些核心参数的模型 -

安装 LightGBM

首先运行以下命令以在您的系统中安装 LightGBM -

pip install lightgbm

导入库并加载数据

安装包后,我们将导入所需的库并加载数据 -

import lightgbm as lgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Load dataset
data = load_breast_cancer()
X, y = data.data, data.target

# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

定义核心参数

现在让我们为我们的模型定义核心参数 -

# Define LightGBM parameters
params = {
   'boosting_type': 'gbdt',
   'objective': 'binary',
   'metric': 'binary_logloss',
   'num_leaves': 31,
   'learning_rate': 0.05,
   'num_iterations': 100,
   'max_depth': 5,
   'feature_fraction': 0.8,
   'bagging_fraction': 0.8,
   'bagging_freq': 5,
   'lambda_l1': 0.1,
   'lambda_l2': 0.1,
   'min_gain_to_split': 0.01
}

准备 LightGBM 的数据

在此阶段,我们需要为 Light Gradient Boosting Machine 准备数据。

# Prepare data for LightGBM
train_data = lgb.Dataset(X_train, label=y_train)

训练模型

现在使用准备好的数据集训练模型 -

# Train the LightGBM model
model = lgb.train(params, train_data)

进行预测并评估模型

现在您必须使用训练好的模型进行预测并评估其准确性 -

# Make predictions
y_pred = model.predict(X_test)
y_pred_binary = [1 if pred > 0.5 else 0 for pred in y_pred]

# Evaluate model accuracy
accuracy = accuracy_score(y_test, y_pred_binary)
print(f"Accuracy is as follows: {accuracy}")

这将导致以下结果

Accuracy is as follows: 0.9737
广告