4. XGBoost 核心参数详解

XGBoost 模型的效果高度依赖于参数配置。在交易风控场景中,错误的参数设置可能导致模型过拟合(记住历史噪声)或欠拟合(无法捕捉欺诈模式)。本章将 XGBoost 参数分为三大类进行系统讲解:通用参数、Booster 参数和学习任务参数。

参数调优原则:在交易风控中,优先调整 Booster 参数(如 max_depth、subsample)来控制模型复杂度,其次调整学习任务参数(如 eval_metric)来匹配业务目标。通用参数通常保持默认即可。

4.1 通用参数(General Parameters)

通用参数控制模型运行的宏观行为,包括选择基学习器类型和利用硬件资源。

参数名 默认值 类型 说明 风控建议
booster gbtree string 基学习器类型:gbtree(树模型)、gblinear(线性模型)、dart(带 Dropout 的树) 风控数据通常非线性,保持 gbtree
nthread 最大核数 int 并行训练使用的 CPU 线程数 设为 -1 自动使用全部核;生产环境建议预留 1 核给系统
verbosity 1 int 日志打印级别(0=静默,1=警告,2=信息,3=调试) 训练时设为 2 观察进度;上线后设为 0
关键点:booster='dart' 在风控小样本场景下可有效防止过拟合,但训练速度会变慢。如果交易样本量少于 10 万,可以尝试 dart 配合 rate_drop=0.1。

4.2 Booster 参数(核心调优参数)

Booster 参数直接控制每棵树的生长方式和集成策略,是风控模型调优的主战场。以下四个参数最为关键:

4.2.1 eta(学习率,Learning Rate)

  • 作用:控制每轮迭代的步长,缩小每棵树的贡献,防止过拟合。
  • 范围:[0, 1],常用值 0.01 ~ 0.3。
  • 风控经验:欺诈样本占比通常低于 5%,建议从 0.05 开始,配合较大的 nrounds(500~1000)逐步拟合。

4.2.2 max_depth(树的最大深度)

  • 作用:限制树的生长深度,深度越大模型越复杂,越容易过拟合。
  • 范围:int,默认 6,风控中常用 3~8。
  • 风控经验:交易特征通常有 50~200 维,深度 4~6 即可捕获主要交互效应。深度超过 10 极易过拟合。

4.2.3 subsample(行采样比例)

  • 作用:每棵树随机选取一定比例的训练样本,增加随机性,降低方差。
  • 范围:(0, 1],默认 1(使用全部样本)。
  • 风控经验:建议设为 0.7~0.9。对于严重不平衡的风控数据,采样时注意保持正负样本比例(可配合 scale_pos_weight)。

4.2.4 colsample_bytree(列采样比例)

  • 作用:每棵树随机选取一定比例的特征,类似随机森林的特征子空间。
  • 范围:(0, 1],默认 1。
  • 风控经验:当特征维度超过 100 时,建议设为 0.6~0.8,既能加速训练,又能减少特征间的共线性影响。
避坑提示:不要同时将 subsample 和 colsample_bytree 设得过低(如都小于 0.5),否则每棵树看到的样本和特征太少,导致模型欠拟合。建议先固定一个为 0.8,调整另一个。
Booster 参数对模型复杂度的影响 欠拟合区域 过拟合区域 最佳平衡区 eta 小 → 慢收敛 eta 适中 (0.05~0.1) eta 大 → 震荡 max_depth ≤ 3 max_depth 4~6 max_depth ≥ 10 subsample 0.5 subsample 0.7~0.9 subsample 1.0 调优顺序:先定 max_depth 和 subsample,再调 eta 和 colsample_bytree

4.3 学习任务参数(Learning Task Parameters)

学习任务参数定义模型要解决的任务类型以及如何评估模型效果。

4.3.1 objective(目标函数)

指定学习任务和损失函数。交易风控中最常用的目标函数:

objective 值 适用场景 损失函数 风控说明
binary:logistic 二分类(欺诈/正常) Logistic Loss 输出概率值,最常用
binary:logitraw 二分类(需要原始 logit) Logistic Loss 输出未归一化的分数,用于自定义阈值
reg:logistic 回归后映射到 [0,1] RMSE 不推荐用于分类,概率校准较差
rank:ndcg 排序(风险优先级排序) NDCG 用于风控名单排序场景
风控最佳实践:99% 的交易二分类场景使用 binary:logistic。如果业务需要自定义损失函数(如对欺诈漏报施加更高惩罚),可使用 binary:logitraw 配合自定义目标函数。

4.3.2 eval_metric(评估指标)

用于验证集上的模型评估,可以同时指定多个指标。风控场景推荐组合使用:

  • auc:最稳健的排序能力指标,不受阈值影响。风控必选。
  • logloss:交叉熵损失,反映概率校准质量。
  • error:二分类错误率,默认阈值 0.5。在不平衡数据中参考价值有限。
  • aucpr:PR 曲线下面积,对正样本(欺诈)更敏感,推荐用于严重不平衡场景。
# 风控模型典型参数配置示例
params = {
    # 通用参数
    'booster': 'gbtree',
    'nthread': 8,
    'verbosity': 1,

    # Booster 参数
    'eta': 0.05,
    'max_depth': 5,
    'subsample': 0.8,
    'colsample_bytree': 0.7,
    'min_child_weight': 5,      # 防止过拟合,控制叶子节点最小样本权重
    'gamma': 0.1,               # 分裂最小损失减少量

    # 学习任务参数
    'objective': 'binary:logistic',
    'eval_metric': ['auc', 'logloss'],
    'scale_pos_weight': 10      # 正负样本权重比,缓解不平衡
}
XGBoost 风控参数选择决策流程 开始参数配置 步骤1:设置通用参数 步骤2:设置 Booster 参数 步骤3:设置学习任务参数 训练 & 验证调优 调优检查清单 ☐ booster = gbtree ☐ nthread 预留 1 核 ☐ max_depth 3~6 ☐ subsample 0.7~0.9 ☐ colsample_bytree 0.6~0.8 ☐ objective = binary:logistic ☐ eval_metric = auc + logloss ☐ scale_pos_weight 按比例 ☐ 先粗调后细调

4.4 参数组合速查表

以下表格总结了不同风控场景下的推荐参数组合,方便快速上手:

场景 eta max_depth subsample colsample_bytree min_child_weight scale_pos_weight
快速基线模型 0.1 6 1.0 1.0 1 sum(neg)/sum(pos)
高维特征(>200维) 0.05 4 0.8 0.6 3 同上
小样本(<5万) 0.03 3 0.7 0.8 5 同上
高精度要求 0.02 5 0.85 0.75 3 同上 × 1.5
快速启动建议:如果时间有限,直接使用“快速基线模型”组合训练一轮,观察 AUC 和 LogLoss。然后根据过拟合/欠拟合方向,参考上表调整对应参数。每次只改 1~2 个参数,避免调参失控。