3. KYC模型特征分布监控:连续型与离散型特征的PSI计算差异及分箱策略

在KYC(Know Your Customer)模型的持续监控中,特征分布漂移(PSI)是衡量模型稳定性的核心指标。由于连续型特征与离散型特征的数据分布形态不同,其PSI计算方式与分箱策略存在显著差异。选择错误的分箱方法会导致PSI值失真,从而引发误告警或漏告警。

核心原则:PSI的计算依赖于将特征的实际分布与期望分布划分为若干区间(分箱),然后比较每个区间内样本占比的变化。分箱策略直接决定了PSI的敏感度与可靠性。

3.1 连续型特征与离散型特征的PSI计算差异

下表从数据本质、分箱必要性、计算逻辑和典型场景四个维度,对比两类特征的PSI计算差异:

对比维度 连续型特征 离散型特征
数据本质 数值在实数范围内连续取值,如年龄、收入、交易金额 取值来自有限类别或有序等级,如性别、职业、信用等级
分箱必要性 必须分箱,否则每个唯一值样本量过少,PSI无法计算 通常无需额外分箱,直接以每个类别作为天然区间
计算逻辑 先分箱,再统计每个箱内的样本占比,最后计算PSI 直接统计每个类别的样本占比,计算PSI;若类别过多需合并
典型场景 收入分布漂移、年龄结构变化、交易频次波动 职业构成变化、证件类型分布偏移、风险等级迁移
实操提示:对于离散型特征,若某个类别在期望分布中占比为0%,但在实际分布中出现,需进行平滑处理(如加1平滑或合并到邻近类别),否则PSI公式中会出现除以零的错误。

3.2 连续型特征的分箱策略:等频、等距与自定义

连续型特征的分箱是PSI计算中最关键的环节。三种主流分箱策略的对比与选择标准如下:

分箱策略 定义 优点 缺点 适用场景
等频分箱 每个箱内包含大致相同数量的样本 避免空箱或样本极少的箱;对长尾分布友好 箱边界随数据分布变化,跨时间可比性差 样本分布不均匀、存在极端值的特征
等距分箱 将数值范围等分为固定宽度的区间 箱边界固定,跨时间可比性强;解释性高 容易产生空箱或样本稀疏箱,PSI不稳定 分布均匀、业务含义明确的特征(如年龄)
自定义分箱 根据业务知识或风控规则设定箱边界 完全贴合业务逻辑;可聚焦高风险区间 依赖专家经验;维护成本高 有明确业务阈值的特征(如收入税档)
避坑指南:切勿在训练集和监控集上分别独立分箱。正确的做法是:基于期望分布(通常是训练集或建模样本)确定分箱边界,然后将该边界应用到实际分布(监控集)上,确保箱定义一致。

3.3 分箱策略选择流程图

下图展示了在KYC模型监控中,如何根据特征类型和分布特点选择合适的分箱策略:

KYC特征分箱策略选择流程 特征分布监控启动 特征是否为连续型? 是 连续型特征:需分箱 分布是否均匀?有无业务阈值? 均匀 等距分箱 不均匀 等频分箱 有业务阈值 自定义分箱 否(离散型) 离散型特征 以类别为天然箱 类别过多则合并 类别数 > 20? 是 合并低频类别 否 直接计算PSI 输出PSI告警结果

3.4 分箱策略的PSI计算对比示例

以“客户年龄”这一连续型特征为例,展示三种分箱策略对PSI计算结果的影响。假设期望分布(建模集)与实际分布(监控集)的年龄数据如下:

分箱策略 箱区间 期望占比 实际占比 PSI贡献 总PSI
等距分箱
(每10岁一箱)
18-28 25% 20% 0.011 0.045
28-38 35% 30% 0.008
38-48 25% 30% 0.010
48-58 15% 20% 0.016
等频分箱
(每箱25%样本)
18-25 25% 18% 0.022 0.038
25-35 25% 28% 0.004
35-45 25% 30% 0.010
45-58 25% 24% 0.002
自定义分箱
(按风控规则)
18-22(高风险) 10% 15% 0.025 0.062
22-35(中风险) 40% 35% 0.007
35-50(低风险) 35% 32% 0.003
50-58(高风险) 15% 18% 0.027
分析结论:上例中,自定义分箱的PSI最高(0.062),因为它将高风险区间(18-22岁和50-58岁)单独拆分,放大了这些区间的占比变化。等频分箱的PSI最低(0.038),因为它平滑了分布差异。在实际监控中,建议优先使用自定义分箱(当业务阈值明确时)或等距分箱(当分布均匀时),以保持PSI的跨时间可比性。

3.5 离散型特征的分箱处理与PSI计算

离散型特征的处理相对简单,但需注意以下关键点:

  • 天然分箱:每个类别作为一个独立的箱,直接计算期望占比与实际占比。
  • 类别合并:当类别数过多(通常超过20个)或某些类别样本占比极低(<1%)时,需将低频类别合并为“其他”类别,避免PSI被噪声主导。
  • 有序离散特征:如信用等级(A、B、C、D),可保持原有顺序,但分箱时需确保等级顺序在期望和实际分布中一致。
  • 零占比处理:若某个类别在期望分布中占比为0%,但在实际分布中出现,需进行平滑处理。常用方法为加1平滑:p_smooth = (count + 1) / (total + N),其中N为类别总数。
代码示例:离散型特征PSI计算的Python实现片段
import numpy as np

def psi_discrete(expected_counts, actual_counts, categories):
    """
    计算离散型特征的PSI
    expected_counts: 期望分布中各类别的样本数
    actual_counts: 实际分布中各类别的样本数
    categories: 类别列表
    """
    total_exp = sum(expected_counts)
    total_act = sum(actual_counts)
    psi_value = 0.0
    
    for i, cat in enumerate(categories):
        p_exp = (expected_counts[i] + 1) / (total_exp + len(categories))  # 加1平滑
        p_act = (actual_counts[i] + 1) / (total_act + len(categories))    # 加1平滑
        psi_value += (p_act - p_exp) * np.log(p_act / p_exp)
    
    return psi_value

# 示例:职业类别
categories = ['学生', '白领', '蓝领', '自由职业', '其他']
expected = [2000, 5000, 3000, 1500, 500]
actual = [1800, 5200, 3100, 1600, 300]
print(f"PSI = {psi_discrete(expected, actual, categories):.4f}")

3.6 分箱策略选择总结

特征类型 推荐分箱策略 箱数建议 注意事项
连续型(均匀分布) 等距分箱 5-10箱 箱边界固定,跨时间可比
连续型(长尾/偏态) 等频分箱 5-10箱 避免空箱,但边界会变化
连续型(有业务阈值) 自定义分箱 按业务规则 需定期复核阈值合理性
离散型(类别少) 天然类别 ≤20类 直接计算,注意零占比
离散型(类别多) 合并低频类别 10-20类 合并后需保持业务含义
最终提醒:无论选择哪种分箱策略,都必须在模型上线前确定并固化分箱边界。监控过程中如需调整分箱策略,需重新计算历史PSI基线,并记录变更原因,确保监控结果的可追溯性。