特征分层方法论:分层的目的、原则与架构总览
在KYC与AML实战中,原始特征往往维度高、噪声大、业务含义模糊。特征分层的核心目的是将无序的原始数据按照业务逻辑、行为规律和关系网络进行结构化重组,从而提升模型的解释性、稳定性和可审计性。本节将系统阐述特征分层的目的、三大分层原则以及整体架构。
一、特征分层的目的
特征分层并非简单的数据分类,而是为了应对金融合规场景中的三大核心挑战:
| 挑战 | 分层解决方式 | 预期收益 |
|---|---|---|
| 维度爆炸:单客户数百个原始字段 | 按业务语义归并,减少冗余 | 特征维度降低60%-80% |
| 解释性差:黑盒模型难以通过合规审计 | 分层后每层特征有明确业务标签 | 模型可解释性提升,满足监管要求 |
| 时效衰减:静态特征无法捕捉动态风险 | 行为层与网络层支持时间窗口滑动 | 风险识别时效性从T+1提升至T+0 |
实战要点:特征分层不是一次性工作。在模型迭代中,业务层特征通常保持稳定,行为层和网络层特征需要根据最新交易模式和洗钱手法定期(建议每季度)重新评估与更新。
二、分层原则:业务层、行为层、网络层
特征分层遵循三大核心原则,每一层对应不同的数据来源与风险视角:
1. 业务层(Business Layer)
- 定义:客户在开户及持续尽职调查(CDD)过程中提供的静态信息。
- 数据来源:KYC表单、证件信息、工商注册数据、制裁名单。
- 典型特征:客户类型(个人/企业)、注册地、受益所有人、行业代码、注册资本、成立年限。
- 分层价值:构成客户风险画像的基线,是后续行为异常判定的参照系。
2. 行为层(Behavior Layer)
- 定义:客户在账户生命周期内产生的交易与操作行为数据。
- 数据来源:交易流水、登录日志、转账记录、设备指纹。
- 典型特征:日均交易金额、交易频次、夜间交易占比、快进快出比率、交易对手多样性。
- 分层价值:捕捉动态风险信号,识别偏离客户历史画像的异常行为。
3. 网络层(Network Layer)
- 定义:客户与其他实体(账户、IP、设备、法人)之间的关联关系。
- 数据来源:交易对手关系、共享设备、共同法人、资金流向图。
- 典型特征:一度/二度关联节点数、社区聚类系数、资金流入流出中心度、环路检测标识。
- 分层价值:发现团伙作案、循环交易、洗钱网络等单点行为无法识别的风险。
分层原则速记:业务层回答“客户是谁”,行为层回答“客户在做什么”,网络层回答“客户和谁在一起”。三层叠加才能形成完整的风险拼图。
三、分层架构总览
下图展示了特征分层的完整架构,从原始数据输入到最终特征向量输出,每一层都有明确的处理逻辑与输出规范。
四、分层架构的横向对比
为帮助理解三层特征在实际建模中的差异,下表从多个维度进行对比:
| 对比维度 | 业务层 | 行为层 | 网络层 |
|---|---|---|---|
| 更新频率 | 低频(开户/年审时更新) | 高频(每日/实时) | 中频(每周/每日) |
| 特征稳定性 | 高(数月不变) | 中(随交易波动) | 低(随关系变化) |
| 模型贡献 | 基线风险区分 | 异常行为捕捉 | 团伙风险识别 |
| 数据量级 | 百级特征 | 千级特征 | 万级特征(图结构) |
| 合规审计难度 | 低(字段含义明确) | 中(需解释窗口逻辑) | 高(图算法需额外说明) |
常见误区:部分团队在建模初期只关注行为层特征,忽略业务层基线,导致模型对“新开户即大额交易”这类高风险场景漏报。务必在特征工程阶段将三层特征同步构建,并在模型训练时保留业务层作为强制输入。
五、分层特征的处理流程
每一层特征在进入模型前,都需要经过标准化的处理流程。以下以行为层为例展示典型处理步骤:
# 行为层特征处理伪代码示例
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模型的特征基石。