4. 特征偏移检测:单特征分布对比方法、KS检验与卡方检验、特征偏移的量化指标
特征偏移检测是批次监控的核心环节。当模型上线后,输入特征的分布会随时间、客群结构或外部环境变化而发生偏移。本节将系统讲解单特征分布对比的三种主流方法、对应的统计检验工具,以及如何量化偏移程度以设定告警阈值。
4.1 单特征分布对比方法
根据特征的数据类型(连续型 vs 离散型),分布对比方法分为两类:
| 特征类型 | 对比方法 | 适用场景 | 输出指标 |
|---|---|---|---|
| 连续型 | 分位数对比(Q-Q Plot) | 检查整体分布形状是否一致 | 分位数偏差 |
| 连续型 | 核密度估计(KDE)对比 | 观察分布峰值、尾部变化 | 密度差异面积 |
| 连续型 | 统计矩对比(均值/方差/偏度) | 快速定位集中趋势或离散度变化 | 矩变化率 |
| 离散型 | 频数/频率对比(条形图) | 检查各类别占比是否稳定 | 类别占比差 |
| 离散型 | WOE/IV 对比 | 评估特征对目标变量的区分能力变化 | IV 衰减率 |
实战建议:在风控批次监控中,优先使用分位数对比和频数对比,因为它们对异常值不敏感,且计算效率高,适合每日批量扫描数百个特征。
4.2 KS检验与卡方检验
统计检验为分布对比提供了严格的显著性判断依据。在特征偏移检测中,最常用的两种检验是 KS检验(Kolmogorov-Smirnov Test)和 卡方检验(Chi-Square Test)。
4.2.1 KS检验(连续型特征)
KS检验用于判断两个连续分布是否来自同一总体。其核心思想是比较两个经验累积分布函数(ECDF)的最大垂直距离。
- 统计量 D:两个 ECDF 之间的最大绝对差,取值范围 [0, 1]。
- 原假设 H₀:两个分布相同。
- 判定规则:当 D 值大于临界值或 p-value < 0.05 时,拒绝 H₀,认为分布发生显著偏移。
# Python 示例:KS检验计算
from scipy.stats import ks_2samp
# reference: 训练集特征,current: 当前批次特征
stat, p_value = ks_2samp(reference, current)
print(f"KS统计量 D = {stat:.4f}, p-value = {p_value:.4f}")
if p_value < 0.05:
print("警告:特征分布发生显著偏移")
else:
print("分布无显著差异")
4.2.2 卡方检验(离散型特征)
卡方检验用于判断两个离散分布的类别频数是否存在显著差异。它比较实际观测频数与期望频数之间的偏离程度。
- 统计量 χ²:∑(O-E)²/E,其中 O 为观测频数,E 为期望频数。
- 自由度:(行数-1) × (列数-1)。
- 判定规则:当 χ² 大于临界值或 p-value < 0.05 时,拒绝 H₀,认为类别分布发生偏移。
# Python 示例:卡方检验计算
from scipy.stats import chi2_contingency
# contingency_table: 列联表,行=批次(参考/当前),列=类别
chi2, p_value, dof, expected = chi2_contingency(contingency_table)
print(f"卡方统计量 χ² = {chi2:.4f}, p-value = {p_value:.4f}")
if p_value < 0.05:
print("警告:类别分布发生显著偏移")
else:
print("类别分布无显著差异")
注意:当样本量极大(如 > 10万)时,KS检验和卡方检验对微小差异也会给出显著结果。此时应结合效应量(如 D 值大小、Cramer's V)而非仅依赖 p-value 来判断是否触发告警。
4.3 特征偏移的量化指标
除了统计检验的 p-value,实际工程中更需要可量化的偏移指标来设定告警阈值。以下是三种最常用的量化指标:
| 指标名称 | 计算公式 | 取值范围 | 阈值参考 | 适用特征 |
|---|---|---|---|---|
| PSI (Population Stability Index) | ∑(Pᵢ - Qᵢ) × ln(Pᵢ / Qᵢ) | [0, +∞) | < 0.1: 无偏移 0.1~0.25: 轻度偏移 > 0.25: 严重偏移 |
连续型(分箱后) |
| KS统计量 D | max|ECDF_ref(x) - ECDF_cur(x)| | [0, 1] | < 0.05: 无偏移 0.05~0.15: 轻度偏移 > 0.15: 严重偏移 |
连续型 |
| 类别占比最大差 | max|P_ratio(c) - Q_ratio(c)| | [0, 1] | < 0.03: 无偏移 0.03~0.10: 轻度偏移 > 0.10: 严重偏移 |
离散型 |
阈值调优核心原则:
- PSI < 0.1:绿色通道,无需告警。
- PSI 0.1~0.2:黄色预警,需人工复核。
- PSI > 0.25:红色告警,立即阻断或回滚模型。
- 对于高重要性特征(如收入、负债率),阈值应收紧 30%~50%。
4.4 指标选择与阈值设定策略
在实际风控系统中,不同特征的重要性和稳定性要求不同,因此需要差异化设定阈值:
- 高重要性特征(如收入、负债率、征信查询次数):PSI 阈值设为 0.05~0.1,KS D 阈值设为 0.03~0.05。
- 中等重要性特征(如年龄、职业类别):PSI 阈值设为 0.1~0.2,KS D 阈值设为 0.05~0.1。
- 低重要性特征(如居住省份、设备型号):PSI 阈值设为 0.2~0.3,KS D 阈值设为 0.1~0.15。
- 离散型特征:类别占比最大差阈值设为 0.03~0.05(高重要性)或 0.05~0.1(低重要性)。
调优技巧:建议先使用历史数据回测,统计每个特征在无偏移时期的 PSI 和 KS D 的 95% 分位数,以此作为初始阈值。上线后持续监控告警率,若告警率过高(如 > 5%),则适当放宽阈值;若漏报率过高,则收紧阈值。