LightGBM 超参数 - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

LightGBM 超参数

下表包含 Amazon SageMaker AI LightGBM 算法必需或最常用的部分超参数。用户可以设置这些参数,以便于从数据中估算模型参数。SageMaker AI LightGBM 算法是开源 LightGBM 程序包的实施。

注意

默认超参数基于 LightGBM 示例笔记本中的示例数据集。

默认情况下,SageMaker AI LightGBM 算法会根据分类问题的类型,自动选择评估指标和目标函数。LightGBM 算法根据数据中的标签数量来检测分类问题的类型。对于回归问题,评估指标为均方根误差,目标函数为 L2 损失。对于二元分类问题,评估指标和目标函数都是二元交叉熵。对于多元分类问题,评估指标是多类交叉熵,目标函数是 softmax。您可以使用 metric 超参数来更改默认评估指标。有关 LightGBM 超参数的更多信息,包括描述、有效值和默认值,请参阅下表。

参数名称 描述
num_boost_round

提升迭代的最大次数。注意:在内部,LightGBM 为多元分类问题构造 num_class * num_boost_round 树。

有效值:整数,范围:正整数。

默认值:100

early_stopping_rounds

如果在过去的 early_stopping_rounds 轮中,某个验证数据点的某个指标没有改善,则训练将停止。如果 early_stopping_rounds 小于或等于零,则忽略此超参数。

有效值:整数。

默认值:10

metric

验证数据的评估指标。如果 metric 设置为默认值 "auto",则算法会根据分类问题的类型自动选择评估指标:

  • rmse 用于回归

  • binary_logloss 用于二元分类

  • multi_logloss 用于多元分类

有效值:字符串,以下任意值:("auto""rmse""l1""l2""huber""fair""binary_logloss""binary_error""auc""average_precision""multi_logloss""multi_error""auc_mu""cross_entropy")。

默认值:"auto"

learning_rate

完成每批训练样本后,更新模型权重的速率。

有效值:浮点型,范围:(0.01.0)。

默认值:0.1

num_leaves

一个树中叶的最大数量。

有效值:整数,范围:(1, 131072)。

默认值:64

feature_fraction

每次迭代时要选择的特征的子集(树)。必须小于 1.0。

有效值:浮点型,范围:(0.01.0)。

默认值:0.9

bagging_fraction

feature_fraction 相似的特征的子集,但 bagging_fraction 随机选择部分数据而不重新采样。

有效值:浮点型,范围:(0.01.0)。

默认值:0.9

bagging_freq

执行装袋的频率。在每次 bagging_freq 迭代中,LightGBM 都会随机选择一定比例的数据用于下一次 bagging_freq 迭代。此百分比由 bagging_fraction 超参数确定。如果 bagging_freq 为零,则禁用装袋。

有效值:整数,范围:非负整数。

默认值:1

max_depth

树模型的最大深度。这用于处理数据量较少时的过度拟合情况。如果 max_depth 小于或等于零,则表示对最大深度没有限制。

有效值:整数。

默认值:6

min_data_in_leaf

一个叶的最小数据量。可用于处理过度拟合情况。

有效值:整数,范围:非负整数。

默认值:3

max_delta_step

用于限制树叶的最大输出。如果 max_delta_step 小于或等于 0,则没有约束。树叶的最终最大输出为 learning_rate * max_delta_step

有效值:浮点值。

默认值:0.0

lambda_l1

L1 正则化。

有效值:浮点型,范围:非负浮点数。

默认值:0.0

lambda_l2

L2 正则化。

有效值:浮点型,范围:非负浮点数。

默认值:0.0

boosting

提升类型

有效值:字符串,以下任意值:("gbdt""rf""dart""goss")。

默认值:"gbdt"

min_gain_to_split

执行拆分所需的最小增益。可用于加快训练速度。

有效值:整数,浮点数:非负浮点数。

默认值:0.0

scale_pos_weight

正向类的标签的权重。仅用于二元分类任务。如果 is_unbalance 设置为 "True",则无法使用 scale_pos_weight

有效值:浮点型,范围:正浮点数。

默认值:1.0

tree_learner

树学习器类型。

有效值:字符串,以下任意值:("serial""feature""data""voting")。

默认值:"serial"

feature_fraction_bynode

在每个树节点上选择随机特征的子集。例如,如果 feature_fraction_bynode0.8,则选择 80% 的特征。可用于处理过度拟合情况。

有效值:整数,范围:(0.01.0)。

默认值:1.0

is_unbalance

如果训练数据不平衡,则设置为 "True"。仅用于二元分类任务。is_unbalance 无法与 scale_pos_weight 一起使用。

有效值:字符串,以下任意值:("True""False")。

默认值:"False"

max_bin

用于存储桶特征值的最大箱数。较少的箱数可能会降低训练的准确性,但可能会提高总体性能。可用于处理过度拟合情况。

有效值:整数,范围:(1,∞)。

默认值:255

tweedie_variance_power

控制 Tweedie 分布的方差。将此项设置为更接近 2.0 的值可以转向伽玛分布。将此项设置为更接近 1.0 的值可以转向泊松分布。仅用于回归任务。

有效值:浮点型,范围:[1.02.0]。

默认值:1.5

num_threads

用于运行 LightGBM 的并行线程数量。值为 0 表示使用 OpenMP 中的默认线程数。

有效值:整数,范围:非负整数。

默认值:0

verbosity

打印消息的详细程度。如果 verbosity 小于 0,则打印消息仅显示致命错误。如果将 verbosity 设置为 0,则打印消息将包含错误和警告。如果 verbosity1,则打印消息会显示更多信息。大于 1verbosity 会在打印消息中显示最多的信息,可用于调试。

有效值:整数。

默认值:1