XGBoost - 超参数



本章将讨论 XGBoost 算法所需或常用超参数的子集。这些参数已被选择以简化从数据生成模型参数的过程。本章按类别列出了需要配置的必需超参数。这些超参数是可设置的且可选的。

XGBoost 超参数类别

XGBoost 创建者将所有超参数主要分为三大类:

  • 通用参数

  • 提升器参数

  • 学习任务参数

让我们在下节讨论这三类超参数:

通用参数

通用参数定义了 XGBoost 模型的整体功能和工作方式。以下是此类别中的参数列表:

  • booster [默认=gbtree]:此参数主要选择每次迭代运行的模型类型。它提供 2 个选项 - gbtree:基于树的模型和 gblinear:线性模型。

  • silent [默认=0]:用于将模型设置为静默模式。如果激活并设置为 1,则表示不会打印任何运行消息。最好保持为 0,因为这些消息有助于理解模型。

  • nthread [默认为可用线程的最大数量]:主要用于并行处理,应输入系统中的核心数。如果要在所有核心上运行,则不会输入值,算法将自动检测它。

还有两个参数 XGBoost 会自动设置,因此您无需担心它们。

提升器参数

由于有两种类型的提升器,这里我们只讨论树提升器,因为它比线性提升器使用频率低,并且性能始终更好。

参数 描述 典型值
eta 类似于学习速率。帮助控制模型在每一步之后的变化程度。 0.01-0.2
min_child_weight 树节点中所需所有观测值的最小总权重。 使用交叉验证进行调优
max_depth 树的最深级别。控制过拟合(模型过于特定)。 3-10
max_leaf_nodes 树可以具有的最多叶子(端点)。
gamma 损失需要减少的最小数量才能分割节点。 基于损失函数进行调优
max_delta_step 限制树的权重可以变化的程度。 通常不需要
subsample 用于生长每棵树的数据比例。 0.5-1
colsample_bytree 为每棵树随机选择的列(特征)的比例。 0.5-1
colsample_bylevel 在树的每一层每个分割处使用的列的比例。 通常不使用
lambda L2 正则化(如岭回归),有助于减少过拟合。 尝试减少过拟合
alpha L1 正则化(如 Lasso 回归),对于具有许多特征的模型很有用。 适用于高维数据
scale_pos_weight 帮助处理不平衡的数据类别,使模型学习得更快。 > 0(对于不平衡数据)

学习任务参数

学习任务参数定义了优化的目标和每一步将选择的指标。

objective [默认=reg:linear]

用于定义要最小化的损失函数。最常用的值如下:

  • binary:logistic - 指的是二元分类,因为有两个分类。它返回预期概率而不是实际类别。

  • multi:softmax - 用于多类别分类。它返回预期类别而不是概率。你还需要设置额外的选项 num_class 来告诉模型有多少个唯一的类别。

  • multi:softprob - 此函数与 softmax 类似,它提供数据点可能属于的每个可能类别的概率,而不仅仅是预测的类别。

eval_metric [根据 objective 默认]

评估指标必须与验证数据一起使用。默认参数是用于错误分类和回归的 rmse。

典型值如下:

  • rmse:均方根误差

  • mae:平均绝对误差

  • logloss:负对数似然

  • error:二元分类错误率(0.5 阈值)

  • merror:多类别分类错误率

  • mlogloss:多类别对数损失

  • auc:曲线下面积

seed [默认=0]

这是随机数种子。它用于生成可重复的结果以及参数调优。

如果您以前从未使用过 Scikit-Learn,则不太可能识别这些参数名称。但是,Python xgboost 包有一个名为 XGBClassifier 参数的 sklearn 包装器。它遵循 sklearn 样式的命名约定。将更改的参数名称为

  • eta -> learning_rate

  • lambda -> reg_lambda

  • alpha -> reg_alpha

广告
© . All rights reserved.