3. 数据源梳理:内部交易数据、用户行为数据、设备指纹数据、外部黑名单与征信数据
在支付风控体系中,数据是构建样本与特征的“原材料”。不同数据源在风险识别中扮演的角色差异显著:交易数据提供“发生了什么”,行为数据揭示“如何操作”,设备指纹锁定“从哪来”,外部数据则补充“这个人是谁”。本章将系统梳理这四类核心数据源的结构、关键字段、采集方式及在样本构建中的典型用途。
3.1 内部交易数据
内部交易数据是风控建模最基础、最核心的数据源,直接记录每一笔支付请求的金额、时间、渠道、对手方等要素。交易数据通常存储在关系型数据库(如 MySQL、PostgreSQL)或大数据平台(如 Hive、ClickHouse)中,以“交易流水表”为核心。
| 字段类别 | 典型字段 | 样本构建用途 |
|---|---|---|
| 交易标识 | 交易ID、订单号、商户号、支付渠道 | 唯一标识、关联外部数据 |
| 金额与时间 | 交易金额、币种、交易时间、结算时间 | 金额异常检测、时间序列特征 |
| 参与方 | 付款方ID、收款方ID、付款方账户类型 | 关联图谱、历史行为画像 |
| 状态与结果 | 交易状态(成功/失败/退款)、风控决策结果 | 标签定义(正负样本) |
| 渠道与终端 | 支付方式(银行卡/余额/第三方)、终端类型 | 渠道偏好、设备关联 |
样本构建要点:交易数据中的“风控决策结果”字段是生成标签的关键来源。通常将“被风控拦截且确认为欺诈”的交易标记为正样本(风险样本),将“正常通过且无后续投诉”的交易标记为负样本(安全样本)。注意排除“人工审核通过但实际为欺诈”的脏数据。
3.2 用户行为数据
用户行为数据记录用户在支付前、支付中、支付后的操作序列,包括登录、浏览、点击、输入、退出等行为。这类数据通常以日志形式采集,存储在 Elasticsearch、Kafka 或 HDFS 中,具有高维、稀疏、时序性强的特点。
- 登录行为:登录时间、登录 IP、登录设备、登录结果(成功/失败)、登录频次。
- 浏览行为:页面停留时长、浏览商品/服务类型、点击路径、页面跳转序列。
- 输入行为:输入速度、输入错误次数、复制粘贴行为、键盘/鼠标事件。
- 退出行为:退出方式(正常退出/超时/强制关闭)、退出前操作。
特征工程价值:用户行为数据是构建“行为画像”和“行为序列特征”的核心原料。例如,通过计算“登录失败次数/总登录次数”得到登录异常率;通过分析“从登录到支付的时间间隔”识别机器人操作;通过“页面停留时长”判断用户是否熟悉操作流程。
3.3 设备指纹数据
设备指纹数据用于唯一标识用户所使用的终端设备,是识别“设备农场”、模拟器攻击、设备篡改等风险场景的关键数据源。设备指纹通常由客户端SDK采集,通过服务端算法生成唯一标识(Device ID)。
| 采集维度 | 典型字段 | 风险识别价值 |
|---|---|---|
| 硬件信息 | 设备型号、CPU架构、内存大小、屏幕分辨率 | 识别模拟器(如分辨率异常) |
| 系统信息 | 操作系统版本、内核版本、时区、语言 | 检测系统篡改(如root/越狱) |
| 网络信息 | IP地址、MAC地址、WiFi SSID、基站信息 | 关联地理位置、检测代理/VPN |
| 应用信息 | 安装应用列表、应用签名、SDK版本 | 识别恶意应用、批量注册 |
| 传感器数据 | 加速度计、陀螺仪、磁力计 | 区分真实设备与模拟器 |
数据质量注意:设备指纹数据存在“指纹冲突”和“指纹漂移”问题。指纹冲突指不同设备生成相同指纹(通常由SDK算法缺陷导致);指纹漂移指同一设备在不同时间生成不同指纹(通常由系统升级或重置导致)。在样本构建时,建议对设备指纹进行“稳定性校验”,剔除指纹变化频率过高的设备。
3.4 外部黑名单与征信数据
外部数据是内部数据的重要补充,用于识别已知风险实体和评估用户信用水平。外部数据通常通过API接口、数据合作、第三方征信机构获取,具有覆盖广、更新快、标准化程度不一的特点。
- 黑名单数据:
- 设备黑名单:已知欺诈设备ID、模拟器设备指纹。
- IP黑名单:代理IP、数据中心IP、已知攻击源IP。
- 账户黑名单:被冻结账户、历史欺诈账户、羊毛党账户。
- 手机号黑名单:虚拟运营商号段、一次性号码、黑产号码。
- 征信数据:
- 央行征信报告:信贷记录、逾期记录、查询次数。
- 百行/朴道征信:互联网借贷、消费金融行为。
- 多头借贷数据:同时在借平台数、近期申请次数。
- 司法数据:失信被执行人、限制高消费、涉诉记录。
3.5 多源数据关联与样本构建策略
在实际风控样本构建中,需要将上述四类数据源通过“用户ID”和“交易ID”进行关联,形成宽表特征矩阵。关联策略直接影响样本质量和模型效果。
| 关联维度 | 关联键 | 典型关联方式 | 注意事项 |
|---|---|---|---|
| 交易 + 行为 | 用户ID + 交易时间窗口 | LEFT JOIN 行为日志表 | 时间窗口不宜过大(建议≤30分钟) |
| 交易 + 设备 | 设备指纹ID | INNER JOIN 设备指纹表 | 处理指纹冲突(取最新记录) |
| 交易 + 外部黑名单 | 用户ID / 设备ID / IP | LEFT JOIN 黑名单表 | 黑名单需按时间戳回溯 |
| 交易 + 征信 | 用户身份证号 | LEFT JOIN 征信快照表 | 征信数据需脱敏处理 |
样本构建最佳实践:建议采用“时间穿越”策略——在构建特征时,只使用交易发生时刻之前的数据,避免未来信息泄露。例如,对于T日的交易样本,行为特征只统计T-1日及之前的数据,外部黑名单只使用T日之前已入库的记录。
-- 示例:多源数据关联SQL(伪代码)
CREATE TABLE risk_sample_wide AS
SELECT
t.transaction_id,
t.user_id,
t.transaction_amount,
t.transaction_time,
b.login_count_1h, -- 行为特征:过去1小时登录次数
b.page_stay_avg_1h, -- 行为特征:过去1小时平均停留时长
d.device_risk_score, -- 设备特征:设备风险评分
d.is_emulator, -- 设备特征:是否模拟器
bm.is_ip_blacklisted, -- 外部特征:IP是否在黑名单
cr.credit_score, -- 外部特征:征信评分
CASE WHEN t.risk_result = 'blocked' THEN 1 ELSE 0 END AS label
FROM transaction_table t
LEFT JOIN behavior_table b
ON t.user_id = b.user_id
AND b.event_time BETWEEN t.transaction_time - INTERVAL '1 hour' AND t.transaction_time
LEFT JOIN device_table d
ON t.device_id = d.device_id
LEFT JOIN blacklist_master bm
ON t.ip_address = bm.ip_address
AND bm.effective_date <= t.transaction_time
LEFT JOIN credit_report cr
ON t.id_number = cr.id_number
AND cr.snapshot_date = DATE(t.transaction_time);