4、偏差检测方法:描述性统计对比、PSI(群体稳定性指标)、特征分布可视化(KS检验、卡方检验)
样本偏差的检测是校准工作的前提。只有准确识别出训练样本与目标总体(或线上实时样本)之间的分布差异,才能有针对性地选择校准策略。本章系统介绍三类最常用的偏差检测方法:描述性统计对比、群体稳定性指标(PSI)以及特征分布可视化(KS检验、卡方检验)。
4.1 描述性统计对比
描述性统计对比是最直观、最快速的偏差检测手段。通过对比训练集与验证集(或线上样本)在关键特征上的统计量,可以初步判断是否存在系统性偏移。
4.1.1 核心对比维度
| 统计量 | 适用特征类型 | 偏差指示 |
|---|---|---|
| 均值(Mean) | 连续型 | 均值差异 > 0.1 标准差时需关注 |
| 中位数(Median) | 连续型 | 均值与中位数同时偏移表明分布形态改变 |
| 标准差(Std) | 连续型 | 标准差扩大说明样本离散度增加 |
| 缺失率(Missing Rate) | 任意类型 | 缺失率差异 > 5% 可能代表数据采集逻辑变化 |
| 类别占比(Category Ratio) | 离散型 | 任一类别占比变化 > 10% 需深入分析 |
4.1.2 操作步骤
- 选定对比样本集:通常为训练集 vs 验证集,或训练集 vs 线上最近30天样本。
- 计算关键统计量:对每个特征分别计算均值、中位数、标准差、缺失率(连续型)或类别占比(离散型)。
- 计算差异指标:使用绝对差异或相对差异(如差异百分比)量化偏移程度。
- 设定预警阈值:根据业务经验设定阈值,如均值差异超过0.2个标准差即标记为“待审查”。
实践建议:描述性统计对比适合作为“第一道防线”,快速筛选出明显偏移的特征。但该方法对分布形态的细微变化不敏感,需要结合后续的PSI和分布检验进行深入分析。
4.2 群体稳定性指标(PSI)
PSI(Population Stability Index)是风控领域衡量样本分布稳定性的核心指标,广泛应用于模型监控和样本偏差检测。它通过比较两个样本集在特征上的分箱分布差异,给出一个综合性的偏移度量。
4.2.1 PSI 计算公式
PSI 的计算基于特征分箱后的实际占比与预期占比:
PSI = Σ (实际占比_i - 预期占比_i) * ln(实际占比_i / 预期占比_i)
其中:
- 预期占比:通常为训练集或基准样本集在各分箱中的样本比例。
- 实际占比:当前待检测样本集(如线上样本)在各分箱中的样本比例。
- 分箱方式:连续型特征通常等频分箱(10箱或20箱),离散型特征按类别自然分箱。
4.2.2 PSI 评判标准
| PSI 值范围 | 稳定性等级 | 建议操作 |
|---|---|---|
| < 0.1 | 稳定 | 无需处理 |
| 0.1 ~ 0.25 | 轻度偏移 | 需关注,建议进一步分析 |
| > 0.25 | 严重偏移 | 必须进行校准或模型重建 |
4.2.3 PSI 计算示例(Python)
import numpy as np
import pandas as pd
def calculate_psi(expected, actual, bins=10):
# 等频分箱
expected_bins = pd.qcut(expected, q=bins, duplicates='drop')
expected_counts = expected.groupby(expected_bins).count()
actual_counts = actual.groupby(pd.cut(actual, bins=expected_bins.cat.categories)).count()
# 计算占比
expected_pct = expected_counts / len(expected)
actual_pct = actual_counts / len(actual)
# 避免除零
actual_pct = actual_pct.replace(0, 0.0001)
expected_pct = expected_pct.replace(0, 0.0001)
# 计算PSI
psi_value = np.sum((actual_pct - expected_pct) * np.log(actual_pct / expected_pct))
return psi_value
# 使用示例
train_feature = np.random.normal(0, 1, 10000)
online_feature = np.random.normal(0.2, 1.1, 10000)
psi = calculate_psi(train_feature, online_feature)
print(f"PSI = {psi:.4f}")
注意事项:PSI 对分箱数量敏感,建议连续型特征统一使用10箱或20箱等频分箱。当某分箱内样本数为0时,需做平滑处理(如加极小值),避免对数计算报错。
4.3 特征分布可视化:KS检验与卡方检验
可视化方法能够直观展示分布差异,而统计检验则提供量化判断依据。本节重点介绍KS检验(适用于连续型特征)和卡方检验(适用于离散型特征)。
4.3.1 KS检验(Kolmogorov-Smirnov Test)
KS检验用于判断两个连续型样本是否来自同一分布。其核心统计量是两条累积分布函数(CDF)曲线的最大垂直距离。
- 原假设 H₀:两个样本来自同一分布。
- KS统计量:D = max|F₁(x) - F₂(x)|,其中F₁和F₂分别为两个样本的累积分布函数。
- 判定标准:p值 < 0.05 时拒绝原假设,认为分布存在显著差异。
应用场景:KS检验特别适合检测连续型特征(如收入、年龄、负债率)在训练集与线上样本之间的分布偏移。当D值 > 0.1 且 p值 < 0.05 时,该特征应纳入校准范围。
4.3.2 卡方检验(Chi-Square Test)
卡方检验用于判断两个离散型特征(或连续型特征分箱后)的分布是否独立。在偏差检测中,常用于比较训练集与线上样本在类别特征上的分布一致性。
- 原假设 H₀:两个样本在特征上的分布无显著差异。
- 卡方统计量:χ² = Σ (Oᵢ - Eᵢ)² / Eᵢ,其中Oᵢ为观测频数,Eᵢ为期望频数。
- 判定标准:p值 < 0.05 时拒绝原假设,认为分布存在显著差异。
4.3.3 分布可视化对比图
下图展示了连续型特征的分布对比,包含直方图、累积分布曲线以及KS统计量标注。
4.3.4 离散型特征卡方检验可视化
对于离散型特征,使用堆叠柱状图或分组柱状图对比训练集与线上样本的类别占比,并标注卡方检验结果。
4.4 偏差检测方法对比总结
| 检测方法 | 适用特征类型 | 输出指标 | 优点 | 局限性 |
|---|---|---|---|---|
| 描述性统计对比 | 连续型 / 离散型 | 均值差、缺失率差等 | 快速、直观、易解释 | 对分布形态变化不敏感 |
| PSI | 连续型(需分箱) | PSI值(0~∞) | 综合性强、行业标准 | 分箱方式影响结果 |
| KS检验 | 连续型 | D值 + p值 | 统计严谨、可视化直观 | 对样本量敏感 |
| 卡方检验 | 离散型 | χ²值 + p值 | 适合类别特征 | 对稀疏类别不稳健 |
最佳实践:建议采用“三步走”策略:先用描述性统计快速扫描,再用PSI量化整体偏移程度,最后对高PSI特征进行KS检验或卡方检验确认。三种方法互为补充,共同构成完整的偏差检测体系。