第1章:模型训练与评估——从数据到模型的完整链路
各位同学好,我是老张。今天咱们聊聊模型训练与评估这个环节。说实话,很多刚入行的同学觉得这步就是调个包、跑个分完事。但我在项目中踩过的坑告诉我——这一步没做好,后面上线全是泪。
咱们先看一张整体流程图,把今天要讲的内容串起来:
1.1 数据集划分——别让数据泄露坑了你
数据集划分,听起来简单对吧?但我在项目中见过太多人在这步翻车。你想想看,如果训练集和测试集有重叠,或者时间顺序搞反了,后面所有指标都是假的。
我个人习惯的做法是:
- 训练集(60%-70%):用来拟合模型参数
- 验证集(15%-20%):用来调超参数、做模型选择
- 测试集(15%-20%):最终评估,只能看一次
对于时间序列数据(比如交易流水),一定要按时间切分。我建议用前80%的时间段做训练,后20%做测试。别问为什么,问就是未来不能预测过去。
1.2 模型选择——三个常用武器的对比
风控场景下,我最常用的三个模型是:逻辑回归、决策树、XGBoost。它们各有各的脾气。
| 模型 | 优点 | 缺点 | 我的使用场景 |
|---|---|---|---|
| 逻辑回归 | 可解释性强、训练快、不易过拟合 | 特征交互需要手动做、非线性能力弱 | 监管要求高的场景(如银行评分卡) |
| 决策树 | 直观、能处理非线性、不需要特征缩放 | 容易过拟合、不稳定(数据小变化导致树结构大变) | 快速基线模型、特征重要性分析 |
| XGBoost | 精度高、自带正则化、处理缺失值 | 参数多、调参耗时、可解释性差 | 追求性能的线上模型(配合SHAP解释) |
嗯,这里要注意:逻辑回归虽然简单,但千万别小看它。我在某头部金融公司做过一个项目,监管要求模型必须可解释,最后就是逻辑回归上线的。你想想看,有时候"简单"反而是优势。
1.3 交叉验证——别让你的模型"偏科"
交叉验证说白了就是:把数据分成K份,轮流拿一份做验证,其余做训练。我一般用5折或10折。
为什么需要它?因为单次划分可能运气好或运气差。交叉验证能给你一个更稳定的性能估计。
代码示例(Python):
from sklearn.model_selection import StratifiedKFold
import numpy as np
# 假设 X 是特征,y 是标签(0/1)
skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
for fold, (train_idx, val_idx) in enumerate(skf.split(X, y)):
X_train, X_val = X[train_idx], X[val_idx]
y_train, y_val = y[train_idx], y[val_idx]
print(f"第 {fold+1} 折: 训练集正样本比例 {y_train.mean():.3f}, 验证集正样本比例 {y_val.mean():.3f}")
# 在这里训练你的模型
1.4 评估指标——AUC、KS、F1-score到底看哪个?
很多同学一上来就问:"哪个指标最好?" 我的回答是:没有最好,只有最合适。
1.4.1 AUC(Area Under the ROC Curve)
AUC衡量的是模型把正样本排在负样本前面的能力。取值范围0.5-1,越大越好。
- 0.5:随机猜
- 0.7-0.8:还不错
- 0.8-0.9:很好
- 0.9以上:小心过拟合
1.4.2 KS(Kolmogorov-Smirnov)
KS是风控领域最常用的指标之一。它衡量的是好样本和坏样本的累计分布最大差距。一般要求KS > 0.3才算可用。
计算公式:KS = max(TPR - FPR),其中TPR是真正率,FPR是假正率。
1.4.3 F1-score
F1-score是精确率(Precision)和召回率(Recall)的调和平均。对于不平衡数据集,我建议重点关注召回率——宁可误杀,不可放过。
三个指标怎么选?我个人的经验法则:
- 做排序模型(比如给客户打分排序):看AUC
- 做二分类决策(比如是否拒绝贷款):看KS + 混淆矩阵
- 关注少数类(比如欺诈检测):看F1-score和召回率
1.5 实战小贴士——模型训练后的检查清单
模型训练完别急着上线。我每次都会过一遍这个清单:
- 检查训练集和测试集分布是否一致——用PSI(群体稳定性指标)
- 检查特征重要性——有没有明显不合理的特征排前面?
- 检查模型在不同分群上的表现——比如年轻人和老年人,模型公平吗?
- 做一次压力测试——极端值输入,模型输出是否合理?
好了,这一章的内容就到这里。记住:模型训练不是终点,评估才是你真正理解模型的开端。下一章咱们聊聊特征工程——那才是真正拉开模型差距的地方。
公众号:蓝海资料掘金营,微信deep3321