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: 严重偏移
离散型
阈值调优核心原则:
  1. PSI < 0.1:绿色通道,无需告警。
  2. PSI 0.1~0.2:黄色预警,需人工复核。
  3. PSI > 0.25:红色告警,立即阻断或回滚模型。
  4. 对于高重要性特征(如收入、负债率),阈值应收紧 30%~50%。
特征偏移检测流程与量化指标决策树 输入:参考分布 vs 当前分布 特征类型判断 连续型 离散型 连续型检测方法 • KS检验(ECDF最大距离) • PSI(分箱后稳定性) 离散型检测方法 • 卡方检验(频数差异) • 类别占比最大差 输出量化指标(D / PSI / Δ%) 阈值判定:绿/黄/红 阈值参考:PSI<0.1(绿) / 0.1~0.25(黄) / >0.25(红);KS D<0.05(绿) / 0.05~0.15(黄) / >0.15(红)

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%),则适当放宽阈值;若漏报率过高,则收紧阈值。