参数

本页包含 LightGBM 所有参数的说明。

其他有用链接列表

参数格式

参数按以下顺序合并(后面的项会覆盖前面的项)

  1. LightGBM 的默认值

  2. weight, init_score, querypositions 的特殊文件(参见其他

  3. (仅限 CLI)通过类似 config=train.conf 的文件传递配置

  4. (仅限 CLI)通过命令行传递配置

  5. (Python, R)一些函数的特殊关键字参数(例如 train() 中的 num_boost_round

  6. (Python, R)params 函数参数(包括 Python 中的 **kwargs 和 R 中的 ...

  7. (C API)parametersparams 函数参数

许多参数具有“别名”,即指代同一配置的替代名称。

如果同时指定了主参数名和别名,则始终优先使用主参数名。

例如,在 Python 中

# use learning rate of 0.07, because 'learning_rate'
# is the primary parameter name
lgb.train(
   params={
      "learning_rate": 0.07,
      "shrinkage_rate": 0.12
   },
   train_set=dtrain
)

如果指定了多个别名而未指定主参数名,则使用 C++ 库中由 Config::parameter2aliases() 返回列表中的第一个别名。这些列表是以相当随意的方式硬编码的... 尽可能避免依赖此行为。

例如,在 Python 中

# use learning rate of 0.12, LightGBM has a hard-coded preference for 'shrinkage_rate'
# over any other aliases, and 'learning_rate' is not provided
lgb.train(
   params={
      "eta": 0.19,
      "shrinkage_rate": 0.12
   },
   train_set=dtrain
)

命令行界面 (CLI)

参数格式为 key1=value1 key2=value2 ...。参数可以在配置文件和命令行中设置。通过命令行使用时,参数在 = 前后不应有空格。通过配置文件使用时,每行只能包含一个参数。你可以使用 # 进行注释。

Python

任何接受多个值的参数应作为 Python 列表传递。

params = {
   "monotone_constraints": [-1, 0, 1]
}

R

任何接受多个值的参数应作为 R 列表传递。

params <- list(
   monotone_constraints = c(-1, 0, 1)
)

核心参数

  • config 🔗︎, 默认值 = "", 类型 = string, 别名: config_file

    • 配置文件路径

    • 注意:仅限在 CLI 版本中使用

  • task 🔗︎, 默认值 = train, 类型 = enum, 可选项: train, predict, convert_model, refit, 别名: task_type

    • train,用于训练,别名: training

    • predict,用于预测,别名: prediction, test

    • convert_model,用于将模型文件转换为 if-else 格式,更多信息请参见模型转换参数

    • refit,用于使用新数据重新拟合现有模型,别名: refit_tree

    • save_binary,加载训练(和验证)数据,然后将数据集保存到二进制文件。典型用法:先执行 save_binary,然后使用保存的二进制文件并行运行多个 train 任务

    • 注意:仅限在 CLI 版本中使用;对于特定语言的软件包,可以使用相应的函数

  • objective 🔗︎, 默认值 = regression, 类型 = enum, 可选项: regression, regression_l1, huber, fair, poisson, quantile, mape, gamma, tweedie, binary, multiclass, multiclassova, cross_entropy, cross_entropy_lambda, lambdarank, rank_xendcg, 别名: objective_type, app, application, loss

    • 回归应用

      • regression, L2 损失,别名: regression_l2, l2, mean_squared_error, mse, l2_root, root_mean_squared_error, rmse

      • regression_l1, L1 损失,别名: l1, mean_absolute_error, mae

      • huber, Huber 损失

      • fair, Fair 损失

      • poisson, 泊松回归

      • quantile, 分位数回归

      • mape, 平均绝对百分比误差 (MAPE) 损失, 别名: mean_absolute_percentage_error

      • gamma, 对数关联函数的 Gamma 回归。例如,对于模拟保险索赔严重程度,或任何可能服从伽马分布的目标变量,这可能很有用。

      • tweedie, 对数关联函数的 Tweedie 回归。例如,对于模拟保险中的总损失,或任何可能服从Tweedie 分布的目标变量,这可能很有用。

    • 二分类应用

      • binary, 二进制对数损失分类(或逻辑回归)

      • 要求标签为 {0, 1};对于 [0, 1] 中的通用概率标签,请参见 cross-entropy 应用

    • 多分类应用

      • multiclass, softmax 目标函数,别名: softmax

      • multiclassova, One-vs-All 二进制目标函数,别名: multiclass_ova, ova, ovr

      • 也应设置 num_class

    • 交叉熵应用

      • cross_entropy, 用于交叉熵(可选线性权重)的目标函数,别名: xentropy

      • cross_entropy_lambda, 交叉熵的替代参数化,别名: xentlambda

      • 标签可以是区间 [0, 1] 中的任意值

    • 排序应用

      • lambdarank, lambdarank 目标函数。label_gain 可用于设置 int 标签的增益(权重),label 中的所有值必须小于 label_gain 中的元素数量。

      • rank_xendcg, XE_NDCG_MART 排序目标函数,别名: xendcg, xe_ndcg, xe_ndcg_mart, xendcg_mart

      • rank_xendcglambdarank 更快,并达到相似的性能。

      • 标签应为 int 类型,且数值越大表示相关性越高(例如 0:差, 1:一般, 2:好, 3:完美)

    • 自定义目标函数(梯度和 Hessian 不是由 LightGBM 直接计算)

      • 自定义

      • 在 C API 中必须通过参数明确传递

      • 注意:不能在 CLI 版本中使用

  • boosting 🔗︎, 默认值 = gbdt, 类型 = enum, 可选项: gbdt, rf, dart, 别名: boosting_type, boost

  • data_sample_strategy 🔗︎, 默认值 = bagging, 类型 = enum, 可选项: bagging, goss

    • bagging, 随机 Bagging 采样

      • 注意bagging 仅在 bagging_freq > 0bagging_fraction < 1.0 时有效

    • goss, 基于梯度的单边采样 (Gradient-based One-Side Sampling)

    • 4.0.0 版本新增

  • data 🔗︎, 默认值 = "", 类型 = string, 别名: train, train_data, train_data_file, data_filename

    • 训练数据路径,LightGBM 将从此数据进行训练

    • 注意:仅限在 CLI 版本中使用

  • valid 🔗︎, 默认值 = "", 类型 = string, 别名: test, valid_data, valid_data_file, test_data, test_data_file, valid_filenames

    • 验证/测试数据路径,LightGBM 将为此数据输出评估指标

    • 支持多个验证数据,用 , 分隔

    • 注意:仅限在 CLI 版本中使用

  • num_iterations 🔗︎, 默认值 = 100, 类型 = int, 别名: num_iteration, n_iter, num_tree, num_trees, num_round, num_rounds, nrounds, num_boost_round, n_estimators, max_iter, 约束: num_iterations >= 0

    • 提升迭代次数

    • 注意:在内部,对于多分类问题,LightGBM 会构建 num_class * num_iterations 棵树

  • learning_rate 🔗︎, 默认值 = 0.1, 类型 = double, 别名: shrinkage_rate, eta, 约束: learning_rate > 0.0

    • 收缩率

    • dart 中,它还会影响被丢弃树的归一化权重

  • num_leaves 🔗︎, 默认值 = 31, 类型 = int, 别名: num_leaf, max_leaves, max_leaf, max_leaf_nodes, 约束: 1 < num_leaves <= 131072

    • 单棵树的最大叶子数

  • tree_learner 🔗︎, 默认值 = serial, 类型 = enum, 可选项: serial, feature, data, voting, 别名: tree, tree_type, tree_learner_type

    • serial, 单机树学习器

    • feature, 特征并行树学习器,别名: feature_parallel

    • data, 数据并行树学习器,别名: data_parallel

    • voting, 投票并行树学习器,别名: voting_parallel

    • 更多详情请参考分布式学习指南

  • num_threads 🔗︎, 默认值 = 0, 类型 = int, 别名: num_thread, nthread, nthreads, n_jobs

    • 仅在 train, predictionrefit 任务或特定语言软件包的相应函数中使用

    • LightGBM 的线程数

    • 0 表示 OpenMP 中的默认线程数

    • 为了获得最佳速度,将其设置为真实 CPU 核心数,而不是线程数(大多数 CPU 使用超线程为每个 CPU 核心生成 2 个线程)

    • 如果数据集很小,请勿设置过大(例如,对于 10,000 行的数据集,请勿使用 64 个线程)

    • 请注意,任务管理器或任何类似的 CPU 监控工具可能会报告核心未充分利用。这是正常的

    • 对于分布式学习,请勿使用所有 CPU 核心,因为这会导致网络通信性能低下

    • 注意:请不要在训练过程中更改此参数,尤其是在通过外部软件包同时运行多个作业时,否则可能会导致意外错误

  • device_type 🔗︎, 默认值 = cpu, 类型 = enum, 可选项: cpu, gpu, cuda, 别名: device

    • 树学习设备

    • cpu 支持所有 LightGBM 功能,可在最广泛的操作系统和硬件上移植

    • cuda 提供比 gpucpu 更快的训练速度,但仅适用于支持 CUDA 的 GPU

    • gpu 可能比 cpu 更快,并且比 CUDA 支持更广泛的 GPU

    • 注意:建议使用较小的 max_bin (例如 63) 以获得更好的加速效果

    • 注意:为了提高速度,GPU 默认使用 32 位浮点数进行求和,因此这可能会影响某些任务的准确性。你可以设置 gpu_use_dp=true 以启用 64 位浮点数,但这会减慢训练速度。

    • 注意:有关使用 GPU 或 CUDA 支持构建 LightGBM 的信息,请参阅安装指南

  • seed 🔗︎, 默认值 = None, 类型 = int, 别名: random_seed, random_state

    • 此种子用于生成其他种子,例如 data_random_seed, feature_fraction_seed

    • 默认情况下,此种子不被使用,而是优先使用其他种子的默认值

    • 与其他种子相比,此种子的优先级较低,这意味着如果你明确设置了其他种子,则此种子将被覆盖

  • deterministic 🔗︎, 默认值 = false, 类型 = bool

    • 仅与 cpu 设备类型一起使用

    • 将其设置为 true 应能确保在使用相同数据和相同参数(以及不同的 num_threads)时获得稳定的结果

    • 当使用不同的种子、不同的 LightGBM 版本、由不同编译器编译的二进制文件或在不同系统中使用时,结果预计会不同

    • 当你遇到不稳定结果时,可以在 LightGBM GitHub 仓库中提交 issue

    • 注意:将其设置为 true 可能会减慢训练速度

    • 注意:为避免潜在的数值问题导致不稳定,当设置 deterministic=true 时,请设置 force_col_wise=trueforce_row_wise=true

学习控制参数

  • force_col_wise 🔗︎, 默认值 = false, 类型 = bool

    • 仅与 cpu 设备类型一起使用

    • 将其设置为 true 可强制使用列式直方图构建

    • 在以下情况建议启用此参数

      • 列数较多,或总 bin 数较大

      • num_threads 较大时,例如 > 20

      • 你想降低内存成本

    • 注意:当 force_col_wiseforce_row_wise 都为 false 时,LightGBM 会先尝试这两种方法,然后使用较快的一种。为了去除测试开销,请手动将较快的那种设置为 true

    • 注意:此参数不能与 force_row_wise 同时使用,请只选择其中一个

  • force_row_wise 🔗︎, 默认值 = false, 类型 = bool

    • 仅与 cpu 设备类型一起使用

    • 将其设置为 true 可强制使用行式直方图构建

    • 在以下情况建议启用此参数

      • 数据点数较多,且总 bin 数相对较少

      • num_threads 相对较小,例如 <= 16

      • 你想使用较小的 bagging_fractiongoss 采样策略来加速

    • 注意:将其设置为 true 会使 Dataset 对象的内存开销翻倍。如果内存不足,可以尝试设置 force_col_wise=true

    • 注意:当 force_col_wiseforce_row_wise 都为 false 时,LightGBM 会先尝试这两种方法,然后使用较快的一种。为了去除测试开销,请手动将较快的那种设置为 true

    • 注意:此参数不能与 force_col_wise 同时使用,请只选择其中一个

  • histogram_pool_size 🔗︎, 默认值 = -1.0, 类型 = double, 别名: hist_pool_size

    • 历史直方图的最大缓存大小(MB)

    • < 0 表示无限制

  • max_depth 🔗︎, 默认值 = -1, 类型 = int

    • 限制树模型最大深度。当数据量较少时,此参数用于处理过拟合。树仍然按叶子生长

    • <= 0 表示无限制

  • min_data_in_leaf 🔗︎, 默认值 = 20, 类型 = int, 别名: min_data_per_leaf, min_data, min_child_samples, min_samples_leaf, 约束: min_data_in_leaf >= 0

    • 一个叶子中的最小数据量。可用于处理过拟合

    • 注意:这是一个基于 Hessian 的近似值,因此偶尔可能会看到生成的叶子节点观测值少于此值的分裂

  • min_sum_hessian_in_leaf 🔗︎, 默认值 = 1e-3, 类型 = double, 别名: min_sum_hessian_per_leaf, min_sum_hessian, min_hessian, min_child_weight, 约束: min_sum_hessian_in_leaf >= 0.0

    • 一个叶子中 Hessian 的最小总和。类似于 min_data_in_leaf,可用于处理过拟合

  • bagging_fraction 🔗︎, 默认值 = 1.0, 类型 = double, 别名: sub_row, subsample, bagging, 约束: 0.0 < bagging_fraction <= 1.0

    • 类似于 feature_fraction,但此参数会随机选择一部分数据而不进行重采样

    • 可用于加速训练

    • 可用于处理过拟合

    • 注意:要启用 Bagging,还需要将 bagging_freq 设置为非零值

  • pos_bagging_fraction 🔗︎, 默认值 = 1.0, 类型 = double, 别名: pos_sub_row, pos_subsample, pos_bagging, 约束: 0.0 < pos_bagging_fraction <= 1.0

    • 仅在 binary 应用中使用

    • 用于不平衡二分类问题,将在 Bagging 中随机采样 #pos_samples * pos_bagging_fraction 的正样本

    • 应与 neg_bagging_fraction 一起使用

    • 设置为 1.0 以禁用

    • 注意:要启用此功能,还需要设置 bagging_freqneg_bagging_fraction

    • 注意:如果 pos_bagging_fractionneg_bagging_fraction 都设置为 1.0,则禁用平衡 Bagging

    • 注意:如果启用了平衡 Bagging,则 bagging_fraction 将被忽略

  • neg_bagging_fraction 🔗︎, 默认值 = 1.0, 类型 = double, 别名: neg_sub_row, neg_subsample, neg_bagging, 约束: 0.0 <= neg_bagging_fraction <= 1.0

    • 仅在 binary 应用中使用

    • 用于不平衡二分类问题,将在 Bagging 中随机采样 #neg_samples * neg_bagging_fraction 的负样本

    • 应与 pos_bagging_fraction 一起使用

    • 设置为 1.0 以禁用

    • 注意:要启用此功能,还需要设置 bagging_freqpos_bagging_fraction

    • 注意:如果 pos_bagging_fractionneg_bagging_fraction 都设置为 1.0,则禁用平衡 Bagging

    • 注意:如果启用了平衡 Bagging,则 bagging_fraction 将被忽略

  • bagging_freq 🔗︎, 默认值 = 0, 类型 = int, 别名: subsample_freq

    • Bagging 频率

    • 0 表示禁用 Bagging;k 表示每 k 次迭代执行 Bagging。每 k 次迭代,LightGBM 将随机选择 bagging_fraction * 100% 的数据用于接下来的 k 次迭代。

    • 注意:Bagging 仅在 0.0 < bagging_fraction < 1.0 时有效

  • bagging_seed 🔗︎, 默认值 = 3, 类型 = int, 别名: bagging_fraction_seed

    • Bagging 的随机种子

  • bagging_by_query 🔗︎, 默认值 = false, 类型 = bool

    • 是否按查询进行 Bagging 采样

    • 4.6.0 版本新增

  • feature_fraction 🔗︎, 默认值 = 1.0, 类型 = double, 别名: sub_feature, colsample_bytree, 约束: 0.0 < feature_fraction <= 1.0

    • 如果 feature_fraction 小于 1.0,LightGBM 将在每次迭代(构建树)时随机选择一个特征子集。例如,如果将其设置为 0.8,LightGBM 在训练每棵树之前将选择 80% 的特征。

    • 可用于加速训练

    • 可用于处理过拟合

  • feature_fraction_bynode 🔗︎, 默认值 = 1.0, 类型 = double, 别名: sub_feature_bynode, colsample_bynode, 约束: 0.0 < feature_fraction_bynode <= 1.0

    • 如果 feature_fraction_bynode 小于 1.0,LightGBM 将在每个树节点随机选择一个特征子集。例如,如果将其设置为 0.8,LightGBM 在每个树节点将选择 80% 的特征。

    • 可用于处理过拟合

    • 注意:与 feature_fraction 不同,此参数不能加速训练

    • 注意:如果 feature_fractionfeature_fraction_bynode 都小于 1.0,则每个节点的最终比例为 feature_fraction * feature_fraction_bynode

  • feature_fraction_seed 🔗︎, 默认值 = 2, 类型 = int

    • feature_fraction 的随机种子

  • extra_trees 🔗︎, 默认值 = false, 类型 = bool, 别名: extra_tree

    • 使用极致随机树 (extremely randomized trees)

    • 如果设置为 true,在评估节点分裂时,LightGBM 只会为每个特征检查一个随机选择的阈值

    • 可用于加速训练

    • 可用于处理过拟合

  • extra_seed 🔗︎, 默认值 = 6, 类型 = int

    • extra_trees 为 true 时,用于选择阈值的随机种子

  • early_stopping_round 🔗︎, 默认值 = 0, 类型 = int, 别名: early_stopping_rounds, early_stopping, n_iter_no_change

    • 如果在最后 early_stopping_round 次迭代中,一个验证数据的一个评估指标没有改善,则将停止训练

    • <= 0 表示禁用

    • 可用于加速训练

  • early_stopping_min_delta 🔗︎, 默认值 = 0.0, 类型 = double, 约束: early_stopping_min_delta >= 0.0

    • 使用早停止时(即 early_stopping_round > 0),要求早停止指标至少改进此增量才被认为是改善

    • 4.4.0 版本新增

  • first_metric_only 🔗︎, 默认值 = false, 类型 = bool

    • LightGBM 允许提供多个评估指标。如果你只想使用第一个指标进行早停止,请将此参数设置为 true

  • max_delta_step 🔗︎, 默认值 = 0.0, 类型 = double, 别名: max_tree_output, max_leaf_output

    • 用于限制树叶子的最大输出值

    • <= 0 表示无约束

    • 叶子的最终最大输出值为 learning_rate * max_delta_step

  • lambda_l1 🔗︎, 默认值 = 0.0, 类型 = double, 别名: reg_alpha, l1_regularization, 约束: lambda_l1 >= 0.0

    • L1 正则化

  • lambda_l2 🔗︎, 默认值 = 0.0, 类型 = double, 别名: reg_lambda, lambda, l2_regularization, 约束: lambda_l2 >= 0.0

    • L2 正则化

  • linear_lambda 🔗︎, 默认值 = 0.0, 类型 = double, 约束: linear_lambda >= 0.0

  • min_gain_to_split 🔗︎, 默认值 = 0.0, 类型 = double, 别名: min_split_gain, 约束: min_gain_to_split >= 0.0

    • 进行分裂的最小增益

    • 可用于加速训练

  • drop_rate 🔗︎, 默认值 = 0.1, 类型 = double, 别名: rate_drop, 约束: 0.0 <= drop_rate <= 1.0

    • 仅在 dart 中使用

    • 丢弃率:在丢弃过程中丢弃之前树的比例

  • max_drop 🔗︎, 默认值 = 50, 类型 = int

    • 仅在 dart 中使用

    • 一次提升迭代中丢弃的最大树数量

    • <=0 表示无限制

  • skip_drop 🔗︎, 默认值 = 0.5, 类型 = double, 约束: 0.0 <= skip_drop <= 1.0

    • 仅在 dart 中使用

    • 在一次提升迭代中跳过丢弃过程的概率

  • xgboost_dart_mode 🔗︎, 默认值 = false, 类型 = bool

    • 仅在 dart 中使用

    • 如果你想使用 XGBoost DART 模式,请将其设置为 true

  • uniform_drop 🔗︎, 默认值 = false, 类型 = bool

    • 仅在 dart 中使用

    • 如果你想使用均匀丢弃,请将其设置为 true

  • drop_seed 🔗︎, 默认值 = 4, 类型 = int

    • 仅在 dart 中使用

    • 选择丢弃模型的随机种子

  • top_rate 🔗︎, 默认值 = 0.2, 类型 = double, 约束: 0.0 <= top_rate <= 1.0

    • 仅在 goss 中使用

    • 大梯度数据的保留比例

  • other_rate 🔗︎, 默认值 = 0.1, 类型 = double, 约束: 0.0 <= other_rate <= 1.0

    • 仅在 goss 中使用

    • 小梯度数据的保留比例

  • min_data_per_group 🔗︎, 默认值 = 100, 类型 = int, 约束: min_data_per_group > 0

    • 用于类别特征

    • 每个类别组的最小数据量

  • max_cat_threshold 🔗︎, 默认值 = 32, 类型 = int, 约束: max_cat_threshold > 0

  • cat_l2 🔗︎, 默认值 = 10.0, 类型 = double, 约束: cat_l2 >= 0.0

    • 用于类别特征

    • 类别分裂中的 L2 正则化

  • cat_smooth 🔗︎, 默认值 = 10.0, 类型 = double, 约束: cat_smooth >= 0.0

    • 用于类别特征

    • 这可以减少类别特征中噪声的影响,特别是对于数据量较少的类别

  • max_cat_to_onehot 🔗︎, 默认值 = 4, 类型 = int, 约束: max_cat_to_onehot > 0

    • 用于类别特征

    • 当一个特征的类别数量小于或等于 max_cat_to_onehot 时,将使用 one-vs-other 分裂算法

  • top_k 🔗︎, 默认值 = 20, 类型 = int, 别名: topk, 约束: top_k > 0

    • 仅在 voting 树学习器中使用,请参考投票并行 (Voting parallel)

    • 将其设置为更大的值可以获得更准确的结果,但这会降低训练速度

  • monotone_constraints 🔗︎, 默认值 = None, 类型 = multi-int, 别名: mc, monotone_constraint, monotonic_cst

    • 用于单调特征的约束

    • 1 表示递增,-1 表示递减,0 表示无约束

    • 你需要按顺序指定所有特征。例如,mc=-1,0,1 表示第一个特征递减,第二个特征无约束,第三个特征递增

  • monotone_constraints_method 🔗︎, 默认值 = basic, 类型 = enum, 可选项: basic, intermediate, advanced, 别名: monotone_constraining_method, mc_method

    • 仅当设置了 monotone_constraints 时使用

    • 单调约束方法

      • basic, 最基本的单调约束方法。它完全不会减慢训练速度,但会对预测施加过度约束

      • intermediate, 一种更高级的方法,可能会稍微减慢训练速度。然而,此方法比基本方法约束性小得多,应能显著改善结果

      • advanced, 一种更高级的方法,可能会减慢训练速度。然而,此方法比中级方法约束性更小,应能再次显著改善结果

  • monotone_penalty 🔗︎, 默认值 = 0.0, 类型 = double, 别名: monotone_splits_penalty, ms_penalty, mc_penalty, 约束: monotone_penalty >= 0.0

    • 仅当设置了 monotone_constraints 时使用

    • 单调惩罚:一个惩罚参数 X,禁止树在前 X(向下取整)层进行任何单调分裂。应用于给定深度的单调分裂的惩罚是惩罚参数的连续递增函数。

    • 如果为 0.0(默认值),则不应用惩罚

  • feature_contri 🔗︎, 默认值 = None, 类型 = multi-double, 别名: feature_contrib, fc, fp, feature_penalty

    • 用于控制特征的分裂增益,将使用 gain[i] = max(0, feature_contri[i]) * gain[i] 来替换第 i 个特征的分裂增益

    • 你需要按顺序指定所有特征

  • forcedsplits_filename 🔗︎, 默认值 = "", 类型 = string, 别名: fs, forced_splits_filename, forced_splits_file, forced_splits

    • .json 文件路径,指定在每个决策树顶部在开始最佳优先学习之前强制进行的分裂

    • .json 文件可以任意嵌套,每个分裂包含 feature, threshold 字段,以及代表子分裂的 leftright 字段

    • 类别分裂以独热编码(one-hot)方式强制进行,其中 left 表示包含特征值的分裂,right 表示其他值

    • 注意:如果强制分裂导致增益变差,则将忽略强制分裂逻辑

    • 请参阅此文件作为示例

  • refit_decay_rate 🔗︎, default = 0.9, type = double, constraints: 0.0 <= refit_decay_rate <= 1.0

    • refit 任务的衰减率,将使用 leaf_output = refit_decay_rate * old_leaf_output + (1.0 - refit_decay_rate) * new_leaf_output 来 refit 树

    • 仅在 CLI 版本中使用 refit 任务时或在语言特定包中使用 refit 函数时使用

  • cegb_tradeoff 🔗︎, default = 1.0, type = double, constraints: cegb_tradeoff >= 0.0

    • 所有惩罚项的成本效益梯度提升乘数

  • cegb_penalty_split 🔗︎, default = 0.0, type = double, constraints: cegb_penalty_split >= 0.0

    • 分裂节点的成本效益梯度提升惩罚项

  • cegb_penalty_feature_lazy 🔗︎, default = 0,0,...,0, type = multi-double

    • 使用某个特征的成本效益梯度提升惩罚项

    • 应用于每个数据点

  • cegb_penalty_feature_coupled 🔗︎, default = 0,0,...,0, type = multi-double

    • 使用某个特征的成本效益梯度提升惩罚项

    • 每个森林只应用一次

  • path_smooth 🔗︎, default = 0, type = double, constraints: path_smooth >=  0.0

    • 控制应用于树节点的平滑度

    • 有助于防止在样本量少的叶子上过拟合

    • 如果为 0.0(默认值),则不应用平滑

    • 如果 path_smooth > 0,则 min_data_in_leaf 必须至少为 2

    • 值越大,正则化效果越强

      • 每个节点的权重是 w * (n / path_smooth) / (n / path_smooth + 1) + w_p / (n / path_smooth + 1),其中 n 是节点中的样本数,w 是最小化损失的最优节点权重(大约为 -sum_gradients / sum_hessians),w_p 是父节点的权重

      • 请注意,父节点的输出 w_p 本身也应用了平滑(根节点除外),因此平滑效果会随着树深度的增加而累积

  • interaction_constraints 🔗︎, default = "", type = string

    • 控制哪些特征可以出现在同一个分支中

    • 默认情况下,交互约束被禁用,要启用它们,您可以指定

      • 对于 CLI,列表用逗号分隔,例如 [0,1,2],[2,3]

      • 对于 Python 包,使用列表的列表,例如 [[0, 1, 2], [2, 3]]

      • 对于 R 包,使用字符向量或数字向量的列表,例如 list(c("var1", "var2", "var3"), c("var3", "var4"))list(c(1L, 2L, 3L), c(3L, 4L))。数字向量应使用 1-based 索引,其中 1L 是第一个特征,2L 是第二个特征,以此类推。

    • 只有当存在包含这两个特征的约束时,任意两个特征才能出现在同一个分支中

  • verbosity 🔗︎, default = 1, type = int, aliases: verbose

    • 控制 LightGBM 的详细程度

    • < 0:致命错误,= 0:错误(警告),= 1:信息,> 1:调试

  • input_model 🔗︎, default = "", type = string, aliases: model_input, model_in

    • 输入模型的文件名

    • 对于 prediction 任务,此模型将应用于预测数据

    • 对于 train 任务,将从此模型继续训练

    • 注意:仅限在 CLI 版本中使用

  • output_model 🔗︎, default = LightGBM_model.txt, type = string, aliases: model_output, model_out

    • 训练中输出模型的文件名

    • 注意:仅限在 CLI 版本中使用

  • saved_feature_importance_type 🔗︎, default = 0, type = int

    • 保存的模型文件中的特征重要性类型

    • 0:基于计数的特征重要性(计数分裂次数);1:基于增益的特征重要性(计数增益值)

    • 注意:仅限在 CLI 版本中使用

  • snapshot_freq 🔗︎, default = -1, type = int, aliases: save_period

    • 保存模型文件快照的频率

    • 设置为正值以启用此功能。例如,如果 snapshot_freq=1,则模型文件将在每次迭代时进行快照

    • 注意:仅限在 CLI 版本中使用

  • use_quantized_grad 🔗︎, default = false, type = bool

    • 训练时是否使用梯度量化

    • 启用此功能将把梯度和 Hessian 量化(离散化)到 num_grad_quant_bins 个 bins 中

    • 通过量化训练,训练过程中的大多数算术运算将是整数运算

    • 梯度量化可以加速训练,在大多数情况下对精度影响很小

    • 注意:仅适用于 cpucuda 设备类型

    • 4.0.0 版本新增

  • num_grad_quant_bins 🔗︎, default = 4, type = int

    • 仅当 use_quantized_grad=true 时使用

    • 量化梯度和 Hessian 的 bins 数量

    • bins 数量越多,量化训练将越接近全精度训练

    • 注意:仅适用于 cpucuda 设备类型

    • 4.0.0 版本新增

  • quant_train_renew_leaf 🔗︎, default = false, type = bool

    • 仅当 use_quantized_grad=true 时使用

    • 量化训练时是否使用原始梯度更新叶子值

    • 对于排序目标,更新对于良好的量化训练精度非常有帮助

    • 注意:仅适用于 cpucuda 设备类型

    • 4.0.0 版本新增

  • stochastic_rounding 🔗︎, default = true, type = bool

    • 仅当 use_quantized_grad=true 时使用

    • 梯度量化时是否使用随机舍入

    • 注意:仅适用于 cpucuda 设备类型

    • 4.0.0 版本新增

IO 参数

数据集参数

  • linear_tree 🔗︎, default = false, type = bool, aliases: linear_trees

    • 拟合分段线性梯度提升树

    • 树分裂点以通常方式选择,但每个叶子处的模型是线性的而不是常数

    • 每个叶子处的线性模型包含该叶子分支中的所有数值特征

    • 第一棵树具有常数叶子值

    • 分类特征像往常一样用于分裂,但在线性模型中不使用

    • 缺失值不应编码为 0。Python 中使用 np.nan,CLI 中使用 NA,R 中使用 NANA_real_NA_integer_

    • 建议在训练前重新缩放数据,使特征具有相似的均值和标准差

    • 注意:仅适用于 cpugpu 设备类型和 serial 树学习器

    • 注意:线性树提升不支持 regression_l1 目标函数

    • 注意:设置 linear_tree=true 会显著增加 LightGBM 的内存使用量

    • 注意:如果您指定了 monotone_constraints,则在选择分裂点时会强制执行约束,但在叶子上拟合线性模型时不会

  • max_bin 🔗︎, default = 255, type = int, aliases: max_bins, constraints: max_bin > 1

    • 特征值将被分桶的最大 bin 数量

    • 较少的 bins 可能会降低训练精度,但可能会提高泛化能力(处理过拟合)

    • LightGBM 将根据 max_bin 自动压缩内存。例如,如果 max_bin=255,LightGBM 将使用 uint8_t 存储特征值

  • max_bin_by_feature 🔗︎, default = None, type = multi-int

    • 每个特征的最大 bin 数量

    • 如果未指定,将对所有特征使用 max_bin

  • min_data_in_bin 🔗︎, default = 3, type = int, constraints: min_data_in_bin > 0

    • 一个 bin 内的最小数据数量

    • 使用此参数避免一个数据一个 bin(潜在的过拟合)

  • bin_construct_sample_cnt 🔗︎, default = 200000, type = int, aliases: subsample_for_bin, constraints: bin_construct_sample_cnt > 0

    • 用于构建特征离散 bins 的采样数据数量

    • 将其设置为较大的值会获得更好的训练结果,但可能会增加数据加载时间

    • 如果数据非常稀疏,请将其设置为较大的值

    • 注意:不要将其设置为较小的值,否则可能会遇到意外错误和较差的精度

  • data_random_seed 🔗︎, default = 1, type = int, aliases: data_seed

    • 用于采样数据构建直方图 bins 的随机种子

  • is_enable_sparse 🔗︎, default = true, type = bool, aliases: is_sparse, enable_sparse, sparse

    • 用于启用/禁用稀疏优化

  • enable_bundle 🔗︎, default = true, type = bool, aliases: is_enable_bundle, bundle

  • use_missing 🔗︎, default = true, type = bool

    • 将其设置为 false 可禁用对缺失值的特殊处理

  • zero_as_missing 🔗︎, default = false, type = bool

    • 将其设置为 true 可将所有零视为缺失值(包括 LibSVM / 稀疏矩阵中未显示的值)

    • 将其设置为 false 可使用 na 表示缺失值

  • feature_pre_filter 🔗︎, default = true, type = bool

    • 将其设置为 true(默认值)告诉 LightGBM 根据 min_data_in_leaf 忽略不可分裂的特征

    • 由于数据集对象只初始化一次且之后不能更改,当使用 min_data_in_leaf 搜索参数时,您可能需要将其设置为 false,否则如果不重新构建数据集对象,特征会首先根据 min_data_in_leaf 进行过滤

    • 注意:将其设置为 false 可能会减慢训练速度

  • pre_partition 🔗︎, default = false, type = bool, aliases: is_pre_partition

    • 用于分布式学习(不包括 feature_parallel 模式)

    • 如果训练数据已预分区,并且不同机器使用不同的分区,则设置为 true

  • two_round 🔗︎, default = false, type = bool, aliases: two_round_loading, use_two_round_loading

    • 如果数据文件太大而无法完全放入内存,请将其设置为 true

    • 默认情况下,LightGBM 会将数据文件映射到内存并从内存加载特征。这会提供更快的数据加载速度,但当数据文件非常大时可能会导致内存不足错误

    • 注意:仅在直接从文本文件加载数据的情况下有效

  • header 🔗︎, default = false, type = bool, aliases: has_header

    • 如果输入数据包含标题,请将其设置为 true

    • 注意:仅在直接从文本文件加载数据的情况下有效

  • label_column 🔗︎, default = "", type = int or string, aliases: label

    • 用于指定标签列

    • 使用数字作为索引,例如 label=0 表示 column_0 是标签

    • 对于列名,添加前缀 name:,例如 label=name:is_click

    • 如果省略,训练数据中的第一列将用作标签

    • 注意:仅在直接从文本文件加载数据的情况下有效

  • weight_column 🔗︎, default = "", type = int or string, aliases: weight

    • 用于指定权重列

    • 使用数字作为索引,例如 weight=0 表示 column_0 是权重

    • 对于列名,添加前缀 name:,例如 weight=name:weight

    • 注意:仅在直接从文本文件加载数据的情况下有效

    • 注意:索引从 0 开始,并且当传入类型为 int 时,它不计算标签列。例如,当标签是 column_0,权重是 column_1 时,正确的参数是 weight=0

    • 注意:权重应为非负数

  • group_column 🔗︎, default = "", type = int or string, aliases: group, group_id, query_column, query, query_id

    • 用于指定查询/分组 ID 列

    • 使用数字作为索引,例如 query=0 表示 column_0 是查询 ID

    • 对于列名,添加前缀 name:,例如 query=name:query_id

    • 注意:仅在直接从文本文件加载数据的情况下有效

    • 注意:数据应按 query_id 分组,更多信息请参见 Query Data

    • 注意:索引从 0 开始,并且当传入类型为 int 时,它不计算标签列。例如,当标签是 column_0,query_id 是 column_1 时,正确的参数是 query=0

  • ignore_column 🔗︎, default = "", type = multi-int or string, aliases: ignore_feature, blacklist

    • 用于指定训练中要忽略的一些列

    • 使用数字作为索引,例如 ignore_column=0,1,2 表示 column_0、column_1 和 column_2将被忽略

    • 对于列名,添加前缀 name:,例如 ignore_column=name:c1,c2,c3 表示 c1、c2 和 c3 将被忽略

    • 注意:仅在直接从文本文件加载数据的情况下有效

    • 注意:索引从 0 开始,并且当传入类型为 int 时,它不计算标签列

    • 注意:尽管指定的列在训练期间会被完全忽略,但它们仍然应该具有允许 LightGBM 成功加载文件的有效格式

  • categorical_feature 🔗︎, default = "", type = multi-int or string, aliases: cat_feature, categorical_column, cat_column, categorical_features

    • 用于指定分类特征

    • 使用数字作为索引,例如 categorical_feature=0,1,2 表示 column_0、column_1 和 column_2 是分类特征

    • 对于列名,添加前缀 name:,例如 categorical_feature=name:c1,c2,c3 表示 c1、c2 和 c3 是分类特征

    • 注意:所有值都将被转换为 int32(整数代码将从 Python 包中的 pandas 分类中提取)

    • 注意:索引从 0 开始,并且当传入类型为 int 时,它不计算标签列

    • 注意:所有值应小于 Int32.MaxValue (2147483647)

    • 注意:使用较大的值可能会消耗大量内存。当分类特征由从零开始的连续整数表示时,树决策规则效果最好

    • 注意:所有负值将被视为缺失值

    • 注意:输出不能相对于分类特征单调约束

    • 注意:分类特征中的浮点数将四舍五入到最接近的整数(向零方向)

  • forcedbins_filename 🔗︎, default = "", type = string

    • 指定部分或所有特征的 bin 上界的 .json 文件路径

    • .json 文件应包含一个对象数组,每个对象包含单词 feature(整数特征索引)和 bin_upper_bound(用于分箱的阈值数组)

    • 请参阅 此文件 作为示例

  • save_binary 🔗︎, default = false, type = bool, aliases: is_save_binary, is_save_binary_file

    • 如果为 true,LightGBM 将数据集(包括验证数据)保存到二进制文件。这可以加快下次的数据加载速度

    • 注意init_score 不保存在二进制文件中

    • 注意:仅可在 CLI 版本中使用;对于语言特定包,您可以使用相应的函数

  • precise_float_parser 🔗︎, default = false, type = bool

    • 对于文本解析器(例如 CSV、TSV、LibSVM 输入)使用精确的浮点数解析

    • 注意:将其设置为 true 可能会导致文本解析速度慢得多

  • parser_config_file 🔗︎, default = "", type = string

    • 指定自定义解析器初始化配置的 .json 文件路径

    • 请参阅 lightgbm-transform 获取使用示例

    • 注意lightgbm-transform 不是由 LightGBM 的维护者维护的。错误报告或功能请求应提交至 issues 页面

    • 4.0.0 版本新增

预测参数

  • start_iteration_predict 🔗︎, default = 0, type = int

    • 仅在 prediction 任务中使用

    • 用于指定从哪个迭代开始预测

    • <= 0 表示从第一个迭代开始

  • num_iteration_predict 🔗︎, default = -1, type = int

    • 仅在 prediction 任务中使用

    • 用于指定预测将使用多少个训练迭代

    • <= 0 表示无限制

  • predict_raw_score 🔗︎, default = false, type = bool, aliases: is_predict_raw_score, predict_rawscore, raw_score

    • 仅在 prediction 任务中使用

    • 将其设置为 true 只预测原始分数

    • 将其设置为 false 预测转换后的分数

  • predict_leaf_index 🔗︎, default = false, type = bool, aliases: is_predict_leaf_index, leaf_index

    • 仅在 prediction 任务中使用

    • 将其设置为 true 以预测所有树的叶子索引

  • predict_contrib 🔗︎, default = false, type = bool, aliases: is_predict_contrib, contrib

    • 仅在 prediction 任务中使用

    • 将其设置为 true 以估计 SHAP 值,表示每个特征如何对每个预测做出贡献

    • 生成 #features + 1 个值,其中最后一个值是模型输出在训练数据上的期望值

    • 注意:如果您想使用 SHAP 值(如 SHAP 交互值)获取更多模型预测解释,可以安装 shap 包

    • 注意:与 shap 包不同,使用 predict_contrib 时,我们返回一个包含额外列的矩阵,其中最后一列是期望值

    • 注意:线性树尚未实现此功能

  • predict_disable_shape_check 🔗︎, default = false, type = bool

    • 仅在 prediction 任务中使用

    • 控制当您尝试在特征数量与训练数据不同时 LightGBM 是否引发错误

    • 如果为 false(默认值),则如果预测数据集中的特征数量与训练期间的特征数量不同,将引发致命错误

    • 如果为 true,LightGBM 将尝试在您提供的任何数据上进行预测。这很危险,因为您可能会得到不正确的预测,但在某些情况下难以或昂贵地生成某些特征,并且您非常确信它们从未在模型中被选择用于分裂时,可以使用此选项

    • 注意:设置此参数为 true 时请非常小心

  • pred_early_stop 🔗︎, default = false, type = bool

    • 仅在 prediction 任务中使用

    • 仅在 classificationranking 应用中使用

    • 仅用于预测正常或原始分数

    • 如果为 true,将使用早停来加速预测。可能会影响精度

    • 注意:不能与 rf 提升类型或自定义目标函数一起使用

  • pred_early_stop_freq 🔗︎, default = 10, type = int

    • 仅在 prediction 任务中使用且 pred_early_stop=true

    • 检查早停预测的频率

  • pred_early_stop_margin 🔗︎, default = 10.0, type = double

    • 仅在 prediction 任务中使用且 pred_early_stop=true

    • 早停预测中的边距阈值

  • output_result 🔗︎, default = LightGBM_predict_result.txt, type = string, aliases: predict_result, prediction_result, predict_name, prediction_name, pred_name, name_pred

    • 仅在 prediction 任务中使用

    • 预测结果文件名

    • 注意:仅限在 CLI 版本中使用

模型转换参数

  • convert_model_language 🔗︎, default = "", type = string

    • 仅在 convert_model 任务中使用

    • 目前只支持 cpp;要将模型转换为其他语言,请考虑使用 m2cgen 工具

    • 如果设置了 convert_model_languagetask=train,模型也将被转换

    • 注意:仅限在 CLI 版本中使用

  • convert_model 🔗︎, default = gbdt_prediction.cpp, type = string, aliases: convert_model_file

    • 仅在 convert_model 任务中使用

    • 转换后模型的输出文件名

    • 注意:仅限在 CLI 版本中使用

目标函数参数

  • objective_seed 🔗︎, default = 5, type = int

    • 仅在 rank_xendcg 目标函数中使用

    • 目标函数的随机种子,如果需要随机过程

  • num_class 🔗︎, default = 1, type = int, aliases: num_classes, constraints: num_class > 0

    • 仅在 multi-class 分类应用中使用

  • is_unbalance 🔗︎, default = false, type = bool, aliases: unbalance, unbalanced_sets

    • 仅在 binarymulticlassova 应用中使用

    • 如果训练数据不平衡,请将其设置为 true

    • 注意:启用此功能虽然会提高模型的整体性能指标,但也会导致对单个类概率的估计较差

    • 注意:此参数不能与 scale_pos_weight 同时使用,只能选择一个

  • scale_pos_weight 🔗︎, default = 1.0, type = double, constraints: scale_pos_weight > 0.0

    • 仅在 binarymulticlassova 应用中使用

    • 正类别标签的权重

    • 注意:启用此功能虽然会提高模型的整体性能指标,但也会导致对单个类概率的估计较差

    • 注意:此参数不能与 is_unbalance 同时使用,只能选择一个

  • sigmoid 🔗︎, default = 1.0, type = double, constraints: sigmoid > 0.0

    • 仅在 binarymulticlassova 分类以及 lambdarank 应用中使用

    • sigmoid 函数的参数

  • boost_from_average 🔗︎, default = true, type = bool

    • 仅在 regressionbinarymulticlassovacross-entropy 应用中使用

    • 将初始分数调整为标签的平均值,以加快收敛速度

  • reg_sqrt 🔗︎, default = false, type = bool

    • 仅在 regression 应用中使用

    • 用于拟合 sqrt(label) 而不是原始值,并且预测结果也将自动转换为 prediction^2

    • 对于范围较大的标签可能有用

  • alpha 🔗︎, default = 0.9, type = double, constraints: alpha > 0.0

  • fair_c 🔗︎, default = 1.0, type = double, constraints: fair_c > 0.0

    • 仅在 fair regression 应用中使用

    • Fair loss 的参数

  • poisson_max_delta_step 🔗︎, default = 0.7, type = double, constraints: poisson_max_delta_step > 0.0

    • 仅在 poisson regression 应用中使用

    • Poisson regression 中用于保护优化过程的参数

  • tweedie_variance_power 🔗︎, default = 1.5, type = double, constraints: 1.0 <= tweedie_variance_power < 2.0

    • 仅在 tweedie regression 应用中使用

    • 用于控制 tweedie 分布的方差

    • 将此值设置得更接近 2 会趋向于 Gamma 分布

    • 将此值设置得更接近 1 会趋向于 Poisson 分布

  • lambdarank_truncation_level 🔗︎, default = 30, type = int, constraints: lambdarank_truncation_level > 0

    • 仅在 lambdarank 应用中使用

    • 控制训练期间关注的前 k 个结果的数量,请参考 LambdaMART 论文 第 3 节中的“截断级别”

    • 此参数与我们旨在优化的排序器的理想截断点 k (metric NDCG@k) 密切相关。此参数的最佳设置可能略高于 k(例如,k + 3),以包含更多文档对进行训练,但又不能太高以避免与期望的目标指标 NDCG@k 偏差过大

  • lambdarank_norm 🔗︎, default = true, type = bool

    • 仅在 lambdarank 应用中使用

    • 将其设置为 true 可以规范化不同查询的 lambdas,并提高不平衡数据的性能

    • 将其设置为 false 以强制执行原始的 lambdarank 算法

  • label_gain 🔗︎, default = 0,1,3,7,15,31,63,...,2^30-1, type = multi-double

    • 仅在 lambdarank 应用中使用

    • 标签的相关性增益。例如,在默认标签增益的情况下,标签 2 的增益为 3

    • , 分隔

  • lambdarank_position_bias_regularization 🔗︎, default = 0.0, type = double, constraints: lambdarank_position_bias_regularization >= 0.0

    • 仅在 lambdarank 应用中提供位置信息并建模位置偏差时使用

    • 值越大,推断出的位置偏差因子越小

    • 4.1.0 版本新增

评估指标参数

  • metric 🔗︎, default = "", type = multi-enum, aliases: metrics, metric_types

    • 要在评估集上评估的指标

      • ""(空字符串或未指定)表示将使用与指定的 objective 对应的指标(仅适用于预定义的目标函数,否则不会添加评估指标)

      • "None"(字符串,不是 None 值)表示不注册任何指标,aliases: na, null, custom

      • l1,绝对损失,aliases: mean_absolute_error, mae, regression_l1

      • l2,平方损失,aliases: mean_squared_error, mse, regression_l2, regression

      • rmse,均方根误差,aliases: root_mean_squared_error, l2_root

      • quantile, 分位数回归

      • mape, 平均绝对百分比误差 (MAPE) 损失, 别名: mean_absolute_percentage_error

      • huber, Huber 损失

      • fair, Fair 损失

      • poissonPoisson 回归 的负对数似然

      • gammaGamma 回归的负对数似然

      • gamma_devianceGamma 回归的残差偏差

      • tweedieTweedie 回归的负对数似然

      • ndcgNDCG,aliases: lambdarank, rank_xendcg, xendcg, xe_ndcg, xe_ndcg_mart, xendcg_mart

      • mapMAP,aliases: mean_average_precision

      • aucAUC

      • average_precision平均精度分数

      • binary_logloss对数损失,aliases: binary

      • binary_error,对于一个样本:分类正确为 0,分类错误为 1

      • auc_muAUC-mu

      • multi_logloss,多类别分类的对数损失,aliases: multiclass, softmax, multiclassova, multiclass_ova, ova, ovr

      • multi_error,多类别分类的错误率

      • cross_entropy,交叉熵(可选线性权重),aliases: xentropy

      • cross_entropy_lambda,“强度加权”交叉熵,aliases: xentlambda

      • kullback_leiblerKullback-Leibler 散度,aliases: kldiv

    • 支持多个指标,用 , 分隔

  • metric_freq 🔗︎, default = 1, type = int, aliases: output_freq, constraints: metric_freq > 0

    • 指标输出频率

    • 注意:仅限在 CLI 版本中使用

  • is_provide_training_metric 🔗︎, default = false, type = bool, aliases: training_metric, is_training_metric, train_metric

    • 将其设置为 true 以输出训练数据集上的指标结果

    • 注意:仅限在 CLI 版本中使用

  • eval_at 🔗︎, default = 1,2,3,4,5, type = multi-int, aliases: ndcg_eval_at, ndcg_at, map_eval_at, map_at

    • 仅与 ndcgmap 指标一起使用

    • NDCGMAP 评估位置,用 , 分隔

  • multi_error_top_k 🔗︎, default = 1, type = int, constraints: multi_error_top_k > 0

    • 仅与 multi_error 指标一起使用

    • top-k 多类别错误指标的阈值

    • 如果真实类别在前 multi_error_top_k 个预测中,则每个样本的错误为 0,否则为 1

      • 更精确地说,如果至少有 num_classes - multi_error_top_k 个预测严格小于真实类别的预测值,则样本的错误为 0

    • multi_error_top_k=1 时,这等同于通常的多类别错误指标

  • auc_mu_weights 🔗︎, default = None, type = multi-double

    • 仅与 auc_mu 指标一起使用

    • 表示扁平化矩阵(行主序)的列表,提供分类错误的损失权重

    • 列表应包含 n * n 个元素,其中 n 是类别数量

    • 矩阵坐标 [i, j] 应对应于列表中的第 i * n + j 个元素

    • 如果未指定,将对所有类别使用相等的权重

网络参数

  • num_machines 🔗︎, default = 1, type = int, aliases: num_machine, constraints: num_machines > 0

    • 分布式学习应用的机器数量

    • socketMPI 版本中都需要设置此参数

  • local_listen_port 🔗︎, default = 12400 (random for Dask-package), type = int, aliases: local_port, port, constraints: local_listen_port > 0

    • 本地机器的 TCP 监听端口

    • 注意:在训练前不要忘记在防火墙设置中允许此端口

  • time_out 🔗︎, default = 120, type = int, constraints: time_out > 0

    • socket 超时时间(分钟)

  • machine_list_filename 🔗︎, default = "", type = string, aliases: machine_list_file, machine_list, mlist

    • 列出此分布式学习应用中机器的文件路径

    • 每行包含一台机器的 IP 和端口。格式为 ip port(空格分隔)

    • 注意:仅限在 CLI 版本中使用

  • machines 🔗︎, default = "", type = string, aliases: workers, nodes

    • 机器列表,格式如下:ip1:port1,ip2:port2

GPU 参数

  • gpu_platform_id 🔗︎, default = -1, type = int

    • 仅在 gpu 设备类型下使用

    • OpenCL 平台 ID。通常每个 GPU 供应商公开一个 OpenCL 平台

    • -1 表示系统范围的默认平台

    • 注意:更多详情请参考 GPU Targets

  • gpu_device_id 🔗︎, default = -1, type = int

    • 指定平台中的 OpenCL 设备 ID 或 CUDA 设备 ID。所选平台中的每个 GPU 都有唯一的设备 ID

    • -1 表示所选平台中的默认设备

    • 注意:更多详情请参考 GPU Targets

  • gpu_use_dp 🔗︎, default = false, type = bool

    • 将其设置为 true 可在 GPU 上使用双精度浮点运算(默认使用单精度)

    • 注意:仅可在 OpenCL 实现(device_type="gpu")中使用,在 CUDA 实现中目前仅支持双精度

  • num_gpu 🔗︎, default = 1, type = int, constraints: num_gpu > 0

    • GPU 数量

    • 注意:仅可在 CUDA 实现(device_type="cuda")中使用

其他参数

使用输入分数进行持续训练

LightGBM 支持使用初始分数进行持续训练。它使用一个附加文件来存储这些初始分数,如下所示

0.5
-0.1
0.9
...

这意味着第一行数据的初始分数为 0.5,第二行数据的初始分数为 -0.1,依此类推。初始分数文件与数据文件逐行对应,并且每行有一个分数。

如果数据文件名为 train.txt,则初始分数文件应命名为 train.txt.init 并放在与数据文件相同的文件夹中。在这种情况下,如果存在初始分数文件,LightGBM 将自动加载。

如果存在原始数据文件 train.txt 的二进制数据文件(例如名为 train.txt.bin),则初始分数文件应命名为 train.txt.bin.init

权重数据

LightGBM 支持带权训练。它使用一个附加文件来存储权重数据,如下所示

1.0
0.5
0.8
...

这意味着第一行数据的权重为 1.0,第二行数据的权重为 0.5,依此类推。权重应为非负数。

权重文件与数据文件逐行对应,并且每行有一个权重。

如果数据文件名为 train.txt,则权重文件应命名为 train.txt.weight 并放在与数据文件相同的文件夹中。在这种情况下,如果存在权重文件,LightGBM 将自动加载。

此外,您可以在数据文件中包含权重列。请参考上面关于 weight_column parameter 的说明。

查询数据

对于排序学习,需要训练数据的查询信息。

LightGBM 使用一个附加文件来存储查询数据,如下所示

27
18
67
...

对于 Python 和 R 等包装器库,此信息也可以通过数据集参数 group 以类似数组的形式提供。

[27, 18, 67, ...]

例如,如果您有一个包含 112 个文档的数据集,其中 group = [27, 18, 67],这意味着您有 3 个组,其中前 27 条记录属于第一个组,第 28-45 条记录属于第二个组,第 46-112 条记录属于第三个组。

注意:数据应按查询排序。

如果数据文件名为 train.txt,则查询文件应命名为 train.txt.query 并放在与数据文件相同的文件夹中。在这种情况下,如果存在查询文件,LightGBM 将自动加载。

此外,您可以在数据文件中包含查询/分组 ID 列。请参考上面关于 group_column parameter 的说明。