3. 数据采集与预处理:坏样本数据来源、数据清洗、缺失值处理、异常值检测

在坏样本归因与收益评估体系中,数据采集与预处理是决定模型成败的基石。坏样本数据往往隐藏在噪声、缺失与异常之中,若未经过严格的清洗与甄别,后续的归因分析和收益测算将失去可信度。本节将系统梳理坏样本的数据来源、清洗流程、缺失值处理策略以及异常值检测方法。

3.1 坏样本数据来源

坏样本并非随机出现,其来源通常可归纳为以下四类。理解来源有助于在采集阶段设计针对性的过滤规则。

来源类别 典型场景 数据特征 影响程度
系统采集故障 传感器断连、日志截断、API超时 整段缺失、时间戳异常、重复记录 高
人为录入错误 手工输入、审核遗漏、标注偏差 格式混乱、逻辑矛盾、标签翻转 中-高
业务规则冲突 风控策略误杀、优惠叠加异常 特征值超出业务边界、收益为负 中
外部数据污染 第三方接口返回异常、爬虫数据错乱 字段类型不匹配、数值漂移 中
实战提示:在数据采集阶段,建议为每条记录添加 source_tag 和 采集时间戳 字段,便于后续按来源分层排查坏样本的集中度。

3.2 数据清洗:从原始到可用

数据清洗是预处理的核心环节,目标是将原始数据转化为结构化、一致、可分析的数据集。以下为标准化清洗流程:

  1. 格式统一:将日期、金额、百分比等字段转换为统一格式(如 YYYY-MM-DD、分 为单位)。
  2. 去重:基于主键或业务唯一标识(如订单号、用户ID+时间)剔除完全重复记录。
  3. 逻辑校验:检查字段间逻辑关系(如“放款日期 < 逾期日期”必须成立)。
  4. 范围约束:剔除超出业务合理范围的值(如年龄 > 120 或 < 0)。
  5. 标签一致性:修正标注冲突(如同一用户在同一时段被标记为“好样本”和“坏样本”)。
清洗前后对比示例:
# 清洗前原始数据(含问题)
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 倍”直接标记为候选坏样本,再进入孤立森林做二次验证。
坏样本数据预处理全流程 原始数据源 系统采集故障 人为录入错误 业务规则冲突 外部数据污染 数据清洗(格式统一 / 去重 / 逻辑校验) 缺失值处理 异常值检测 删除 插补 编码为类别 Z-Score IQR 孤立森林 干净、可用的坏样本数据集

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