特征分层方法论:分层的目的、原则与架构总览

在KYC与AML实战中,原始特征往往维度高、噪声大、业务含义模糊。特征分层的核心目的是将无序的原始数据按照业务逻辑、行为规律和关系网络进行结构化重组,从而提升模型的解释性、稳定性和可审计性。本节将系统阐述特征分层的目的、三大分层原则以及整体架构。

一、特征分层的目的

特征分层并非简单的数据分类,而是为了应对金融合规场景中的三大核心挑战:

挑战 分层解决方式 预期收益
维度爆炸:单客户数百个原始字段 按业务语义归并,减少冗余 特征维度降低60%-80%
解释性差:黑盒模型难以通过合规审计 分层后每层特征有明确业务标签 模型可解释性提升,满足监管要求
时效衰减:静态特征无法捕捉动态风险 行为层与网络层支持时间窗口滑动 风险识别时效性从T+1提升至T+0
实战要点:特征分层不是一次性工作。在模型迭代中,业务层特征通常保持稳定,行为层和网络层特征需要根据最新交易模式和洗钱手法定期(建议每季度)重新评估与更新。

二、分层原则:业务层、行为层、网络层

特征分层遵循三大核心原则,每一层对应不同的数据来源与风险视角:

1. 业务层(Business Layer)

  • 定义:客户在开户及持续尽职调查(CDD)过程中提供的静态信息。
  • 数据来源:KYC表单、证件信息、工商注册数据、制裁名单。
  • 典型特征:客户类型(个人/企业)、注册地、受益所有人、行业代码、注册资本、成立年限。
  • 分层价值:构成客户风险画像的基线,是后续行为异常判定的参照系。

2. 行为层(Behavior Layer)

  • 定义:客户在账户生命周期内产生的交易与操作行为数据。
  • 数据来源:交易流水、登录日志、转账记录、设备指纹。
  • 典型特征:日均交易金额、交易频次、夜间交易占比、快进快出比率、交易对手多样性。
  • 分层价值:捕捉动态风险信号,识别偏离客户历史画像的异常行为。

3. 网络层(Network Layer)

  • 定义:客户与其他实体(账户、IP、设备、法人)之间的关联关系。
  • 数据来源:交易对手关系、共享设备、共同法人、资金流向图。
  • 典型特征:一度/二度关联节点数、社区聚类系数、资金流入流出中心度、环路检测标识。
  • 分层价值:发现团伙作案、循环交易、洗钱网络等单点行为无法识别的风险。
分层原则速记:业务层回答“客户是谁”,行为层回答“客户在做什么”,网络层回答“客户和谁在一起”。三层叠加才能形成完整的风险拼图。

三、分层架构总览

下图展示了特征分层的完整架构,从原始数据输入到最终特征向量输出,每一层都有明确的处理逻辑与输出规范。

KYC与AML特征分层架构总览 特征分层架构总览 原始数据输入 KYC表单 | 交易流水 | 设备指纹 | 工商数据 | 制裁名单 | 关系图谱 业务层(Business Layer) 特征:客户类型 · 注册地 · 受益所有人 · 行业代码 · 注册资本 · 成立年限 处理:数据清洗 · 标准化 · 缺失值填充 · 类别编码 行为层(Behavior Layer) 特征:日均交易金额 · 交易频次 · 夜间交易占比 · 快进快出比率 处理:时间窗口聚合 · 滑动统计 · 比率计算 · 异常检测 网络层(Network Layer) 特征:关联节点数 · 社区聚类系数 · 中心度 · 环路检测标识 处理:图构建 · 社区发现 · 中心度计算 · 子图匹配 输出:三层融合特征向量 → 风险评分模型

四、分层架构的横向对比

为帮助理解三层特征在实际建模中的差异,下表从多个维度进行对比:

对比维度 业务层 行为层 网络层
更新频率 低频(开户/年审时更新) 高频(每日/实时) 中频(每周/每日)
特征稳定性 高(数月不变) 中(随交易波动) 低(随关系变化)
模型贡献 基线风险区分 异常行为捕捉 团伙风险识别
数据量级 百级特征 千级特征 万级特征(图结构)
合规审计难度 低(字段含义明确) 中(需解释窗口逻辑) 高(图算法需额外说明)
常见误区:部分团队在建模初期只关注行为层特征,忽略业务层基线,导致模型对“新开户即大额交易”这类高风险场景漏报。务必在特征工程阶段将三层特征同步构建,并在模型训练时保留业务层作为强制输入。

五、分层特征的处理流程

每一层特征在进入模型前,都需要经过标准化的处理流程。以下以行为层为例展示典型处理步骤:

# 行为层特征处理伪代码示例
def build_behavior_features(transactions_df, customer_id, window_days=30):
    """
    构建行为层特征:时间窗口聚合
    """
    # 1. 按客户分组,设定滑动窗口
    windowed = transactions_df.groupby(customer_id).rolling(window=f'{window_days}D')
    
    # 2. 聚合统计量
    features = pd.DataFrame({
        'avg_amount': windowed['amount'].mean(),
        'max_amount': windowed['amount'].max(),
        'tx_count': windowed['amount'].count(),
        'night_ratio': windowed['is_night'].mean(),
        'fast_in_out': windowed['is_fast'].sum() / windowed['amount'].count()
    }).reset_index()
    
    # 3. 缺失值处理(新客户用业务层同类客户均值填充)
    features.fillna(group_mean_dict, inplace=True)
    
    # 4. 异常值截断(99%分位数)
    for col in ['avg_amount', 'max_amount']:
        upper = features[col].quantile(0.99)
        features[col] = features[col].clip(upper=upper)
    
    return features

业务层和网络层的处理流程类似,但各有侧重:业务层重点处理缺失值和类别编码;网络层重点处理图构建和社区发现算法。

六、分层架构的实战价值

特征分层方法论在多个金融合规项目中已被验证有效。以下是一个典型应用场景:

  • 场景:某支付公司识别“空壳公司洗钱”团伙
  • 业务层发现:多家公司注册地址相同、注册资本极低、成立时间不足3个月
  • 行为层发现:这些公司账户均呈现“小额测试交易 → 大额快进快出 → 余额归零”的行为模式
  • 网络层发现:所有账户共享同一批IP和设备,且资金最终流向同一离岸账户
  • 三层融合结果:模型风险评分从单层最高的0.65提升至三层融合后的0.92,准确识别该团伙
关键结论:特征分层不是简单的数据分类,而是一种风险视角的升维。业务层提供基线,行为层捕捉动态,网络层揭示关联。三层特征缺一不可,共同构成KYC与AML模型的特征基石。