参数格式是 key1=value1 key2=value2 ...
。 参数可以在配置文件和命令行中。
一些重要的参数如下 :
config
, 默认=""
, type(类型)=string, alias(别名)=config_file
task
, 默认=train
, type(类型)=enum, options(可选)=train
, predict
, convert_model
train
, alias(别名)=training
, 用于训练predict
, alias(别名)=prediction
, test
, 用于预测。convert_model
, 用于将模型文件转换为 if-else 格式, 在 转换模型参数 中了解更多信息application
, 默认=regression
, 类型=enum, 可选=regression
, regression_l1
, huber
, fair
, poisson
, quantile
, quantile_l2
, binary
, multiclass
, multiclassova
, xentropy
, xentlambda
, lambdarank
, 别名=objective
, app
regression_l2
, L2 损失, 别名=regression
, mean_squared_error
, mse
regression_l1
, L1 损失, 别名=mean_absolute_error
, mae
huber
, Huber lossfair
, Fair losspoisson
, Poisson regressionquantile
, Quantile regressionquantile_l2
, 与 quantile
类似, 但是使用 L2 损失binary
, 二进制log loss
_ 分类 applicationmulticlass
, softmax 目标函数, num_class
也应该被设置multiclassova
, One-vs-All 二元目标函数, num_class
也应该被设置xentropy
, 交叉熵的目标函数 (可选线性权重), 别名=cross_entropy
xentlambda
, 交叉熵的替代参数化, 别名=cross_entropy_lambda
lambdarank
, lambdarank application
int
类型,而较大的数字表示较高的相关性(例如,0:bad, 1:fair, 2:good, 3:perfect)label_gain
可以用来设置 int
label 的 gain(weight)(增益(权重))boosting
, 默认=gbdt
, type=enum, 选项=gbdt
, rf
, dart
, goss
, 别名=boost
, boosting_type
gbdt
, traditional Gradient Boosting Decision Tree(传统梯度提升决策树)rf
, 随机森林dart
, Dropouts meet Multiple Additive Regression Treesgoss
, Gradient-based One-Side Sampling(基于梯度的单面采样)data
, 默认=""
, 类型=string, 别名=train
, train_data
valid
, 默认=""
, 类型=multi-string, 别名=test
, valid_data
, test_data
,
分开num_iterations
, 默认=100
, 类型=int, 别名=num_iteration
, num_tree
, num_trees
, num_round
, num_rounds
, num_boost_round
learning_rate
, 默认=0.1
, 类型=double, 别名=shrinkage_rate
num_leaves
, 默认=31
, 类型=int, 别名=num_leaf
tree_learner
, 默认=serial
, 类型=enum, 可选=serial
, feature
, data
, voting
, 别名=tree
serial
, 单个 machine tree 学习器feature
, 别名=feature_parallel
, feature parallel tree learner(特征并行树学习器)data
, 别名=data_parallel
, data parallel tree learner(数据并行树学习器)voting
, 别名=voting_parallel
, voting parallel tree learner(投票并行树学习器)num_threads
, 默认=OpenMP_default
, 类型=int, 别名=num_thread
, nthread
max_depth
, 默认=-1
, 类型=int
#data
很小的时候,这被用来处理 overfit(过拟合)。 树仍然通过 leaf-wise 生长< 0
意味着没有限制min_data_in_leaf
, 默认=20
, 类型=int, 别名=min_data_per_leaf
, min_data
, min_child_samples
min_sum_hessian_in_leaf
, 默认=1e-3
, 类型=double, 别名=min_sum_hessian_per_leaf
, min_sum_hessian
, min_hessian
, min_child_weight
min_data_in_leaf
,它可以用来处理过拟合。
所有参数:http://lightgbm.apachecn.org/#/docs/6
这个页面包含了 LightGBM 的所有参数.
一些有用的链接列表
外部链接
更新于 08/04/2017
以下参数的default已经修改:
min_data_in_leaf
= 100 => 20min_sum_hessian_in_leaf
= 10 => 1e-3num_leaves
= 127 => 31num_iterations
= 10 => 100参数的格式为 key1=value1 key2=value2 ...
. 并且, 在配置文件和命令行中均可以设置参数. 使用命令行设置参数时, 在 =
前后都不应该有空格. 使用配置文件设置参数时, 一行只能包含一个参数. 你可以使用 #
进行注释.
如果一个参数在命令行和配置文件中均出现了, LightGBM 将会使用命令行中的该参数.
config
, default=""
, type=string, alias=config_file
task
, default=train
, type=enum, options=train
, predict
, convert_model
train
, alias=training
, for trainingpredict
, alias=prediction
, test
, for prediction.convert_model
, 要将模型文件转换成 if-else 格式, 可以查看这个链接获取更多信息 Convert model parametersobjective
, default=regression
, type=enum, options=regression
, regression_l1
, huber
, fair
, poisson
, quantile
, quantile_l2
, binary
, multiclass
, multiclassova
, xentropy
, xentlambda
, lambdarank
, alias=objective
, app
, application
regression_l2
, L2 loss, alias=regression
, mean_squared_error
, mse
regression_l1
, L1 loss, alias=mean_absolute_error
, mae
huber
, Huber lossfair
, Fair losspoisson
, Poisson regressionquantile
, Quantile regressionquantile_l2
, 类似于 quantile
, 但是使用了 L2 lossbinary
, binary log loss classification applicationmulticlass
, softmax 目标函数, 应该设置好 num_class
multiclassova
, One-vs-All 二分类目标函数, 应该设置好 num_class
xentropy
, 目标函数为 cross-entropy (同时有可选择的线性权重), alias=cross_entropy
xentlambda
, 替代参数化的 cross-entropy, alias=cross_entropy_lambda
lambdarank
, lambdarank application
int
type, 数值越大代表相关性越高 (e.g. 0:bad, 1:fair, 2:good, 3:perfect)label_gain
可以被用来设置 int
标签的增益 (权重)boosting
, default=gbdt
, type=enum, options=gbdt
, rf
, dart
, goss
, alias=boost
, boosting_type
gbdt
, 传统的梯度提升决策树rf
, Random Forest (随机森林)dart
, Dropouts meet Multiple Additive Regression Treesgoss
, Gradient-based One-Side Sampling (基于梯度的单侧采样)data
, default=""
, type=string, alias=train
, train_data
valid
, default=""
, type=multi-string, alias=test
, valid_data
, test_data
,
分割num_iterations
, default=100
, type=int, alias=num_iteration
, num_tree
, num_trees
, num_round
, num_rounds
, num_boost_round
train
and cv
的输入参数 num_boost_round
(Python) or nrounds
(R) 来代替multiclass
问题设置 num_class * num_iterations
棵树learning_rate
, default=0.1
, type=double, alias=shrinkage_rate
dart
中, 它还影响了 dropped trees 的归一化权重num_leaves
, default=31
, type=int, alias=num_leaf
tree_learner
, default=serial
, type=enum, options=serial
, feature
, data
, voting
, alias=tree
serial
, 单台机器的 tree learnerfeature
, alias=feature_parallel
, 特征并行的 tree learnerdata
, alias=data_parallel
, 数据并行的 tree learnervoting
, alias=voting_parallel
, 投票并行的 tree learnernum_threads
, default=OpenMP_default
, type=int, alias=num_thread
, nthread
device
, default=cpu
, options=cpu
, gpu
max_bin
(e.g. 63) 来获得更快的速度gpu_use_dp=true
来启用64位浮点数, 但是它会使训练速度降低max_depth
, default=-1
, type=int
#data
小的情况下防止过拟合. 树仍然可以通过 leaf-wise 生长.< 0
意味着没有限制.min_data_in_leaf
, default=20
, type=int, alias=min_data_per_leaf
, min_data
, min_child_samples
min_sum_hessian_in_leaf
, default=1e-3
, type=double, alias=min_sum_hessian_per_leaf
, min_sum_hessian
, min_hessian
, min_child_weight
min_data_in_leaf
, 可以用来处理过拟合.feature_fraction
, default=1.0
, type=double, 0.0 < feature_fraction < 1.0
, alias=sub_feature
, colsample_bytree
feature_fraction
小于 1.0
, LightGBM 将会在每次迭代中随机选择部分特征. 例如, 如果设置为 0.8
, 将会在每棵树训练之前选择 80% 的特征feature_fraction_seed
, default=2
, type=int
feature_fraction
的随机数种子bagging_fraction
, default=1.0
, type=double, 0.0 < bagging_fraction < 1.0
, alias=sub_row
, subsample
feature_fraction
, 但是它将在不进行重采样的情况下随机选择部分数据bagging_freq
应该设置为非零值bagging_freq
, default=0
, type=int, alias=subsample_freq
0
意味着禁用 bagging. k
意味着每 k
次迭代执行baggingbagging_fraction
设置适当bagging_seed
, default=3
, type=int, alias=bagging_fraction_seed
early_stopping_round
, default=0
, type=int, alias=early_stopping_rounds
, early_stopping
early_stopping_round
循环中没有提升, 将停止训练lambda_l1
, default=0
, type=double, alias=reg_alpha
lambda_l2
, default=0
, type=double, alias=reg_lambda
min_split_gain
, default=0
, type=double, alias=min_gain_to_split
drop_rate
, default=0.1
, type=double
dart
时使用skip_drop
, default=0.5
, type=double
dart
时使用, 跳过 drop 的概率max_drop
, default=50
, type=int
dart
时使用, 一次迭代中删除树的最大数量<=0
意味着没有限制uniform_drop
, default=false
, type=bool
dart
时使用, 如果想要均匀的删除, 将它设置为 true
xgboost_dart_mode
, default=false
, type=bool
dart
时使用, 如果想要使用 xgboost dart 模式, 将它设置为 true
drop_seed
, default=4
, type=int
dart
时使用, 选择 dropping models 的随机数种子top_rate
, default=0.2
, type=double
goss
时使用, 大梯度数据的保留比例other_rate
, default=0.1
, type=int
goss
时使用, 小梯度数据的保留比例min_data_per_group
, default=100
, type=int
max_cat_threshold
, default=32
, type=int
cat_smooth
, default=10
, type=double
cat_l2
, default=10
, type=double
max_cat_to_onehot
, default=4
, type=int
max_cat_to_onehot
时, one-vs-other 切分算法将会被使用top_k
, default=20
, type=int, alias=topk
max_bin
, default=255
, type=int
max_bin
自动压缩内存。 例如, 如果 maxbin=255, 那么 LightGBM 将使用 uint8t 的特性值max_bin
, default=255
, type=intmin_data_in_bin
, default=3
, type=int - 单个数据箱的最小数, 使用此方法避免 one-data-one-bin(可能会过度学习)data_r和om_seed
, default=1
, type=int
output_model
, default=LightGBM_model.txt
, type=string, alias=model_output
, model_out
input_model
, default=""
, type=string, alias=model_input
, model_in
prediction
任务, 该模型将用于预测数据train
任务, 培训将从该模型继续output_result
, default=LightGBM_predict_result.txt
, type=string, alias=predict_result
, prediction_result
prediction
任务的预测结果文件名model_format
, default=text
, type=multi-enum, 可选项=text
, proto
text
, 使用文本字符串proto
, 使用协议缓冲二进制格式text,proto
. 在这种情况下, model_format
将作为后缀添加 output_model
pre_partition
, default=false
, type=bool, alias=is_pre_partition
true
如果训练数据 pre-partitioned, 不同的机器使用不同的分区is_sparse
, default=true
, type=bool, alias=is_enable_sparse
, enable_sparse
false
就禁用稀疏优化two_round
, default=false
, type=bool, alias=two_round_loading
, use_two_round_loading
true
save_binary
, default=false
, type=bool, alias=is_save_binary
, is_save_binary_file
true
LightGBM 则将数据集(包括验证数据)保存到二进制文件中。 可以加快数据加载速度。verbosity
, default=1
, type=int, alias=verbose
<0
= 致命的, =0
= 错误 (警告), >0
= 信息header
, default=false
, type=bool, alias=has_header
true
label
, default=""
, type=string, alias=label_column
label=0
意味着 column_0 是标签列name:
, e.g. label=name:is_click
weight
, default=""
, type=string, alias=weight_column
weight=0
表示 column_0 是权重点name:
, e.g. weight=name:weight
0
开始. 当传递 type 为索引时, 它不计算标签列, 例如当标签为 0 时, 权重为列 1, 正确的参数是权重值为 0query
, default=""
, type=string, alias=query_column
, group
, group_column
query=0
意味着 column_0 是这个查询的 Idname:
, e.g. query=name:query_id
0
开始. 当传递 type 为索引时, 它不计算标签列, 例如当标签为列 0, 查询 id 为列 1 时, 正确的参数是查询 =0ignore_column
, default=""
, type=string, alias=ignore_feature
, blacklist
ignore_column=0,1,2
意味着 column_0, column_1 和 column_2 将被忽略name:
, e.g. ignore_column=name:c1,c2,c3
意味着 c1, c2 和 c3 将被忽略0
开始. 它不包括标签栏categorical_feature
, default=""
, type=string, alias=categorical_column
, cat_feature
, cat_column
categorical_feature=0,1,2
意味着 column_0, column_1 和 column_2 是分类特征name:
, e.g. categorical_feature=name:c1,c2,c3
意味着 c1, c2 和 c3 是分类特征int
type. 索引从 0
开始. 同时它不包括标签栏predict_raw_score
, default=false
, type=bool, alias=raw_score
, is_predict_raw_score
prediction
任务true
只预测原始分数false
只预测分数predict_leaf_index
, default=false
, type=bool, alias=leaf_index
, is_predict_leaf_index
prediction
任务true
to predict with leaf index of all treespredict_contrib
, default=false
, type=bool, alias=contrib
, is_predict_contrib
prediction
任务true
预估 SHAP values, 这代表了每个特征对每个预测的贡献. 生成的特征+1的值, 其中最后一个值是模型输出的预期值, 而不是训练数据bin_construct_sample_cnt
, default=200000
, type=int, alias=subsample_for_bin
num_iteration_predict
, default=-1
, type=int
prediction
任务<= 0
意味着没有限制pred_early_stop
, default=false
, type=bool
true
将使用提前停止来加速预测。可能影响精度pred_early_stop_freq
, default=10
, type=int
pred_early_stop_margin
, default=10.0
, type=double
use_missing
, default=true
, type=bool
false
禁用丢失值的特殊句柄zero_as_missing
, default=false
, type=bool
true
将所有的0都视为缺失的值 (包括 libsvm/sparse 矩阵中未显示的值)false
使用 na
代表缺失值init_score_file
, default=""
, type=string
""
将使用 train_data_file
+ .init
(如果存在)valid_init_score_file
, default=""
, type=multi-string
""
将使用 valid_data_file
+ .init
(如果存在),
对multi-validation进行分离sigmoid
, default=1.0
, type=double
binary
分类 和 lambdarank
alpha
, default=0.9
, type=double
regression
任务fair_c
, default=1.0
, type=double
regression
任务gaussian_eta
, default=1.0
, type=double
regression_l1
和 huber
lossespoisson_max_delta_step
, default=0.7
, type=double
scale_pos_weight
, default=1.0
, type=double
binary
分类 任务boost_from_average
, default=true
, type=bool
regression
任务is_unbalance
, default=false
, type=bool, alias=unbalanced_sets
binary
分类true
max_position
, default=20
, type=int
lambdarank
label_gain
, default=0,1,3,7,15,31,63,...
, type=multi-double
lambdarank
2
的标签则是 3
,
分隔num_class
, default=1
, type=int, alias=num_classes
multiclass
分类reg_sqrt
, default=false
, type=bool
regression
sqrt(label)
相反, 预测结果也会自动转换成 pow2(prediction)
metric
, default={l2
for regression}, {binary_logloss
for binary classification}, {ndcg
for lambdarank}, type=multi-enum, options=l1
, l2
, ndcg
, auc
, binary_logloss
, binary_error
…
l1
, absolute loss, alias=mean_absolute_error
, mae
l2
, square loss, alias=mean_squared_error
, mse
l2_root
, root square loss, alias=root_mean_squared_error
, rmse
quantile
, Quantile regressionhuber
, Huber lossfair
, Fair losspoisson
, Poisson regressionndcg
, NDCGmap
, MAPauc
, AUCbinary_logloss
, log lossbinary_error
, 样本: 0
的正确分类, 1
错误分类multi_logloss
, mulit-class 损失日志分类multi_error
, error rate for mulit-class 出错率分类xentropy
, cross-entropy (与可选的线性权重), alias=cross_entropy
xentlambda
, “intensity-weighted” 交叉熵, alias=cross_entropy_lambda
kldiv
, Kullback-Leibler divergence, alias=kullback_leibler
,
分隔metric_freq
, default=1
, type=int
train_metric
, default=false
, type=bool, alias=training_metric
, is_training_metric
true
ndcg_at
, default=1,2,3,4,5
, type=multi-int, alias=ndcg_eval_at
, eval_at
,
分隔以下参数用于并行学习, 只用于基本(socket)版本。
num_machines
, default=1
, type=int, alias=num_machine
local_listen_port
, default=12400
, type=int, alias=local_port
time_out
, default=120
, type=int
machine_list_file
, default=""
, type=string, alias=mlist
gpu_platform_id
, default=-1
, type=int
-1
, 意味着整个系统平台gpu_device_id
, default=-1
, type=int
-1
, 这个default意味着选定平台上的设备gpu_use_dp
, default=false
, type=bool
true
在GPU上使用双精度GPU (默认使用单精度)该特性仅在命令行版本中得到支持。
convert_model_language
, default=""
, type=string
cpp
convert_model_language
设置为 task``时 该模型也将转换为 ``train
,convert_model
, default="gbdt_prediction.cpp"
, type=string
LightGBM支持对初始得分进行持续的培训。它使用一个附加的文件来存储这些初始值, 如下:
0.5
-0.1
0.9
...
它意味着最初的得分第一个数据行是 0.5
,第二个是 -0.1` 等等。 初始得分文件与数据文件逐行对应, 每一行有一个分数。 如果数据文件的名称是 `train.txt`, 最初的分数文件应该被命名为
train.txt.init` 与作为数据文件在同一文件夹。 在这种情况下, LightGBM 将自动加载初始得分文件, 如果它存在的话。
LightGBM 加权训练。它使用一个附加文件来存储权重数据, 如下:
1.0
0.5
0.8
...
它意味的重压着第一个数据行是 1.0
, 第二个是 0.5
, 等等. 权重文件按行与数据文件行相对应, 每行的权重为. 如果数据文件的名称是 train.txt
, 应该将重量文件命名为 train.txt.weight
与数据文件相同的文件夹. 在这种情况下, LightGBM 将自动加载权重文件, 如果它存在的话.
update: 现在可以在数据文件中指定 weight
列。请参阅以上参数的参数.
对于 LambdaRank 的学习, 它需要查询信息来训练数据. LightGBM 使用一个附加文件来存储查询数据, 如下:
27
18
67
...
它意味着第一个 27
行样本属于一个查询和下一个 18
行属于另一个, 等等. Note: 数据应该由查询来排序.
如果数据文件的名称是train.txt`,这个查询文件应该被命名为
train.txt.query``查询在相同的培训数据文件夹中。 在这种情况下, LightGBM将自动加载查询文件, 如果它存在的话。
update: 现在可以在数据文件中指定特定的 query/group id。请参阅上面的参数组