2. 基础概念回顾:训练集、验证集、测试集的定义与作用
在构建额度策略模型时,数据集的正确切分是模型泛化能力的基石。若切分不当,模型在历史数据上表现优异,上线后却可能因过拟合或数据泄露导致策略失效。本节系统回顾三个核心数据子集的定义与职责。
2.1 三大子集的定义与核心职责
| 子集名称 | 英文 | 核心职责 | 额度策略场景示例 |
|---|---|---|---|
| 训练集 | Training Set | 用于拟合模型参数(如 LightGBM 的树结构、叶子权重) | 使用 2023 年 1–9 月的用户行为数据训练初始额度模型 |
| 验证集 | Validation Set | 用于模型选择、超参数调优、早停(Early Stopping) | 在 2023 年 10 月数据上调整树深度、学习率,防止过拟合 |
| 测试集 | Test Set | 用于最终评估模型的泛化误差,模拟线上真实表现 | 在 2023 年 11–12 月数据上计算 KS、AUC,决定是否上线 |
关键原则:测试集在模型开发过程中只能使用 一次(最终评估时)。反复使用测试集调参会导致信息泄露,使测试集失去评估泛化能力的作用。
2.2 三者的层级关系与数据流向
下图展示了从原始数据到最终模型评估的完整数据流向,以及每个子集在模型开发周期中的位置。
2.3 额度策略场景中的特殊考量
- 时间顺序不可逆:额度策略建模必须按时间顺序切分,严禁随机打乱。例如:用 2023 年 1–8 月训练,9 月验证,10–12 月测试。若随机切分,未来信息会泄露到训练集中,导致模型高估用户还款能力。
- 样本分布漂移:用户群体、宏观经济、风控政策随时间变化,训练集与测试集的分布可能不同。验证集应尽量接近测试集的时间窗口,以便早停策略捕捉漂移信号。
- 拒绝推断影响:训练集通常只包含历史放款用户(有标签),而测试集可能包含被拒绝用户(无标签)。切分时需明确标注样本来源,避免在测试集上使用拒绝推断后的伪标签。
常见陷阱:在额度策略中,有人将验证集和测试集合并用于调参,认为“数据越多越好”。这会导致模型在测试集上过拟合,最终上线后 KS 衰减 10%–20%。务必保持测试集的 零次使用 原则。
2.4 切分比例的经验参考
| 数据量级 | 训练集 | 验证集 | 测试集 | 备注 |
|---|---|---|---|---|
| 小样本(< 5 万条) | 70% | 15% | 15% | 可考虑交叉验证替代固定验证集 |
| 中等样本(5–50 万条) | 70% | 15% | 15% | 时间序列切分优先 |
| 大样本(> 50 万条) | 80% | 10% | 10% | 验证集可适当缩小,节省调参时间 |
实践建议:在 LightGBM 中,可通过
valid_sets 参数直接传入验证集,配合 early_stopping_rounds 实现自动早停。测试集仅在最终评估时传入 predict() 方法,不参与任何训练过程。