3. 客户基础特征层:客户身份属性(国籍、职业、年龄)、注册信息、账户类型与开户时长
客户基础特征层是 AML 模型中最稳定、最易获取的特征来源。该层直接反映客户在金融机构中的静态身份与账户行为起点,是构建客户风险画像的基石。本节将系统拆解身份属性、注册信息、账户类型与开户时长四大子模块,并给出特征工程的具体实践方法。
3.1 特征子模块总览
客户基础特征可归纳为以下四类,每类在 AML 模型中承担不同的风险区分角色:
| 子模块 | 典型字段 | AML 风险关联 | 特征工程要点 |
|---|---|---|---|
| 身份属性 | 国籍、职业、年龄 | 高风险国籍/职业识别、年龄异常分布 | WOE 编码、风险等级映射、年龄分箱 |
| 注册信息 | 注册渠道、注册 IP、设备指纹 | 批量注册、代理 IP、设备聚集 | 频次统计、渠道风险分、IP 信誉分 |
| 账户类型 | 账户等级、币种、功能权限 | 高权限账户滥用、跨境交易通道 | One-Hot / 目标编码、权限等级量化 |
| 开户时长 | 开户日期、距今天数 | 休眠账户突活、短期开户即交易 | 时间差计算、生命周期阶段划分 |
实践提示:基础特征层虽然静态,但在 AML 规则引擎中常作为第一道筛选关卡。例如,国籍风险分与职业风险分的乘积可作为初始风险阈值,快速过滤低风险客户,减少后续复杂模型的计算压力。
3.2 身份属性特征工程
3.2.1 国籍(Nationality)
国籍是 AML 模型中最敏感的身份属性之一。FATF(金融行动特别工作组)定期发布高风险国家名单,金融机构需将客户国籍与名单进行映射。
特征构造方法:
- 风险等级映射:将国籍分为低/中/高/制裁四档,编码为 0/1/2/3。
- WOE 编码:基于训练集中每个国籍的正负样本比例,计算 Weight of Evidence 值,替代原始类别。
- 交叉特征:国籍 × 交易对手国籍,用于识别跨境资金异常流动。
3.2.2 职业(Occupation)
某些职业天然具有更高的洗钱风险敞口,如珠宝商、房地产经纪人、律师、会计师等。职业字段通常缺失率高、类别多,需要做聚合处理。
特征构造方法:
- 高风险职业标记:建立 PEP(政治公众人物)及高风险职业白名单,生成二值特征。
- 频次聚合:将低频职业归入“其他”类别,避免稀疏矩阵。
- 收入层级映射:根据职业平均收入水平分箱,辅助识别收入与交易量不匹配的异常。
3.2.3 年龄(Age)
年龄分布异常往往是身份冒用或账户出借的信号。例如,80 岁以上老人突然进行高频大额交易,或 18 岁以下客户持有高等级账户。
特征构造方法:
- 分箱处理:[0-18], [18-25], [25-40], [40-60], [60+] 五箱,每箱统计风险概率。
- 年龄偏差特征:客户年龄与账户注册年龄之差,用于检测账户转让。
- 交互特征:年龄 × 账户类型,如“老年 + 投资账户”组合风险权重调整。
案例:某支付平台在训练 AML 模型时,发现年龄在 18-22 岁且职业为“学生”的群体中,异常交易占比是其他群体的 3.2 倍。通过引入“年龄-职业交叉风险分”,模型召回率提升了 11%。
3.3 注册信息特征工程
注册信息是客户进入系统的第一道数字足迹,对识别团伙作案和自动化注册至关重要。
| 注册字段 | 原始数据示例 | AML 特征 | 计算逻辑 |
|---|---|---|---|
| 注册渠道 | APP / Web / 线下 / 第三方 | 渠道风险分 | 各渠道历史涉案率归一化 |
| 注册 IP | 192.168.x.x | IP 聚集度、代理检测 | 同一 IP 关联账户数 + IP 类型(机房/住宅/代理) |
| 设备指纹 | 设备 ID / IDFA / OAID | 设备关联账户数、设备更换频率 | 滑动窗口内设备关联唯一账户数 |
| 注册时间 | 2024-01-15 03:22:10 | 夜间注册标记、注册时段 | UTC 时间转换为本地时段(凌晨/白天/夜晚) |
3.4 账户类型与开户时长
3.4.1 账户类型(Account Type)
账户类型决定了客户可使用的金融产品范围。高权限账户(如企业账户、VIP 账户、跨境账户)在 AML 模型中应赋予更高的风险权重。
特征构造方法:
- 权限等级量化:将账户类型按功能权限从低到高映射为 1-5 分。
- 币种组合特征:账户支持币种数量,多币种账户通常涉及更复杂的资金流转。
- 账户功能标记:是否支持对外转账、是否支持加密货币、是否支持跨境汇款。
3.4.2 开户时长(Account Age)
开户时长是 AML 模型中最简单但最有效的时序特征之一。大量洗钱案例显示,犯罪分子倾向于使用新开账户或长期休眠后突然激活的账户。
特征构造方法:
- 基础计算:当前日期 - 开户日期,得到“开户天数”。
- 生命周期阶段:将开户天数划分为:
[0-7天] → 新开户期
[7-30天] → 观察期
[30-180天] → 成长期
[180-365天] → 稳定期
[365天+] → 成熟期 - 休眠标记:若账户连续 90 天无交易,标记为休眠;若休眠后重新交易,标记为“休眠激活”。
注意:开户时长特征在模型训练中容易产生时间穿越问题。例如,用当前日期减去开户日期得到的值,在训练集和测试集的时间窗口不一致时会导致特征分布偏移。建议使用固定参考日期(如训练集最大日期)统一计算,或使用相对时间差(如“开户距首次交易天数”)。
3.5 客户基础特征层架构图
下图展示了客户基础特征层的整体架构,从原始数据输入到特征加工、风险映射,最终汇入 AML 特征宽表:
3.6 特征工程代码示例
以下 Python 代码演示了客户基础特征层的典型加工流程,使用 Pandas 和 NumPy 实现:
import pandas as pd
import numpy as np
from datetime import datetime
def build_customer_base_features(df, ref_date='2024-12-31'):
"""
构建客户基础特征层
df: 包含原始字段的 DataFrame
ref_date: 固定参考日期,避免时间穿越
"""
features = pd.DataFrame(index=df.index)
ref_date = pd.to_datetime(ref_date)
# 1. 国籍风险映射
high_risk_countries = ['IR', 'KP', 'SY', 'MM', 'YE']
features['nationality_risk'] = df['nationality'].apply(
lambda x: 3 if x in high_risk_countries else (2 if x in ['RU', 'CN'] else 1)
)
# 2. 职业风险标记
high_risk_occupations = ['lawyer', 'accountant', 'real_estate', 'jewelry']
features['is_high_risk_occ'] = df['occupation'].isin(high_risk_occupations).astype(int)
# 3. 年龄分箱
bins = [0, 18, 25, 40, 60, 120]
labels = ['0-18', '18-25', '25-40', '40-60', '60+']
features['age_bin'] = pd.cut(df['age'], bins=bins, labels=labels)
# 4. 开户时长计算
account_open = pd.to_datetime(df['account_open_date'])
features['account_age_days'] = (ref_date - account_open).dt.days
# 5. 生命周期阶段
def lifecycle_stage(days):
if days <= 7: return 'new'
elif days <= 30: return 'observation'
elif days <= 180: return 'growth'
elif days <= 365: return 'stable'
else: return 'mature'
features['lifecycle_stage'] = features['account_age_days'].apply(lifecycle_stage)
# 6. 注册渠道风险分(示例映射)
channel_risk_map = {'app': 1, 'web': 2, 'offline': 3, 'third_party': 4}
features['channel_risk'] = df['register_channel'].map(channel_risk_map).fillna(2)
# 7. 设备聚集度(同一设备关联账户数)
device_counts = df.groupby('device_id')['customer_id'].transform('nunique')
features['device_account_count'] = device_counts
return features
3.7 特征有效性验证
基础特征层构建完成后,建议通过以下维度验证特征有效性:
- 单变量分析:计算每个特征与目标变量(是否涉案)的 IV(Information Value)值,IV > 0.02 的特征保留。
- 稳定性检验:使用 PSI(Population Stability Index)监控特征在训练集与测试集之间的分布偏移,PSI < 0.1 为合格。
- 缺失率检查:职业、注册 IP 等字段缺失率通常较高,缺失率 > 60% 的特征建议剔除或使用“未知”类别填充。
最佳实践:在 AML 模型迭代中,建议将客户基础特征层作为基准特征集。先仅用基础特征训练一个轻量模型(如 Logistic Regression),作为后续引入交易行为特征、网络关系特征后的性能对比基线。这有助于量化每一层特征对模型的实际贡献。