3. 数据采集与预处理:坏样本数据来源、数据清洗、缺失值处理、异常值检测
在坏样本归因与收益评估体系中,数据采集与预处理是决定模型成败的基石。坏样本数据往往隐藏在噪声、缺失与异常之中,若未经过严格的清洗与甄别,后续的归因分析和收益测算将失去可信度。本节将系统梳理坏样本的数据来源、清洗流程、缺失值处理策略以及异常值检测方法。
3.1 坏样本数据来源
坏样本并非随机出现,其来源通常可归纳为以下四类。理解来源有助于在采集阶段设计针对性的过滤规则。
| 来源类别 | 典型场景 | 数据特征 | 影响程度 |
|---|---|---|---|
| 系统采集故障 | 传感器断连、日志截断、API超时 | 整段缺失、时间戳异常、重复记录 | 高 |
| 人为录入错误 | 手工输入、审核遗漏、标注偏差 | 格式混乱、逻辑矛盾、标签翻转 | 中-高 |
| 业务规则冲突 | 风控策略误杀、优惠叠加异常 | 特征值超出业务边界、收益为负 | 中 |
| 外部数据污染 | 第三方接口返回异常、爬虫数据错乱 | 字段类型不匹配、数值漂移 | 中 |
实战提示:在数据采集阶段,建议为每条记录添加
source_tag 和 采集时间戳 字段,便于后续按来源分层排查坏样本的集中度。
3.2 数据清洗:从原始到可用
数据清洗是预处理的核心环节,目标是将原始数据转化为结构化、一致、可分析的数据集。以下为标准化清洗流程:
- 格式统一:将日期、金额、百分比等字段转换为统一格式(如
YYYY-MM-DD、分为单位)。 - 去重:基于主键或业务唯一标识(如订单号、用户ID+时间)剔除完全重复记录。
- 逻辑校验:检查字段间逻辑关系(如“放款日期 < 逾期日期”必须成立)。
- 范围约束:剔除超出业务合理范围的值(如年龄 > 120 或 < 0)。
- 标签一致性:修正标注冲突(如同一用户在同一时段被标记为“好样本”和“坏样本”)。
清洗前后对比示例:
# 清洗前原始数据(含问题)
order_id,amount,date,label
A001,5000,2024-13-01,0 # 日期无效
A001,5000,2024-12-01,0 # 重复记录
B002,-100,2024-12-02,1 # 金额为负
# 清洗后标准数据
order_id,amount,date,label
A001,5000,2024-12-01,0
B002,100,2024-12-02,1 # 金额取绝对值并标记异常来源
3.3 缺失值处理策略
缺失值在坏样本数据中尤为常见,处理不当会直接导致归因偏差。根据缺失机制与业务含义,采用不同策略:
| 缺失类型 | 业务含义 | 推荐处理方式 | 适用场景 |
|---|---|---|---|
| 完全随机缺失 | 无系统性偏差 | 删除(行删除)或均值/中位数填充 | 缺失率 < 5% 且样本量充足 |
| 随机缺失 | 依赖其他观测变量 | 多重插补(MICE)或模型预测填充 | 缺失率 5%-20%,有相关特征 |
| 非随机缺失 | 缺失本身代表坏样本信号 | 保留缺失并编码为独立类别(如 -999) | 风控场景中“未上传资料”即为风险信号 |
避坑提醒:在坏样本归因中,切勿对所有缺失值统一填充 0 或均值。例如“收入字段缺失”在欺诈样本中可能意味着“伪造收入”,直接填充会掩盖关键归因路径。
3.4 异常值检测方法
异常值检测是识别坏样本候选集的关键步骤。以下为三种主流方法及其适用边界:
- Z-Score 方法:适用于近似正态分布的数据,以 |Z| > 3 为阈值。计算简单,但对极端值敏感。
- IQR 四分位距法:适用于偏态分布,以 [Q1 - 1.5×IQR, Q3 + 1.5×IQR] 为正常区间。鲁棒性强,不受极端值影响。
- 孤立森林(Isolation Forest):适用于高维数据,通过随机切割特征空间识别孤立点。适合大规模数据集,但结果可解释性较弱。
实战建议:在风控场景中,建议将 IQR 法与业务规则结合。例如“单日交易金额 > 用户历史均值 5 倍”直接标记为候选坏样本,再进入孤立森林做二次验证。
3.5 综合预处理策略与收益评估对齐
预处理并非孤立步骤,需与后续的收益评估对齐。建议在预处理阶段即建立以下映射关系:
- 坏样本标记:将清洗后的异常记录标记为候选坏样本,并记录其来源(如“缺失值-非随机”或“异常值-IQR”)。
- 收益影响预估算:对每个候选坏样本,基于业务规则估算其潜在收益损失(如“该笔交易若为欺诈,损失金额 = 交易金额 × 风险系数”)。
- 归因路径保留:在预处理过程中保留原始字段与衍生字段的映射关系,便于后续归因分析时追溯。
预处理与收益评估对齐示例:
# 预处理后输出字段示例
order_id,amount,date,label,source_type,estimated_loss
A001,5000,2024-12-01,1,异常值_IQR,2500.0
B002,100,2024-12-02,0,正常,0.0
C003,20000,2024-12-03,1,缺失值_非随机,10000.0