2. 数据基础:欺诈相关数据的采集、清洗与特征工程入门

做风控模型,说白了就是跟数据打交道。我见过不少同学,算法模型调得飞起,结果数据一塌糊涂,最后模型上线效果惨不忍睹。嗯,今天我们就聊聊欺诈数据的基础——怎么采、怎么洗、怎么造特征。

2.1 欺诈数据的采集:从哪里来?

欺诈数据不像普通业务数据那么好拿。你想想看,坏人会主动告诉你「我是来骗钱的」吗?不会。所以采集策略很重要。

我个人习惯把数据来源分成三类:

  • 内部业务数据:用户注册信息、登录日志、交易流水、行为轨迹。这些最靠谱,但往往分散在各个系统里。
  • 外部第三方数据:设备指纹、IP 风险库、黑名单共享。我建议优先接入设备指纹,成本低见效快。
  • 人工标注数据:风控审核员打标的案例。这里有个坑——标注标准不统一,同一个案子不同人可能给不同结论。
注意: 我曾经遇到过一个项目,外部数据接口调用量太大,一个月花了十几万。后来发现大部分调用都是重复查询。所以接入前一定要评估调用频率和缓存策略。

2.2 数据清洗:脏数据比欺诈更可怕

数据清洗听着简单,做起来全是坑。我见过最离谱的——用户年龄字段里居然有「-999」和「9999」,一问才知道是系统默认值没处理。

清洗流程我一般这么走:

  1. 缺失值处理:先看缺失比例。低于 5% 的直接删除行;5%-30% 的用均值/中位数填充;超过 30% 的,我建议直接扔掉这个特征。
  2. 异常值检测:用箱线图或者 3σ 原则。比如交易金额,正常范围是 10-10000,突然来个 999999,八成是测试数据。
  3. 重复数据去重:同一个用户同一时间同一金额的交易,保留一条就够了。
  4. 格式统一:手机号、身份证号、邮箱,格式必须标准化。我习惯用正则表达式做校验。

核心原则: 清洗策略一定要跟业务对齐。比如缺失值填充,金融场景用中位数比均值更稳健,因为均值容易被极端值拉偏。

2.3 特征工程入门:从原始数据到有效信号

特征工程是风控模型的核心。说白了,你给模型喂什么,它就学什么。喂垃圾,出垃圾。

2.3.1 基础特征构建

从原始字段直接提取:

  • 时间特征:注册时间、交易时间、登录时间。可以衍生出「是否凌晨交易」「注册到首笔交易间隔」。
  • 金额特征:交易金额、余额、转账次数。注意做对数变换,因为金额分布通常偏态严重。
  • 设备特征:设备型号、操作系统、屏幕分辨率。我遇到过用模拟器的,分辨率全是 1080x1920,跟真实设备分布明显不同。

2.3.2 统计聚合特征

这是欺诈检测的杀手锏。按用户 ID 或设备 ID 做聚合:

聚合维度 统计量 业务含义
过去 1 小时交易次数 count 高频交易风险
过去 24 小时交易金额 sum, mean, std 金额异常波动
过去 7 天登录 IP 数 nunique 异地登录风险
过去 30 天收货地址数 nunique 虚假交易团伙

实战技巧: 窗口大小别拍脑袋定。我一般先看业务周期——电商看 24 小时和 7 天,金融看 30 天和 90 天。然后做特征重要性排序,选效果最好的窗口。

2.3.3 行为序列特征

欺诈行为往往有固定模式。比如:注册→修改密码→下单→申请退款。这种序列可以用 n-gram 或者 LSTM 来建模。

简单做法是统计行为转移概率:

# 伪代码示例
行为序列 = ['登录', '浏览', '下单', '支付']
转移矩阵 = {
    '登录→浏览': 0.8,
    '浏览→下单': 0.3,
    '下单→支付': 0.9
}
# 异常行为往往转移概率极低
if '下单→退款' in 转移矩阵 and 转移矩阵['下单→退款'] < 0.01:
    标记为高风险

2.4 特征筛选:别贪多

特征不是越多越好。我见过有人一口气造了 500 个特征,结果模型训练要跑三天,线上推理还超时。

筛选原则:

  • 缺失率:超过 50% 的直接砍掉
  • 方差:方差接近 0 的,说明这个特征几乎没变化,没用
  • 相关性:两个特征相关系数超过 0.95,留一个就行
  • 业务可解释性:特征再牛逼,业务看不懂,上线也推不动
避坑指南: 我曾经做过一个模型,特征重要性排名第一的是「用户 ID 的哈希值」。这明显是过拟合了,因为训练集和测试集的用户 ID 分布不同。所以特征筛选时一定要做交叉验证,别被假信号骗了。

2.5 数据质量监控:上线后才是开始

模型上线后,数据质量会变。比如某个外部数据源突然改了接口,返回的全是空值。如果不监控,模型会默默变差。

我建议至少监控这几个指标:

  • 特征缺失率:每天跑一遍,跟基线对比
  • 特征分布:用 PSI(群体稳定性指标)检测分布偏移
  • 数据延迟:特征计算时间是否超时

嗯,数据基础这块就聊这么多。下一章我们讲具体的异常检测算法,到时候会用到今天讲的特征工程技巧。记住一句话:数据质量决定了模型的天花板,算法只是逼近这个天花板的手段。