4. 数据探索与质量初检:数据完整性检查、缺失值与异常值初步分析、数据分布概览与可视化

在风控建模中,数据质量直接决定模型的上限。本章聚焦于样本构建后的第一道关卡——数据探索与质量初检。通过系统化的完整性检查、缺失值与异常值分析、分布概览与可视化,快速识别数据中的“脏、乱、差”问题,为后续清洗与特征工程奠定基础。

核心原则:先全局后局部,先结构后数值,先单变量后多变量。切勿跳过此步骤直接建模,否则极易导致模型失效或过拟合。

4.1 数据完整性检查

完整性检查旨在确认数据集的行数、列数、主键唯一性、字段类型与业务预期是否一致。常见检查项如下:

检查维度 具体内容 常见问题
行数校验 对比源系统与样本库的记录数 重复抽取、遗漏分区
主键唯一性 检查用户ID、订单ID是否重复 重复申请、数据合并错误
字段类型 数值型、字符型、日期型是否匹配 金额字段存为字符串、日期格式不统一
取值范围 枚举字段是否在合法值列表内 性别出现“未知”、省份出现空字符串
# Python 示例:完整性检查核心代码
import pandas as pd

df = pd.read_parquet('sample.parquet')
print(f"行数: {len(df)}, 列数: {len(df.columns)}")
print(f"主键重复数: {df['user_id'].duplicated().sum()}")
print(f"字段类型:\n{df.dtypes}")
print(f"枚举字段唯一值:\n{df['gender'].value_counts()}")

4.2 缺失值与异常值初步分析

缺失值和异常值是风控数据中最常见的质量问题,需区分随机缺失与系统性缺失,以及业务异常与数据错误。

4.2.1 缺失值分析

  • 缺失率统计:计算每列的缺失比例,设定阈值(如 >50%)标记为高缺失字段。
  • 缺失模式:使用热力图或矩阵图观察缺失是否集中在特定样本或特定时间窗口。
  • 业务归因:例如“收入”字段缺失可能来自自由职业者或数据源未对接。
# 缺失率计算
missing_rate = df.isnull().mean().sort_values(ascending=False)
print(missing_rate[missing_rate > 0.1])  # 输出缺失率超过10%的字段

4.2.2 异常值分析

异常值检测常用方法包括统计阈值法(如3σ原则、IQR)、业务规则法(如年龄>120岁)和分布观察法。风控场景中,异常值可能代表欺诈行为或数据录入错误。

方法 适用场景 示例
3σ原则 近似正态分布的连续变量 交易金额超出均值±3倍标准差
IQR法 偏态分布或含离群点的变量 年龄低于Q1-1.5*IQR或高于Q3+1.5*IQR
业务规则 有明确上下界的字段 申请次数为负数、手机号位数不对
实战提示:异常值不一定要删除。在反欺诈模型中,极端值往往是最强信号。建议先标记,再结合业务判断是否保留。

4.3 数据分布概览与可视化

通过可视化手段快速理解数据分布形态,识别偏态、双峰、长尾等特征,为特征变换和分箱提供依据。

4.3.1 单变量分布

  • 连续变量:直方图 + 核密度估计曲线,观察集中趋势与离散程度。
  • 离散变量:柱状图展示频次,关注类别不平衡问题。

4.3.2 多变量关系

  • 相关性矩阵:热力图展示数值变量间的线性相关强度。
  • 分组箱线图:按目标变量(如好坏客户)分组,观察特征区分度。
数据探索与质量初检流程 完整性检查 行数/主键/类型/枚举 缺失值分析 缺失率/模式/归因 异常值分析 3σ/IQR/业务规则 分布概览 直方图/密度曲线 多变量关系 相关性/分组箱线图 数据质量报告 问题清单 + 处理建议

4.4 实战:数据质量初检报告模板

完成上述分析后,建议输出一份结构化的数据质量初检报告,包含以下模块:

  1. 数据集概览:样本量、特征数、时间跨度。
  2. 完整性结果:重复记录数、字段类型异常清单。
  3. 缺失值统计:高缺失字段列表及缺失模式描述。
  4. 异常值清单:各字段异常样本数及典型值。
  5. 分布特征:关键变量的偏度、峰度、类别分布。
  6. 处理建议:删除、填充、标记或保留。
避坑提醒:不要一次性对所有字段做缺失值填充。先区分缺失类型:随机缺失可用均值/中位数填充;系统性缺失(如特定渠道全部缺失)需单独处理,否则会引入偏差。
缺失值与异常值处理决策树 发现缺失/异常值 缺失值 异常值 随机缺失 系统性缺失 业务异常 数据错误 均值/中位数填充 或模型预测 单独标记为“缺失” 或单独建模 保留为强特征 或分箱处理 修正或删除 记录异常原因

4.5 本章小结

数据探索与质量初检是风控建模的基石环节。通过完整性检查、缺失值与异常值分析、分布概览与可视化,能够快速定位数据问题,为后续清洗、特征工程和模型训练提供可靠输入。建议将上述流程固化到每日/每周的数据监控脚本中,实现质量问题的早发现、早处理。