2. 交易欺诈数据基础

在进入LightGBM建模之前,必须先理解欺诈数据的“物理形态”。交易欺诈数据不是一张静态表格,它同时携带业务语义、时间依赖、极端不平衡和合规约束。本章围绕六个基础问题展开:常见字段、标签定义、类别不平衡、时间序列特性、隐私合规,以及公开数据集的选择与使用。

一、交易数据常见字段与业务语义

一笔交易记录通常由四类字段构成:主体标识、交易属性、上下文环境和风险信号。理解字段的业务含义,比记住字段名更重要,因为特征工程的质量直接取决于此。

字段类别典型字段业务含义与建模价值
主体标识user_id、card_id、device_id、IP用于聚合行为、识别团伙与设备复用
交易属性amount、currency、merchant_id、channel金额分布、商户风险、渠道差异是强特征
上下文环境timestamp、geo、device_type、browser支撑时间窗口统计与位置异常检测
风险信号is_fraud、risk_score、chargeback_flag标签与辅助监督信号,需谨慎使用防泄漏

需要特别警惕“事后字段”。例如chargeback_flag往往在交易发生后数周才产生,若直接作为特征,会造成严重的数据泄漏,使离线指标虚高而线上失效。

二、标签定义:从业务事件到可学习目标

欺诈标签并非天然存在,而是业务定义的产物。常见定义方式有三种:

  • 拒付标签:以持卡人发起chargeback为准,准确但滞后,正样本稀疏。
  • 人工审核标签:以风控审核结论为准,覆盖快但含主观偏差。
  • 规则命中标签:以既有规则命中为准,容易形成“只学旧规则”的循环偏差。
建议在项目中明确标签的“观察窗口”和“表现窗口”。例如:用交易发生后7天内的拒付作为标签,则训练集必须截止到标签完全成熟的日期,否则正样本被人为截断。

标签定义还决定了代价敏感学习的代价矩阵。若漏判(FN)导致直接资金损失,误判(FP)只带来审核成本,则两类错误的代价可能相差数十倍,这正是后续引入scale_pos_weight和自定义损失函数的前提。

三、类别不平衡:从数据现象到建模策略

真实交易欺诈的正样本比例通常在0.1%到2%之间。极端不平衡会带来三个后果:模型倾向预测多数类、准确率失去意义、概率校准偏移。

# 快速评估不平衡程度
import pandas as pd
df = pd.read_csv("transactions.csv")
ratio = df["is_fraud"].value_counts(normalize=True)
print(ratio)
# 0    0.991
# 1    0.009
# 正负比约 1:110

应对策略可分为数据层、算法层和评估层:

  1. 数据层:欠采样、过采样、SMOTE及其变体。注意SMOTE在时间序列上会破坏时序结构,需谨慎。
  2. 算法层:LightGBM的is_unbalance或scale_pos_weight,以及自定义焦点损失。
  3. 评估层:放弃准确率,改用AUC-PR、KS、召回率@固定精确率。
不要在划分训练集之前做重采样。正确顺序是:先按时间切分,再只在训练集上采样,验证集和测试集保持原始分布,否则评估结果不可信。

四、时间序列特性:欺诈数据的“第四维”

交易数据本质上是时间序列。欺诈模式会随时间漂移:节假日、促销季、新支付渠道上线,都会改变行为分布。因此随机切分是错误做法,必须采用时间切分。

# 按时间切分,而非随机切分
df = df.sort_values("timestamp")
train = df[df["timestamp"] < "2024-01-01"]
valid = df[(df["timestamp"] >= "2024-01-01") & (df["timestamp"] < "2024-03-01")]
test  = df[df["timestamp"] >= "2024-03-01"]

时间特性还催生了大量强特征:滑动窗口内的交易频次、金额均值、设备更换频率、距上次交易的时间间隔。这些特征必须严格使用“当前时刻之前”的信息计算,否则同样构成泄漏。

五、数据隐私与合规要求

欺诈数据涉及个人金融信息,合规是硬约束。核心原则包括:

  • 最小必要:只采集建模必需的字段,避免过度收集。
  • 脱敏与假名化:对user_id、card_id做哈希或映射,保留可关联性但去除直接身份。
  • 访问控制:训练数据分级授权,日志留痕。
  • 跨境与留存:遵守数据本地化和留存期限要求。
在课程实验中,建议统一使用脱敏后的公开数据集,避免触碰真实个人金融数据。合规不是建模的阻碍,而是特征设计的前置约束。

六、公开数据集介绍与选用建议

公开数据集是学习代价敏感学习的理想起点。以下是常用选择:

数据集规模与特点适用场景
Kaggle Credit Card Fraud28万条,PCA匿名特征,正样本0.172%入门不平衡与代价敏感
IEEE-CIS Fraud Detection59万条,含设备与身份信息,多表关联特征工程与时间切分
Sparkov Synthetic合成数据,含时间与地理字段时序特征与可视化教学
ULB/Worldline真实脱敏,含时间戳漂移与在线评估

选用时优先考虑三点:是否含时间戳、是否保留原始类别字段、正样本比例是否接近真实业务。合成数据适合教学演示,但结论不能直接迁移到生产。

复盘建议:拿到任何欺诈数据集,先做三件事——统计正负比、检查时间跨度与分布、确认标签成熟窗口。这三步能避免后续80%的返工。