在机器学习和深度学习领域,参数调整是模型性能提升的关键。LightGBM作为一种流行的梯度提升框架,提供了丰富的参数配置来优化模型训练。本文将详细介绍LightGBM的核心参数,包括数据处理、学习控制、模型构建等方面的关键设置。通过理解这些参数的作用和合理配置,可以更好地掌握LightGBM,从而实现更高效、更准确的模型训练。
参数格式
参数的格式为key1=value1 key2=value2 ....
参数可以在配置文件和命令行中设置。通过命令行设置参数时,参数的等号前后不应有空格 。通过配置文件设置参数时,每行只能包含一个参数。可以使用#
进行注释。
如果一个参数同时出现在命令行和配置文件中,LightGBM将使用命令行中的参数。
对于Python和R包,任何接受值列表的参数(通常它们具有multi-xxx
类型,例如multi-int
或multi-double
)都可以在这些语言的默认数组类型中指定。例如,monotone_constraints
可以如下指定:
- Python
python
params = {
"monotone_constraints": [-1, 0, 1]
}
- R
R
params <- list(
monotone_constraints = c(-1, 0, 1)
)
核心参数
-
config
,默认值"", 字符串类型, 别名:config_file
-
配置文件的路径
-
只能在CLI版本中使用
-
-
task
︎, 默认值train
, 枚举类型, 选项:train
,predict
,convert_model
,refit
, 别名:task_type
train
,用于训练,别名:training
-
predict
,用于预测,别名:prediction
,test
-
convert_model
,用于将模型文件转换为if-else格式,更多信息可参阅文档 -
refit
,用于用新数据重新拟合现有模型,别名:refit_tree
-
save_binary
,加载训练(和验证)数据,然后将数据集保存到二进制文件。 典型用法:首先保存二进制文件,然后使用保存的二进制文件并行运行多个训练任务 -
注意:只能在CLI版本中使用;
-
objective
, 默认值 = regression, 枚举类型, 选项: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应用程序
-
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
,Poisson回归 -
quantile
,Quantile回归 -
mape
,MAPE损失,别名:mean_absolute_percentage_error
-
gamma
,带对数链接的Gamma回归。 它可能对建模保险索赔严重性或任何可能是Gamma分布的目标有用 -
tweedie
,带对数链接的Tweedie回归。 它可能对建模保险总损失或任何可能是Tweedie分布的目标有用
-
-
二元分类应用程序
binary
,二元对数损失分类(或逻辑回归)- 要求标签为{0, 1}
-
多类别分类应用程序
-
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_gain
中的元素数量 -
rank_xendcg
,XE_NDCG_MART排名目标函数,别名:xendcg, xe_ndcg, xe_ndcg_mart, xendcg_mart -
rank_xendcg
比lambdarank
更快,并且可以达到类似的性能 -
标签应为
int
类型,较大的数字表示较高的相关性(例如,0: 差,1: 一般,2: 良好,3: 完美)
-
-
-
boosting
,默认值为gbdt
,枚举类型,选项为:gbdt
,rf
,dart
,别名:boosting_type
,boost
-
gbdt
,传统的梯度提升决策树,别名:gbrt
-
rf
,随机森林,别名:random_forest
-
dart
,Dropouts meet Multiple Additive Regression Trees- 注意:在内部,LightGBM在前
1 / learning_rate
次迭代中使用gbdt
模式
- 注意:在内部,LightGBM在前
-
-
data_sample_strategy
,默认值为bagging,枚举类型,选项为:bagging
,goss
-
bagging
,随机装袋采样- 注意:仅当
bagging_freq > 0
且bagging_fraction < 1.0
时,bagging
才有效
- 注意:仅当
-
goss
,基于梯度的单边采样 -
4.0.0中新增
-
-
data
,默认值为"",字符串类型,别名:train
,train_data
,train_data_file
,data_filename
-
训练数据的路径,LightGBM将从这些数据中训练
-
注意:仅可在CLI版本中使用
-
-
valid
,默认值为"",字符串类型,别名:test
,valid_data
,valid_data_file
,test_data
,test_data_file
,valid_filenames
-
验证/测试数据的路径,LightGBM将输出这些数据的指标
-
支持多个验证数据,用逗号分隔
-
注意:仅可在CLI版本中使用
-
-
num_iterations
,默认值为100,整数类型,别名: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,双精度浮点型,别名:shrinkage_rate
,eta
,约束:learning_rate > 0.0
-
收缩率shrinkage reate
-
在
dart
中还影响删除树的归一化权重
-
-
num_leaves
,默认值为31,整数类型,别名:num_leaf
,max_leaves
,max_leaf
,max_leaf_nodes
,约束:1 < num_leaves <= 131072
- 一棵树中的最大叶子节点数量
-
tree_learner
,默认值为serial
,枚举类型,选项为:serial
,feature
,data
,voting
,别名:tree
,tree_type
,tree_learner_type
-
serial
,单机树学习器 -
feature
,特征并行树学习器,别名:feature_parallel
-
data
,数据并行树学习器,别名:data_parallel
-
voting
,投票并行树学习器,别名:voting_parallel
-
更多详细信息请参考分布式学习指南
-
-
num_threads
,默认值为0,整数类型,别名:num_thread
,nthread
,nthreads
,n_jobs
-
仅在训练、预测和重拟合任务中使用,或在语言特定包的相应函数中使用
-
LightGBM的线程数量
-
0
表示OpenMP中的默认线程数 -
为了获得最佳速度,将其设置为实际CPU核心数,而不是线程数(大多数CPU使用超线程生成每个CPU核心的2个线程)
-
如果数据集很小,请不要将其设置得太大(例如,不要对具有10,000行的数据集使用64个线程)
-
请注意,任务管理器或任何类似的CPU监视工具可能会报告未完全利用的核心。这是正常的
-
对于分布式学习,请不要使用所有CPU核心,因为这会导致网络通信性能不佳
-
注意:不要在训练过程中更改此值,特别是在通过外部包同时运行多个作业时,否则可能会导致不良错误
-
-
device_type
,默认值为cpu
,枚举类型,选项为:cpu
,gpu
,cuda
,别名:device
-
用于树学习的设备
-
cpu
支持所有LightGBM功能,并且可以在最广泛的操作系统和硬件范围内移植 -
cuda
提供比gpu
或cpu
更快的训练速度,但仅适用于支持CUDA的GPU -
gpu
可能比cpu
更快,并且适用于比CUDA更广泛的GPU -
注意:建议使用较小的
max_bin
(例如63)以获得更好的速度提升 -
注意:为了获得更快的速度,GPU默认使用32位浮点数进行求和,因此这可能会影响某些任务的准确性。可以设置
gpu_use_dp=true
以启用64位浮点数,但这会减慢训练速度 -
注意:请参阅安装指南以使用GPU支持构建LightGBM
-
-
seed
,默认值为None
,整数类型,别名:random_seed
,random_state
-
此种子用于生成其他种子,例如
data_random_seed
、feature_fraction_seed
等 -
默认情况下,此种子不使用,而使用其他种子的默认值
-
与其他种子相比,此种子优先级较低,这意味着如果您明确设置其他种子,则此种子将被覆盖
-
-
deterministic
,默认值为false
,布尔类型-
仅与cpu设备类型一起使用
-
将其设置为true应该可以确保在使用相同数据和相同参数(和不同的num_threads)时获得稳定的结果
-
当使用不同的种子、不同的LightGBM版本、由不同编译器编译的二进制文件或在不同系统中时,预期结果将不同
-
当遇到不稳定的结果时,可以在LightGBM GitHub存储库中提出问题
-
注意:将此设置为true可能会减慢训练速度
-
注意:为了避免由于数值问题导致的潜在不稳定性,请在设置
deterministic=true
时将force_col_wise=true
或force_row_wise=true
-
学习控制参数
-
force_col_wise
,默认值为false,布尔类型-
仅与
cpu
设备类型一起使用 -
将其设置为
true
以强制使用列式直方图构建 -
推荐启用此功能的情况包括:
-
列数较多,或总的bin数量较多时
-
num_threads
较大,例如 > 20 -
希望减少内存成本时
-
-
注意:当
force_col_wise
和force_row_wise
都为false时,LightGBM首先会尝试两者,然后使用速度更快的一个。为了消除测试的开销,手动将较快的设置为true
-
注意:此参数不能与
force_row_wise
同时使用,只能选择其中之一
-
-
force_row_wise
,默认值为false,布尔类型-
仅与
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
,双精度类型,别名:hist_pool_size
-
历史直方图的最大缓存大小(以MB为单位)
-
< 0
表示无限制
-
-
max_depth
, 默认值为-1
,整数类型-
限制树模型的最大深度。用于处理数据较少时的过拟合。树仍然是叶子节点逐级增长
-
<= 0
表示无限制
-
-
min_data_in_leaf
, 默认值为20
,整数类型,别名:min_data_per_leaf
,min_data
,min_child_samples
,min_samples_leaf
, 约束条件:min_data_in_leaf >= 0
-
一个叶子中的最小数据量。可用于处理过拟合
-
注意:这是基于海森矩阵的近似值,因此偶尔可能会观察到产生具有少于此数量观测值的叶子节点的分裂
-
-
min_sum_hessian_in_leaf
, 默认值为1e-3
,双精度类型,别名:min_sum_hessian_per_leaf
,min_sum_hessian
,min_hessian
,min_child_weight
, 约束条件:min_sum_hessian_in_leaf >= 0.0
- 一个叶子中的最小总海森矩阵和。类似于
min_data_in_leaf
,可用于处理过拟合
- 一个叶子中的最小总海森矩阵和。类似于
-
bagging_fraction
, 默认值为1.0,双精度类型,别名:sub_row
,subsample
,bagging
, 约束条件:0.0 < bagging_fraction <= 1.0
-
类似于
feature_fraction
,但这将随机选择部分数据而不进行重采样 -
可用于加速训练
-
可用于处理过拟合
-
注意:要启用
bagging
,bagging_freq
也应设置为非零值
-
-
pos_bagging_fraction
, 默认值为1.0
,双精度类型,别名:pos_sub_row
,pos_subsample
,pos_bagging
, 约束条件:0.0 < pos_bagging_fraction <= 1.0
-
仅在二分类任务中使用
-
用于不平衡的二分类问题,将在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
,双精度类型,别名:neg_sub_row
,neg_subsample
,neg_bagging
, 约束条件:0.0 < neg_bagging_fraction <= 1.0
-
仅在二分类任务中使用
-
用于不平衡的二分类问题,将在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
,整数类型,别名:subsample_freq
-
bagging的频率
-
0
表示禁用bagging
;k
表示每k
次迭代进行一次bagging
。每k
次迭代,LightGBM将随机选择bagging_fraction * 100 %
的数据用于接下来的k
次迭代 -
注意:仅当
0.0 < bagging_fraction < 1.0
时,bagging才有效
-
-
bagging_seed
, 默认值为3
,整数类型,别名:bagging_fraction_seed
bagging
的随机种子
-
feature_fraction
, 默认值为1.0
,双精度类型,别名:sub_feature
,colsample_bytree
, 约束条件:0.0 < feature_fraction <= 1.0
- 如果
feature_fraction
小于1.0,LightGBM将在每次迭代(树)之前随机选择一部分特征。例如,如果将其设置为0.8
,LightGBM将在每次训练每棵树之前选择80%的特征 - 可用于加速训练
- 可以用来处理过拟合
- 如果
-
feature_fraction_bynode
, 默认值为1.0
,双精度类型,别名: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
,整数类型feature_fraction
的随机种子
-
extra_trees
, 默认值为false
,布尔类型,别名:extra_tree
-
是否使用极端随机树
-
如果设置为
true
,在评估节点分裂时,LightGBM 将仅检查每个特征的一个随机选择的阈值 -
可用于加速训练
-
可用于处理过拟合
-
-
extra_seed
, 默认值为6
,整数类型- 当
extra_trees
为true
时选择阈值的随机种子
- 当
-
early_stopping_round
, 默认值为0
,整数类型,别名:early_stopping_rounds
,early_stopping
,n_iter_no_change
-
如果一个验证数据的一个指标在最后
early_stopping_round
轮内没有改善,则停止训练 -
<= 0
表示禁用 -
可用于加速训练
-
-
first_metric_only
, 默认值为false
,布尔类型- LightGBM 允许提供多个评估指标。如果想仅使用第一个指标进行早停,则将此设置为 true
-
max_delta_step
, 默认值为0.0
,双精度类型,别名:max_tree_output
,max_leaf_output
- 用于限制树叶子节点的最大输出
<= 0
表示没有约束- 叶子节点的最终最大输出为
learning_rate * max_delta_step
-
lambda_l1
, 默认值为0.0
,双精度类型,别名:reg_alpha
,l1_regularization
, 约束条件:lambda_l1 >= 0.0
- L1 正则化
-
lambda_l2
, 默认值为0.0
,双精度类型,别名:reg_lambda
,lambda
,l2_regularization
, 约束条件:lambda_l2 >= 0.0
- L2 正则化
-
linear_lambda
, 默认值为0.0
,双精度类型,约束条件:linear_lambda >= 0.0
- 线性树正则化,对应于梯度提升中的块状线性回归树的方程式 3 中的参数 lambda
-
min_gain_to_split
, 默认值为0.0
,双精度类型,别名:min_split_gain
, 约束条件:min_gain_to_split >= 0.0
-
执行分裂的最小增益
-
可用于加速训练
-
-
drop_rate
, 默认值为0.1
,双精度类型,别名:rate_drop
, 约束条件:0.0 <= drop_rate <= 1.0
-
仅用于 dart
-
dropout 率:每次 dropout 丢弃的前一棵树的一部分
-
-
max_drop
, 默认值为50
,整数类型-
仅用于
dart
-
一次 boosting 迭代中丢弃的最大树数量
-
<=0
表示无限制
-
-
skip_drop
, 默认值为0.5
,双精度类型,约束条件:0.0 <= skip_drop <= 1.0
-
仅用于
dart
-
在 boosting 迭代中跳过 dropout 过程的概率
-
-
xgboost_dart_mode
, 默认值为false
,布尔类型-
仅用于 dart
-
如果想使用 xgboost dart 模式,则设置为
true
-
-
uniform_drop
, 默认值为false
,布尔类型-
仅用于 dart
-
如果想使用均匀 dropout,则设置为 true
-
-
drop_seed
, 默认值为4
,整数类型-
仅用于 dart
-
选择丢弃模型的随机种子
-
-
top_rate
, 默认值为0.2
,双精度类型,约束条件:0.0 <= top_rate <= 1.0
-
仅用于
goss
-
大梯度数据的保留比率
-
-
other_rate
, 默认值为0.1
,双精度类型,约束条件:0.0 <= other_rate <= 1.0
-
仅用于
goss
-
小梯度数据的保留比率
-
-
min_data_per_group
,默认值为100
,整数类型,约束条件:min_data_per_group > 0
- 每个分类组的最小数据量
-
max_cat_threshold
,默认值为32
,整数类型,约束条件:max_cat_threshold > 0
-
用于分类特征
-
限制考虑分类特征的分裂点数量。有关 LightGBM 如何为分类特征找到最佳分裂点的详细信息,请参阅文档
-
可用于加速训练
-
-
cat_l2
,默认值为10.0
,双精度类型,约束条件:cat_l2 >= 0.0
-
用于分类特征
-
分类分裂的 L2 正则化
-
-
cat_smooth
,默认值为10.0
,双精度类型,约束条件:cat_smooth >= 0.0
-
用于分类特征
-
可以减少分类特征中噪声的影响,特别是对于数据量较少的类别
-
-
max_cat_to_onehot
,默认值为4
,整数类型,约束条件:max_cat_to_onehot > 0
- 当一个特征的类别数小于或等于
max_cat_to_onehot
时,将使用one-vs-other
分裂算法
- 当一个特征的类别数小于或等于
-
top_k
,默认值为20
,整数类型,别名:topk
,约束条件:top_k > 0
-
仅用于投票树学习器,参考投票并行
-
将此设置为较大的值可获得更准确的结果,但会减慢训练速度
-
-
monotone_constraints
,默认值为None
,多整数类型,别名:mc
,monotone_constraint
,monotonic_cst
-
用于单调特征的约束
-
1
表示增加,-1
表示减少,0
表示无约束 -
需要按顺序指定所有特征。例如,
mc=-1,0,1
表示第一个特征减少,第二个特征无约束,第三个特征增加
-
-
monotone_constraints_method
,默认值为 basic,枚举类型,选项为:basic
,intermediate
,advanced
,别名:monotone_constraining_method
,mc_method
-
monotone_penalty
,默认值为0.0
,双精度类型,别名:monotone_splits_penalty
,ms_penalty
,mc_penalty
,约束条件:monotone_penalty >= 0.0
-
仅当设置了
monotone_constraints
时使用 -
单调惩罚:惩罚参数 X 禁止树的前 X(向下取整)个级别上的任何单调分裂。给定深度上单调分裂的惩罚是一个连续增加的函数,即惩罚参数
-
如果为
0.0
(默认值),则不会应用任何惩罚
-
-
feature_contri
,默认值为None
,多双精度类型,别名:feature_contrib
,fc
,fp
,feature_penalty
-
用于控制特征的分裂增益,将使用
gain[i] = max(0, feature_contri[i]) * gain[i]
替换第i
个特征的分裂增益 -
需要按顺序指定所有特征
-
-
forcedsplits_filename
,默认值为""
,字符串类型,别名:fs
,forced_splits_filename
,forced_splits_file
,forced_splits
-
指定在每个决策树顶部强制执行的分裂的
.json
文件的路径,在进行最佳优先学习之前 -
.json
文件可以任意嵌套,每个分裂包含feature
、threshold
,以及表示子分裂的left
和right
字段 -
分类分裂以一种独热的方式进行,其中
left
表示包含特征值的分裂,right
表示其他值 -
注意: 如果分裂使增益变差,则强制分裂逻辑将被忽略
-
请参阅此文件作为示例
-
-
refit_decay_rate
,默认值为0.9
,双精度类型,约束条件:0.0 <= refit_decay_rate <= 1.0
-
重新拟合任务的衰减率,将使用
leaf_output = refit_decay_rate * old_leaf_output + (1.0 - refit_decay_rate) * new_leaf_output
来重新拟合树 -
仅在 CLI 版本中的
refit
任务中使用,或作为语言特定包中的refit
函数的参数使用
-
-
cegb_tradeoff
,默认值为1.0
,双精度类型,约束条件:cegb_tradeoff >= 0.0
- 所有惩罚的成本效益梯度提升倍增器
-
cegb_penalty_split
,默认值为0.0
,双精度类型,约束条件:cegb_penalty_split >= 0.0
- 分裂节点的成本效益梯度提升惩罚
-
cegb_penalty_feature_lazy
,默认值为0,0,...,0
,多双精度类型-
使用特征的成本效益梯度提升惩罚
-
每个数据点应用一次
-
-
cegb_penalty_feature_coupled
,默认值为0,0,...,0
,多双精度类型-
使用特征的成本效益梯度提升惩罚
-
每个森林应用一次
-
-
path_smooth
,默认值为0
,双精度类型,约束条件:path_smooth >= 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
,默认值为""
,字符串类型-
控制哪些特征可以出现在同一个分支中
-
默认情况下,交互约束被禁用,要启用它们,可以指定
-
对于 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 的索引,其中1L
是第一个特征,2L
是第二个特征,等等
-
-
任何两个特征只有在存在包含两个特征的约束时才能出现在同一个分支中
-
-
verbosity
,默认值为1
,整数类型,别名:verbose
-
控制 LightGBM 的详细程度
-
< 0
: 致命错误,= 0
: 错误(警告),= 1
: 信息,> 1
: 调试
-
-
input_model
,默认值为""
,字符串类型,别名:model_input
,model_in
-
输入模型的文件名
-
对于预测任务,此模型将应用于预测数据
-
对于训练任务,将从此模型继续训练
-
注意: 仅在 CLI 版本中使用
-
-
output_model
,默认值为LightGBM_model.txt
,字符串类型,别名:model_output
,model_out
-
训练中输出模型的文件名
-
注意: 仅在 CLI 版本中使用
-
-
saved_feature_importance_type
,默认值为0
,整数类型-
保存模型文件中的特征重要性类型
-
0
: 基于计数的特征重要性(拆分数量被计数);1
: 基于增益的特征重要性(增益值被计数) -
注意: 仅在 CLI 版本中使用
-
-
snapshot_freq
,默认值为-1
,整数类型,别名:save_period
-
保存模型文件快照的频率
-
将此值设置为正值以启用此功能。例如,如果
snapshot_freq=1
,则模型文件将在每次迭代时拍摄快照 -
注意: 仅在 CLI 版本中使用
-
-
use_quantized_grad
,默认值为false
,布尔类型-
在训练时是否使用梯度量化
-
启用此选项将梯度和 Hessian 离散化(量化)为
num_grad_quant_bins
中的箱中 -
通过量化训练,训练过程中的大多数算术运算将成为整数运算
-
梯度量化可以加速训练,在大多数情况下几乎不会降低准确性
-
注意: 仅在
device_type = cpu
时使用 -
在 4.0.0 版本中新增
-
-
num_grad_quant_bins
,默认值为4
,整数类型-
用于梯度和 Hessian 的量化的箱数
-
箱数越多,量化训练将越接近完整精度训练
-
注意: 仅在
device_type = cpu
时使用 -
在 4.0.0 版本中新增
-
-
quant_train_renew_leaf
,默认值为false
,布尔类型-
在量化训练时是否使用原始梯度更新叶值
-
对于排名目标,使用原始梯度更新叶值非常有助于获得良好的量化训练准确性
-
注意: 仅在
device_type = cpu
时使用 -
在 4.0.0 版本中新增
-
-
stochastic_rounding
,默认值为true
,布尔类型-
在梯度量化中是否使用随机舍入
-
在 4.0.0 版本中新增
-
IO 参数
数据参数
-
linear_tree
,默认值为false
,布尔类型,别名:linear_trees
-
拟合分段线性梯度提升树
-
树的分裂方式与通常相同,但每个叶子的模型是线性的而不是常数
-
每个叶子的线性模型包含该叶子分支中的所有数值特征
-
第一棵树具有常数叶值
-
分类特征将像往常一样用于分裂,但不会用于线性模型
-
缺失值不应该编码为
0
。对于Python,使用np.nan
,对于CLI,使用NA
,对于R,使用NA
、NA_real_
或NA_integer_
-
建议在训练之前重新缩放数据,使特征具有相似的均值和标准差
-
注意: 仅在 CPU 和
serial
树学习器下工作 -
注意: 不支持
regression_l1
目标函数与线性树提升 -
注意: 将
linear_tree
设置为true
会显著增加 LightGBM 的内存使用量 -
注意: 如果指定了
monotone_constraints
,则在选择分裂点时将强制执行约束,但在叶子上拟合线性模型时不会执行约束
-
-
-
max_bin
,默认值为255
,整数类型,别名:max_bins
,约束:max_bin > 1
-
特征值将被分桶的最大数量
-
较少的分桶数量可能会降低训练准确性,但可能会增加泛化能力(处理过拟合)
-
LightGBM 将根据
max_bin
自动压缩内存。例如,如果max_bin=255
,则 LightGBM 将对特征值使用uint8_t
-
-
max_bin_by_feature
,默认值为None
,多个整数类型-
每个特征的最大分桶数
-
如果未指定,则所有特征都将使用
max_bin
-
-
min_data_in_bin
,默认值为3
,整数类型,约束:min_data_in_bin > 0
-
一个桶内最少的数据量
-
使用此参数可以避免一个数据一个桶(潜在的过拟合)
-
-
bin_construct_sample_cnt
,默认值为200000
,整数类型,别名:subsample_for_bin
,约束:bin_construct_sample_cnt > 0
-
用于构造特征离散桶的采样数据量
-
将此设置为较大的值将会获得更好的训练结果,但可能会增加数据加载时间
-
如果数据非常稀疏,则将此设置为较大的值
-
注意: 不要将此设置为较小的值,否则可能会遇到意外的错误和较差的准确性
-
-
data_random_seed
,默认值为1
,整数类型,别名:data_seed
- 用于对数据进行采样以构造直方图桶的随机种子
-
is_enable_sparse
,默认值为true
,布尔类型,别名:is_sparse
,enable_sparse
,sparse
- 用于启用/禁用稀疏优化
-
enable_bundle
,默认值为true
,布尔类型,别名:is_enable_bundle
,bundle
-
将此设置为
false
以禁用独占特征捆绑(EFB),详细信息请参见 LightGBM: A Highly Efficient Gradient Boosting Decision Tree -
注意: 禁用此功能可能会导致稀疏数据集的训练速度较慢
-
-
use_missing
,默认值为true
,布尔类型- 将此设置为
false
以禁用缺失值的特殊处理
- 将此设置为
-
zero_as_missing
,默认值为false
,布尔类型-
将此设置为
true
以将所有零视为缺失值(包括LibSVM / sparse matrices
) -
将此设置为
false
以使用na
表示缺失值
-
-
feature_pre_filter
,默认值为true
,布尔类型-
将此设置为
true
(默认值)以告知 LightGBM 忽略基于min_data_in_leaf
无法分割的特征 -
由于数据集对象仅初始化一次且无法在此后更改,当使用
min_data_in_leaf
搜索参数时,可能需要将此设置为 false,否则特征将首先根据min_data_in_leaf
进行过滤,如果不重新构造数据集对象 -
注意: 将此设置为
false
可能会降低训练速度
-
-
pre_partition
,默认值为false
,布尔类型,别名:is_pre_partition
-
用于分布式学习(排除特征并行模式)
-
如果训练数据已经被预分区,并且不同的机器使用不同的分区,则设置为
true
-
-
two_round
,默认值为false
,布尔类型,别名:two_round_loading
,use_two_round_loading
-
如果数据文件太大而无法放入内存,则将此设置为
true
-
默认情况下,LightGBM 将数据文件映射到内存并从内存加载特征。这将提供更快的数据加载速度,但当数据文件非常大时可能会导致内存耗尽错误
-
注意: 仅在直接从文本文件加载数据时起作用
-
-
header
,默认值为false
,布尔类型,别名:has_header
-
如果输入数据具有标题,则将此设置为
true
-
注意: 仅在直接从文本文件加载数据时起作用
-
-
label_column
,默认值为""
,整数或字符串类型,别名:label
-
用于指定标签列
-
使用数字表示索引,例如
label=0
表示column_0
是标签 -
为列名称添加前缀:,例如
label=name:is_click
-
如果省略,则训练数据中的第一列将被用作标签
-
注意: 仅在直接从文本文件加载数据时起作用
-
-
weight_column
,默认值为""
,整数或字符串类型,别名:weight
-
用于指定权重列
-
使用数字表示索引,例如
weight=0
表示column_0
是权重列 -
为列名称添加前缀:,例如
weight=name:weight
-
注意: 仅在直接从文本文件加载数据时起作用
-
注意: 索引从
0
开始,并且在传递类型为整数时不包括标签列,例如当标签列为column_0
时,权重列为column_1
,正确的参数是weight=0
-
注意: 权重应该是非负的
-
-
group_column
,默认值为""
,整数或字符串类型,别名:group
,group_id
,query_column
,query
,query_id
-
用于指定查询/组标识列
-
使用数字表示索引,例如
query=0
表示column_0
是查询 id -
为列名称添加前缀:,例如
query=name:query_id
-
注意: 仅在直接从文本文件加载数据时起作用
-
注意: 数据应该按
query_id
进行分组,有关更多信息,请参阅查询数据 -
注意: 索引从
0
开始,并且在传递类型为int
时不包括标签列,例如当标签列为column_0
,查询 id 为column_1
时,正确的参数是query=0
-
-
ignore_column
,默认值为""
,多个整数或字符串类型,别名:ignore_feature
,blacklist
-
用于指定在训练中忽略的某些列
-
使用数字表示索引,例如
ignore_column=0,1,2
表示column_0
、column_1
和column_2
将被忽略 -
为列名称添加前缀:,例如
ignore_column=name:c1,c2,c3
表示 c1、c2 和 c3 将被忽略 -
注意: 仅在直接从文本文件加载数据时起作用
-
注意: 索引从
0
开始,并且在传递类型为整数时不包括标签列 -
注意: 尽管在训练期间指定的列将完全被忽略,但它们仍应具有允许 LightGBM 成功加载文件的有效格式
-
-
categorical_feature
,默认值为""
,多个整数或字符串类型,别名:cat_feature
,categorical_column
,cat_column
,categorical_features
-
用于指定分类特征
-
使用数字表示索引,例如
categorical_feature=0,1,2
表示column_0
、column_1
和column_2
是分类特征 -
为列名称添加前缀:,例如
categorical_feature=name:c1,c2,c3
表示 c1、c2 和 c3 是分类特征 -
注意: 所有值都将转换为
int32
(从 Python 包的 pandas categoricals 中提取整数代码) -
注意: 索引从
0
开始,并且在传递类型为整数时不包括标签列 -
注意: 所有值应小于
Int32.MaxValue
(2147483647) -
注意: 使用大值可能会占用内存。树决策规则在分类特征以从零开始的连续整数表示时效果最佳
-
注意: 所有负值都将视为缺失值
-
注意: 分类特征中的浮点数将向 0 舍入
-
-
forcedbins_filename
,默认值为""
,字符串类型-
指定某些或所有特征的分箱上限的
.json
文件的路径 -
.json
文件应包含一个对象数组,每个对象包含feature
(整数特征索引)和bin_upper_bound
(用于分箱的阈值数组)字段 -
可以参考此文件作为示例
-
-
save_binary
,默认值为false
,布尔类型,别名:is_save_binary
,is_save_binary_file
-
如果设置为
true
,则 LightGBM 将数据集(包括验证数据)保存到二进制文件中。这样可以加速下次数据加载 -
注意:
init_score
不会保存在二进制文件中 -
注意: 仅在 CLI 版本中可以使用;
-
-
precise_float_parser
,默认值为false
,布尔类型-
为文本解析器(例如 CSV、TSV、LibSVM 输入)使用精确的浮点数解析
-
注意: 将此设置为
true
可能会导致文本解析速度大大降低
-
-
parser_config_file
,默认值为""
,字符串类型-
指定自定义解析器初始化配置的
.json
文件的路径 -
有关用法示例,请参阅 lightgbm-transform
-
注意: lightgbm-transform 由 LightGBM 的维护者不维护。Bug 报告或功能请求应提交到 issues 页面
-
在 4.0.0 版本中新增
-
预测参数
-
start_iteration_predict
,默认值为0
,整数类型-
仅用于预测任务
-
用于指定从哪个迭代开始进行预测
-
<= 0
表示从第一个迭代开始
-
-
num_iteration_predict
,默认值为-1
,整数类型-
仅用于预测任务
-
用于指定在预测中将使用多少个训练迭代
-
<= 0
表示没有限制
-
-
predict_raw_score
,默认值为false
,布尔类型,别名:is_predict_raw_score
,predict_rawscore
,raw_score
-
仅用于预测任务
-
设置为
true
表示只预测原始分数 -
设置为
false
表示预测转换后的分数
-
-
predict_leaf_index
,默认值为false
,布尔类型,别名:is_predict_leaf_index
,leaf_index
-
仅用于预测任务
-
设置为
true
表示使用所有树的叶子索引进行预测
-
-
predict_contrib
,默认值为false
,布尔类型,别名:is_predict_contrib
,contrib
-
predict_disable_shape_check
,默认值为false
,布尔类型-
仅用于预测任务
-
控制当尝试在具有与训练数据不同数量的特征的数据上进行预测时,LightGBM 是否会引发错误
-
如果为
false
(默认值),则当尝试在数据集上进行预测的特征数量与训练期间看到的特征数量不同时,将引发致命错误 -
如果为
true
,LightGBM 将尝试在提供的任何数据上进行预测。这是危险的,因为可能会得到不正确的预测,但在难以生成某些特征且非常确信它们从未被选择用于模型中的分裂的情况下,可以使用它 -
注意: 将此参数设置为
true
时要非常小心
-
-
pred_early_stop
,默认值为false
,布尔类型-
仅用于预测任务
-
仅用于分类和排序应用程序
-
仅用于预测普通或原始分数
-
如果为
true
,则将使用提前停止来加速预测。可能会影响准确性 -
注意: 不能与
rf boosting
类型或自定义目标函数一起使用
-
-
pred_early_stop_freq
,默认值为10
,整数类型-
仅用于预测任务
-
检查提前停止预测的频率
-
-
pred_early_stop_margin
,默认值为10.0
,双精度类型-
仅用于预测任务
-
提前停止预测的边际阈值
-
-
output_result
,默认值为LightGBM_predict_result.txt
,字符串类型,别名:predict_result
,prediction_result
,predict_name
,prediction_name
,pred_name
,name_pred
-
仅用于预测任务
-
预测结果的文件名
-
注意: 仅在 CLI 版本中可以使用
-
转换参数
-
convert_model_language
,默认值为""
,字符串类型-
仅用于
convert_model
任务 -
目前仅支持
cpp
;要将模型转换为其他语言,请考虑使用m2cgen
实用程序 -
如果设置了
convert_model_language
并且任务是train
,则模型也将被转换 -
注意: 仅在 CLI 版本中可以使用
-
-
convert_model
,默认值为gbdt_prediction.cpp
,字符串类型,别名:convert_model_file
-
仅用于
convert_model
任务 -
转换模型的输出文件名
-
注意: 仅在 CLI 版本中可以使用
-
目标参数
-
objective_seed
,默认值为5
,整数类型-
仅用于
rank_xendcg
目标函数 -
用于目标函数的随机种子,如果需要随机过程
-
-
num_class
,默认值为1
,整数类型,别名:num_classes
,约束条件:num_class > 0
- 仅用于多类分类应用
-
is_unbalance
,默认值为false
,布尔类型,别名:unbalance
,unbalanced_sets
-
仅用于
binary
和multiclassova
一对多应用 -
如果训练数据不平衡,则将其设置为
true
-
注意: 虽然启用此选项应该提高模型的整体性能指标,但也会导致对个别类别概率的估计不准确
-
注意: 此参数不能与 scale_pos_weight 同时使用,只能选择其中之一
-
-
scale_pos_weight
,默认值为1.0
,双精度浮点数类型,约束条件:scale_pos_weight > 0.0
-
仅用于
binary
和multiclassova
一对多应用 -
正类别标签的权重
-
注意: 虽然启用此选项应该提高模型的整体性能指标,但也会导致对个别类别概率的估计不准确
-
注意: 此参数不能与
is_unbalance
同时使用,只能选择其中之一
-
-
sigmoid
,默认值为1.0
,双精度浮点数类型,约束条件:sigmoid > 0.0
-
仅用于
binary
和multiclassova
分类以及lambdarank
应用 -
sigmoid 函数的参数
-
-
boost_from_average
,默认值为true
,布尔类型-
仅用于
regression
,binary
,multiclassova
和cross-entropy
应用 -
将初始得分调整为标签的平均值,以加快收敛速度
-
-
reg_sqrt
,默认值为false
,布尔类型-
仅用于回归应用
-
用于拟合
sqrt(label)
而不是原始值,预测结果也将自动转换为prediction^2
-
在标签范围很大的情况下可能有用
-
-
alpha
,默认值为0.9
,双精度浮点数类型,约束条件:alpha > 0.0
-
仅用于
huber
和quantile
回归应用
-
-
fair_c
,默认值为 1.0,双精度浮点数类型,约束条件:fair_c > 0.0
-
仅用于公平回归应用
-
公平损失的参数
-
-
poisson_max_delta_step
︎,默认值为0.7
,双精度浮点数类型,约束条件:poisson_max_delta_step > 0.0
-
仅用于泊松回归应用
-
泊松回归的参数,用于保护优化
-
-
tweedie_variance_power
,默认值为1.5
,双精度浮点数类型,约束条件:1.0 <= tweedie_variance_power < 2.0
-
仅用于
tweedie
回归应用 -
用于控制
tweedie
分布的方差 -
将其设置为接近
2
,以转向 Gamma 分布 -
将其设置为接近
1
,以转向泊松分布
-
-
lambdarank_truncation_level
,默认值为30
,整数类型,约束条件:lambdarank_truncation_level > 0
-
仅用于
lambdarank
应用 -
控制训练过程中关注的前结果数,参见
LambdaMART
论文第 3 节中的"截断级别" -
该参数与要优化排名器的指标 NDCG@k 中所需的理想截断
k
密切相关。该参数的最佳设置可能略高于k
(例如,k + 3
),以包括更多的文档对进行训练,但可能不要太高,以避免偏离所需的目标指标 NDCG@k
-
-
lambdarank_norm
,默认值为true
,布尔类型-
仅用于
lambdarank
应用 -
将其设置为
true
,以对不同查询的 Lambda 进行归一化,提高不平衡数据的性能 -
将其设置为
false
,以强制执行原始的lambdarank
算法
-
-
label_gain
,默认值为0,1,3,7,15,31,63,...,2^30-1
,多个双精度浮点数类型-
仅用于
lambdarank
应用 -
标签的相关增益。例如,默认标签增益中标签
2
的增益为3
-
以逗号分隔
-
-
lambdarank_position_bias_regularization
,默认值为0.0
,双精度浮点数类型,约束条件:lambdarank_position_bias_regularization >= 0.0
-
仅用于
lambdarank
应用,当提供了位置信息并建模位置偏差时使用。较大的值会减少推断出的位置偏差因子。 -
在版本 4.1.0 中新增
-
指标参数
-
metric
,默认值为""
,多个枚举类型,别名:metrics
,metric_types
-
要在评估集上评估的指标metric
-
""
(空字符串或未指定)表示将使用与指定目标相对应的指标(仅对预定义的目标函数有效,否则不会添加任何评估指标) -
"None"
(字符串,而不是 None 值)表示不会注册任何指标,别名:na
,null
,custom
-
l1
, 绝对损失,别名:mean_absolute_error
,mae
,regression_l1
-
l2
, 平方损失,别名:mean_squared_error
,mse
,regression_l2
,regression
-
rmse
, 平方根损失,别名:root_mean_squared_error
,l2_root
-
quantile
, 分位数回归 -
mape
, MAPE 损失,别名:mean_absolute_percentage_error
-
huber
, Huber 损失 -
fair
, Fair 损失 -
poisson
, 泊松回归的负对数似然 -
gamma
, Gamma 回归的负对数似然 -
gamma_deviance
, Gamma 回归的残差偏差 -
tweedie
, Tweedie 回归的负对数似然 -
ndcg
, NDCG,别名:lambdarank
,rank_xendcg
,xendcg
,xe_ndcg
,xe_ndcg_mart
,xendcg_mart
-
map
, MAP,别名:mean_average_precision
-
auc
, AUC -
average_precision
, 平均精度分数 -
binary_logloss
, 对数损失,别名:binary
-
binary_error
, 对于一个样本:0
表示正确分类,1
表示错误分类 -
auc_mu
, AUC-mu -
multi_logloss
, 多类分类的对数损失,别名:multiclass
,softmax
,multiclassova
,multiclass_ova
,ova
,ovr
-
multi_error
, 多类分类的错误率 -
cross_entropy
, 交叉熵(带有可选的线性权重),别名:xentropy
-
cross_entropy_lambda, "强度加权"交叉熵,别名:
xentlambda
-
kullback_leibler
, Kullback-Leibler 散度,别名:kldiv
-
-
支持多个指标,以逗号分隔
-
-
metric_freq
,默认值为1
,整数类型,别名:output_freq
,约束条件:metric_freq > 0
-
指标输出的频率
-
注意: 仅在 CLI 版本中可用
-
-
is_provide_training_metric
,默认值为false
,布尔类型,别名:training_metric
,is_training_metric
,train_metric
-
将其设置为
true
以输出训练数据集上的指标结果 -
注意: 仅在 CLI 版本中可用
-
-
eval_at
,默认值为1,2,3,4,5
,多个整数类型,别名:ndcg_eval_at
,ndcg_at
,map_eval_at
,map_at
-
multi_error_top_k
,默认值为1
,整数类型,约束条件: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
,默认值为None
,多个双精度浮点数类型-
仅与
auc_mu
指标一起使用 -
表示给定分类错误的损失权重的平坦矩阵的列表(按行主顺序)
-
列表应该有
n * n
个元素,其中n
是类别数 -
矩阵坐标
[i, j]
应对应于列表中的第i * n + j
个元素 -
如果未指定,将对所有类别使用相等的权重
-
网络参数
-
num_machines
, 默认值 为1
, 整数类型, 别名:num_machine
, 约束:num_machines > 0
-
用于分布式学习应用的机器数量
-
此参数需要在 socket 和 mpi 版本中设置
-
-
local_listen_port
, 默认值12400
(对于 Dask-package 为随机值), 整数类型, 别名:local_port, port
, 约束:local_listen_port > 0
-
本地机器的 TCP 监听端口
-
注意: 在训练之前,请不要忘记在防火墙设置中允许此端口
-
-
time_out
, 默认值120
, 整数类型, 约束:time_out > 0
- 套接字超时时间,单位为分钟
-
machine_list_filename
, 默认值""
, 字符串类型, 别名:machine_list_file
,machine_list
,mlist
-
列出此分布式学习应用的机器的文件路径
-
每一行包含一个机器的 IP 和一个端口。格式为
ip port
(使用空格作为分隔符) -
注意: 仅适用于 CLI 版本
-
-
machines
, 默认值""
, 字符串类型, 别名:workers, nodes
- 以以下格式列出的机器列表:
ip1:port1, ip2:port2
- 以以下格式列出的机器列表:
GPU参数
-
gpu_platform_id
, 默认值-1
, 整数类型-
OpenCL 平台 ID。通常每个 GPU 供应商都会公开一个 OpenCL 平台
-
-1
表示系统默认的平台 -
注意: 有关更多详细信息,请参阅 GPU Targets
-
-
gpu_device_id
, 默认值-1
, 整数类型-
指定平台中的 OpenCL 设备 ID。在所选平台中的每个 GPU 都有一个唯一的设备 ID
-
-1
表示所选平台中的默认设备 -
注意: 有关更多详细信息,请参阅 GPU Targets
-
-
gpu_use_dp
, 默认值false
, 布尔型类型-
设置为
true
以在 GPU 上使用双精度数学运算(默认情况下使用单精度) -
注意: 仅适用于 OpenCL 实现,在 CUDA 实现中目前仅支持双精度数学运算
-
-
num_gpu
, 默认值1
, 整数类型, 约束:num_gpu > 0
-
GPU 数量
-
注意: 仅适用于 CUDA 实现
-
其他参数
继续使用初始分数进行训练
LightGBM 支持使用初始分数进行继续训练。它使用一个额外的文件来存储这些初始分数,格式如下:
diff
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 支持加权训练。它使用一个额外的文件来存储权重数据,格式如下:
erlang
1.0
0.5
0.8
...
这意味着第一行数据的权重是1.0
,第二行是0.5
,依此类推。权重应该是非负的。
权重文件与数据文件一一对应,每行一个权重。
如果数据文件的名称是train.txt
,那么权重文件应该命名为train.txt.weight
,并放置在与数据文件相同的文件夹中。在这种情况下,如果权重文件存在,LightGBM 将自动加载它。
此外,还可以在数据文件中包含权重列。请参考上面的weight_column
参数。
查询数据
对于学习排序任务,LightGBM 需要训练数据的查询信息。
LightGBM 使用一个额外的文件来存储查询数据,格式如下:
erlang
27
18
67
...
对于 Python 和 R 等封装库,此信息也可以作为数组通过 Dataset 参数group
提供。
csharp
[27, 18, 67, ...]
例如,如果有一个包含112个文档的数据集,其中group = [27, 18, 67]
,这意味着有3个分组,其中前27条记录在第一个分组中,记录28-45在第二个分组中,记录46-112在第三个分组中。
注意:数据应按查询排序。
如果数据文件的名称是train.txt
,则查询文件应命名为train.txt.query
,并放置在与数据文件相同的文件夹中。在这种情况下,如果查询文件存在,LightGBM 将自动加载它。
此外,还可以在数据文件中包含查询/组id列。请参阅上面的group_column
参数。