4. 样本构建核心概念
在异常交易检测项目中,样本构建的质量直接决定模型的上限。本章围绕五个核心概念展开:正负样本定义、样本不平衡、样本权重、滑动窗口与回溯窗口。理解这些概念,是构建可靠训练集的前提。
4.1 正负样本定义
异常交易检测本质上是二分类问题,但“异常”的定义需要结合业务规则与数据特征。正样本(异常交易)通常包括:
- 已知欺诈交易:经风控团队确认的盗刷、洗钱、虚假交易等。
- 高风险行为:短时间内频繁交易、跨地域异常登录后的大额转账。
- 规则命中样本:触发风控规则(如IP黑名单、设备指纹异常)的交易。
负样本(正常交易)则涵盖所有未被标记为异常的交易。但需要注意:负样本中可能隐藏着尚未发现的异常(即“脏数据”),这会影响模型评估的准确性。
| 样本类型 | 定义 | 常见来源 | 注意事项 |
|---|---|---|---|
| 正样本(异常) | 经确认的欺诈、违规或高风险交易 | 人工标注、规则引擎、历史黑名单 | 数量稀少,需避免标注错误 |
| 负样本(正常) | 未被标记为异常的交易 | 全部交易流水(排除正样本后) | 可能包含未发现的异常,需定期清洗 |
| 难例样本 | 模型预测置信度接近0.5的样本 | 模型预测结果筛选 | 可用于主动学习或阈值调整 |
实践建议: 在定义正样本时,建议采用“多级标签”策略。例如:标签0=正常,标签1=疑似异常(需人工复核),标签2=确认异常。这样可以在模型训练中引入不确定性,避免硬标签带来的过拟合。
4.2 样本不平衡问题
异常交易数据集中,正样本占比通常低于1%,甚至低至0.01%。这种极端不平衡会导致模型倾向于预测所有样本为“正常”,从而获得看似很高的准确率,但实际召回率极低。
不平衡带来的主要问题:
- 模型偏向多数类:损失函数被大量负样本主导,正样本的梯度被稀释。
- 评估指标失真:准确率(Accuracy)失去意义,需关注精确率、召回率、F1-score和AUC。
- 过拟合风险:少数类样本数量少,模型容易“记住”这些样本而非学习通用模式。
关键指标: 在不平衡场景下,请使用以下指标评估模型:
• 召回率(Recall):检测出的异常占全部异常的比例。
• 精确率(Precision):检测出的异常中真正异常的比例。
• F1-score:召回率与精确率的调和平均。
• AUC-ROC:衡量模型对正负样本排序能力的综合指标。
• 召回率(Recall):检测出的异常占全部异常的比例。
• 精确率(Precision):检测出的异常中真正异常的比例。
• F1-score:召回率与精确率的调和平均。
• AUC-ROC:衡量模型对正负样本排序能力的综合指标。
4.3 样本权重
样本权重是缓解不平衡问题的直接手段。通过给少数类(正样本)分配更高的权重,强制模型在训练时更加关注这些样本。
常见的权重设置方法:
- 逆频率权重:权重 = 总样本数 / (类别数 × 该类样本数)。例如,正样本占比0.1%,则其权重约为负样本的1000倍。
- 业务代价权重:根据误判代价设定。例如,漏掉一笔欺诈交易可能损失1000元,而误判一笔正常交易仅损失10元,则正样本权重可设为负样本的100倍。
- 自适应权重:在训练过程中动态调整,例如根据模型当前对每个样本的预测误差来调整权重(如Focal Loss中的做法)。
| 权重方法 | 计算方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|
| 逆频率权重 | N / (K × n_k) | 通用场景,无额外业务信息 | 简单、可复现 | 可能放大噪声样本的影响 |
| 业务代价权重 | 根据误判成本比例设定 | 有明确成本核算的业务 | 与业务目标对齐 | 成本量化困难 |
| Focal Loss | -(1-p_t)^γ × log(p_t) | 难例挖掘、高噪声场景 | 自动降低易分类样本权重 | 超参数γ需要调优 |
注意: 样本权重并非越大越好。过高的权重会导致模型对少数类过拟合,在验证集上表现良好,但在真实线上环境中因数据分布变化而失效。建议权重上限不超过总样本数的5%。
4.4 样本时间窗口
交易数据具有强时间依赖性。一个用户的历史行为模式、近期交易频率、与当前交易的间隔时间,都是判断异常的重要特征。因此,样本构建必须引入时间窗口机制。
4.4.1 滑动窗口
滑动窗口用于生成连续的时间序列特征。例如,统计过去24小时内用户的交易次数、金额总和、设备变化次数等。窗口大小通常根据业务周期设定:
- 短窗口(5分钟-1小时):检测高频交易、刷单行为。
- 中窗口(1天-7天):检测日交易量突变、跨日异常模式。
- 长窗口(30天-90天):检测账户休眠后突然活跃、长期行为偏移。
4.4.2 回溯窗口
回溯窗口用于确定样本的标签归属。在异常交易检测中,一笔交易是否被标记为异常,往往需要观察其发生后一段时间内的结果(如是否被用户投诉、是否发生资金损失)。
例如:
- 当前时间点 t 发生一笔交易。
- 设定回溯窗口为 T=7 天。
- 如果在 [t, t+T] 时间内该交易被确认为欺诈,则标记为正样本。
- 如果超过 T 天仍未确认,则标记为负样本(或从训练集中剔除)。
工程实现要点:
1. 滑动窗口特征计算应使用离线批处理或流式计算框架(如Spark Streaming、Flink),避免在模型推理时实时计算。
2. 回溯窗口的长度需根据业务确认周期设定。例如,信用卡欺诈通常在3-7天内被持卡人发现,因此回溯窗口设为7天较为合理。
3. 注意“未来信息泄露”:在构建训练样本时,只能使用当前时刻之前的数据计算特征,不能使用未来数据。
1. 滑动窗口特征计算应使用离线批处理或流式计算框架(如Spark Streaming、Flink),避免在模型推理时实时计算。
2. 回溯窗口的长度需根据业务确认周期设定。例如,信用卡欺诈通常在3-7天内被持卡人发现,因此回溯窗口设为7天较为合理。
3. 注意“未来信息泄露”:在构建训练样本时,只能使用当前时刻之前的数据计算特征,不能使用未来数据。
4.5 样本构建流程总结
将上述概念整合,一个完整的样本构建流程如下:
- 数据采集:获取原始交易流水、用户行为日志、设备信息等。
- 时间对齐:按交易时间排序,确保时间顺序正确。
- 特征提取:使用滑动窗口计算每个交易时刻的历史统计特征。
- 标签生成:使用回溯窗口,根据未来T天内是否发生确认异常来标记样本。
- 样本筛选:剔除回溯窗口内尚未确认的样本(即“悬而未决”的交易)。
- 不平衡处理:应用样本权重、过采样(如SMOTE)或欠采样策略。
- 数据集划分:按时间顺序划分训练集、验证集、测试集,避免时间穿越。
核心原则: 样本构建必须严格遵循“时间因果律”——特征只能来自过去,标签只能来自未来。任何违反这一原则的操作都会导致模型在线上失效。