参数
本页包含 LightGBM 所有参数的说明。
其他有用链接列表
参数格式
参数按以下顺序合并(后面的项会覆盖前面的项)
LightGBM 的默认值
weight
,init_score
,query
和positions
的特殊文件(参见其他)(仅限 CLI)通过类似
config=train.conf
的文件传递配置(仅限 CLI)通过命令行传递配置
(Python, R)一些函数的特殊关键字参数(例如
train()
中的num_boost_round
)(Python, R)
params
函数参数(包括 Python 中的**kwargs
和 R 中的...
)(C API)
parameters
或params
函数参数
许多参数具有“别名”,即指代同一配置的替代名称。
如果同时指定了主参数名和别名,则始终优先使用主参数名。
例如,在 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_xendcg
比lambdarank
更快,并达到相似的性能。标签应为
int
类型,且数值越大表示相关性越高(例如 0:差, 1:一般, 2:好, 3:完美)
自定义目标函数(梯度和 Hessian 不是由 LightGBM 直接计算)
自定义
在 C API 中必须通过参数明确传递
注意:不能在 CLI 版本中使用
boosting
🔗︎, 默认值 =gbdt
, 类型 = enum, 可选项:gbdt
,rf
,dart
, 别名:boosting_type
,boost
gbdt
, 传统的梯度提升决策树,别名:gbrt
rf
, 随机森林,别名:random_forest
dart
, Dropouts meets Multiple Additive Regression Trees注意:在内部,LightGBM 在前
1 / learning_rate
次迭代中会使用gbdt
模式
data_sample_strategy
🔗︎, 默认值 =bagging
, 类型 = enum, 可选项:bagging
,goss
bagging
, 随机 Bagging 采样注意:
bagging
仅在bagging_freq > 0
且bagging_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
,prediction
和refit
任务或特定语言软件包的相应函数中使用LightGBM 的线程数
0
表示 OpenMP 中的默认线程数为了获得最佳速度,将其设置为真实 CPU 核心数,而不是线程数(大多数 CPU 使用超线程为每个 CPU 核心生成 2 个线程)
如果数据集很小,请勿设置过大(例如,对于 10,000 行的数据集,请勿使用 64 个线程)
请注意,任务管理器或任何类似的 CPU 监控工具可能会报告核心未充分利用。这是正常的
对于分布式学习,请勿使用所有 CPU 核心,因为这会导致网络通信性能低下
注意:请不要在训练过程中更改此参数,尤其是在通过外部软件包同时运行多个作业时,否则可能会导致意外错误
device_type
🔗︎, 默认值 =cpu
, 类型 = enum, 可选项:cpu
,gpu
,cuda
, 别名:device
树学习设备
cpu
支持所有 LightGBM 功能,可在最广泛的操作系统和硬件上移植cuda
提供比gpu
或cpu
更快的训练速度,但仅适用于支持 CUDA 的 GPUgpu
可能比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=true
或force_row_wise=true
学习控制参数
force_col_wise
🔗︎, 默认值 =false
, 类型 = bool仅与
cpu
设备类型一起使用将其设置为
true
可强制使用列式直方图构建在以下情况建议启用此参数
列数较多,或总 bin 数较大
num_threads
较大时,例如> 20
你想降低内存成本
注意:当
force_col_wise
和force_row_wise
都为false
时,LightGBM 会先尝试这两种方法,然后使用较快的一种。为了去除测试开销,请手动将较快的那种设置为true
注意:此参数不能与
force_row_wise
同时使用,请只选择其中一个
force_row_wise
🔗︎, 默认值 =false
, 类型 = bool仅与
cpu
设备类型一起使用将其设置为
true
可强制使用行式直方图构建在以下情况建议启用此参数
数据点数较多,且总 bin 数相对较少
num_threads
相对较小,例如<= 16
你想使用较小的
bagging_fraction
或goss
采样策略来加速
注意:将其设置为
true
会使 Dataset 对象的内存开销翻倍。如果内存不足,可以尝试设置force_col_wise=true
注意:当
force_col_wise
和force_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_freq
和neg_bagging_fraction
注意:如果
pos_bagging_fraction
和neg_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_freq
和pos_bagging_fraction
注意:如果
pos_bagging_fraction
和neg_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_fraction
和feature_fraction_bynode
都小于1.0
,则每个节点的最终比例为feature_fraction *
feature_fraction_bynode
feature_fraction_seed
🔗︎, 默认值 =2
, 类型 = intfeature_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
, 类型 = boolLightGBM 允许提供多个评估指标。如果你只想使用第一个指标进行早停止,请将此参数设置为
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
线性树正则化,对应于Gradient Boosting with Piece-Wise Linear Regression Trees论文中公式 3 的参数
lambda
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
用于类别特征
限制类别特征考虑的分裂点数量。更多详情请参见LightGBM 如何为类别特征寻找最优分裂的文档
可用于加速训练
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_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
字段,以及代表子分裂的left
和right
字段类别分裂以独热编码(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 中通过量化训练,训练过程中的大多数算术运算将是整数运算
梯度量化可以加速训练,在大多数情况下对精度影响很小
注意:仅适用于
cpu
和cuda
设备类型4.0.0 版本新增
num_grad_quant_bins
🔗︎, default =4
, type = int仅当
use_quantized_grad=true
时使用量化梯度和 Hessian 的 bins 数量
bins 数量越多,量化训练将越接近全精度训练
注意:仅适用于
cpu
和cuda
设备类型4.0.0 版本新增
quant_train_renew_leaf
🔗︎, default =false
, type = bool仅当
use_quantized_grad=true
时使用量化训练时是否使用原始梯度更新叶子值
对于排序目标,更新对于良好的量化训练精度非常有帮助
注意:仅适用于
cpu
和cuda
设备类型4.0.0 版本新增
stochastic_rounding
🔗︎, default =true
, type = bool仅当
use_quantized_grad=true
时使用梯度量化时是否使用随机舍入
注意:仅适用于
cpu
和cuda
设备类型4.0.0 版本新增
IO 参数
数据集参数
linear_tree
🔗︎, default =false
, type = bool, aliases:linear_trees
拟合分段线性梯度提升树
树分裂点以通常方式选择,但每个叶子处的模型是线性的而不是常数
每个叶子处的线性模型包含该叶子分支中的所有数值特征
第一棵树具有常数叶子值
分类特征像往常一样用于分裂,但在线性模型中不使用
缺失值不应编码为
0
。Python 中使用np.nan
,CLI 中使用NA
,R 中使用NA
、NA_real_
或NA_integer_
建议在训练前重新缩放数据,使特征具有相似的均值和标准差
注意:仅适用于
cpu
、gpu
设备类型和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
将其设置为
false
可禁用独占特征捆绑 (EFB),如 LightGBM: A Highly Efficient Gradient Boosting Decision Tree 中所述注意:禁用此功能可能会导致稀疏数据集的训练速度变慢
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
predict_disable_shape_check
🔗︎, default =false
, type = bool仅在
prediction
任务中使用控制当您尝试在特征数量与训练数据不同时 LightGBM 是否引发错误
如果为
false
(默认值),则如果预测数据集中的特征数量与训练期间的特征数量不同,将引发致命错误如果为
true
,LightGBM 将尝试在您提供的任何数据上进行预测。这很危险,因为您可能会得到不正确的预测,但在某些情况下难以或昂贵地生成某些特征,并且您非常确信它们从未在模型中被选择用于分裂时,可以使用此选项注意:设置此参数为
true
时请非常小心
pred_early_stop
🔗︎, default =false
, type = bool仅在
prediction
任务中使用仅在
classification
和ranking
应用中使用仅用于预测正常或原始分数
如果为
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_language
且task=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
仅在
binary
和multiclassova
应用中使用如果训练数据不平衡,请将其设置为
true
注意:启用此功能虽然会提高模型的整体性能指标,但也会导致对单个类概率的估计较差
注意:此参数不能与
scale_pos_weight
同时使用,只能选择一个
scale_pos_weight
🔗︎, default =1.0
, type = double, constraints:scale_pos_weight > 0.0
仅在
binary
和multiclassova
应用中使用正类别标签的权重
注意:启用此功能虽然会提高模型的整体性能指标,但也会导致对单个类概率的估计较差
注意:此参数不能与
is_unbalance
同时使用,只能选择一个
sigmoid
🔗︎, default =1.0
, type = double, constraints:sigmoid > 0.0
仅在
binary
和multiclassova
分类以及lambdarank
应用中使用sigmoid 函数的参数
boost_from_average
🔗︎, default =true
, type = bool仅在
regression
、binary
、multiclassova
和cross-entropy
应用中使用将初始分数调整为标签的平均值,以加快收敛速度
reg_sqrt
🔗︎, default =false
, type = bool仅在
regression
应用中使用用于拟合
sqrt(label)
而不是原始值,并且预测结果也将自动转换为prediction^2
对于范围较大的标签可能有用
alpha
🔗︎, default =0.9
, type = double, constraints:alpha > 0.0
仅在
huber
和quantile
regression
应用中使用
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 损失poisson
,Poisson 回归 的负对数似然gamma
,Gamma 回归的负对数似然gamma_deviance
,Gamma 回归的残差偏差tweedie
,Tweedie 回归的负对数似然ndcg
,NDCG,aliases:lambdarank
,rank_xendcg
,xendcg
,xe_ndcg
,xe_ndcg_mart
,xendcg_mart
map
,MAP,aliases:mean_average_precision
auc
,AUCaverage_precision
,平均精度分数binary_logloss
,对数损失,aliases:binary
binary_error
,对于一个样本:分类正确为0
,分类错误为1
auc_mu
,AUC-mumulti_logloss
,多类别分类的对数损失,aliases:multiclass
,softmax
,multiclassova
,multiclass_ova
,ova
,ovr
multi_error
,多类别分类的错误率cross_entropy
,交叉熵(可选线性权重),aliases:xentropy
cross_entropy_lambda
,“强度加权”交叉熵,aliases:xentlambda
kullback_leibler
,Kullback-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
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
分布式学习应用的机器数量
在 socket 和 MPI 版本中都需要设置此参数
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 的说明。