4、数据清洗与预处理:缺失值处理、异常值检测与重复值去重
在催收模型训练中,原始数据通常来自多个业务系统,包含大量缺失、异常和重复记录。数据清洗与预处理是特征工程的第一步,直接影响后续特征构造和模型性能。本章围绕三大核心任务展开:缺失值处理、异常值检测与处理、重复值去重。
4.1 缺失值处理
缺失值在催收数据中普遍存在,例如:客户联系方式缺失、收入字段为空、历史催收记录不完整。处理策略分为三类:删除、填充和模型预测。
4.1.1 均值/中位数填充
对于连续型数值特征(如逾期天数、欠款金额),常用均值或中位数填充。均值对异常值敏感,中位数更稳健。对于分类型特征(如地区、职业),使用众数填充。
| 填充方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 均值填充 | 数据近似正态分布,无极端异常值 | 计算简单,保持均值不变 | 受异常值影响大,降低方差 |
| 中位数填充 | 数据偏态分布,存在异常值 | 稳健,不受极端值干扰 | 忽略分布形状信息 |
| 众数填充 | 分类变量 | 保持类别分布 | 可能引入偏差 |
实践建议:在催收场景中,对于“逾期天数”这类右偏分布特征,优先使用中位数填充;对于“客户年龄”等近似正态特征,可使用均值填充。
4.1.2 模型预测填充
模型预测填充利用其他特征作为输入,预测缺失值。常用方法包括:KNN填充、回归填充、随机森林填充。该方法能更好地保留特征间关系,但计算成本较高。
# 使用KNN填充缺失值示例(Python伪代码)
from sklearn.impute import KNNImputer
imputer = KNNImputer(n_neighbors=5)
data_filled = imputer.fit_transform(data)
适用条件:缺失率低于30%,且存在与缺失特征相关性较强的其他特征。在催收模型中,对于“收入水平”这类重要但缺失较多的特征,可先用模型预测填充,再与其他填充方法对比效果。
4.2 异常值检测与处理
异常值在催收数据中可能代表欺诈、录入错误或极端客户行为。常用检测方法包括3σ原则和IQR方法。
4.2.1 3σ原则(Z-Score方法)
假设数据服从正态分布,将超出均值±3倍标准差范围的值视为异常值。适用于数据量较大且近似正态分布的场景。
# 3σ原则检测异常值
import numpy as np
mean = np.mean(data)
std = np.std(data)
outliers = data[(data < mean - 3*std) | (data > mean + 3*std)]
4.2.2 IQR方法(四分位距法)
IQR = Q3 - Q1,将低于Q1-1.5×IQR或高于Q3+1.5×IQR的值视为异常值。该方法不依赖正态分布假设,对偏态数据更稳健。
| 方法 | 假设条件 | 适用范围 | 异常值阈值 |
|---|---|---|---|
| 3σ原则 | 正态分布 | 对称分布、大样本 | μ ± 3σ |
| IQR方法 | 无分布假设 | 偏态分布、小样本 | Q1-1.5×IQR, Q3+1.5×IQR |
注意:在催收模型中,“逾期天数”通常呈右偏分布,使用3σ原则可能将大量正常高逾期客户误判为异常。建议优先使用IQR方法,或结合业务规则(如逾期天数>180天视为异常)进行判断。
4.2.3 异常值处理策略
- 删除:当异常值比例很小(<1%)且确认为录入错误时,直接删除。
- 截尾:将异常值替换为阈值(如上限设为Q3+1.5×IQR)。
- 分箱:将连续值离散化,异常值归入单独类别。
- 单独标记:新增二值特征标记是否为异常值,保留原始信息。
4.3 重复值去重
重复值可能来自数据合并、多次录入或系统重复采集。重复值会导致模型过拟合和统计偏差。
4.3.1 重复值识别
- 完全重复:所有字段完全相同。
- 部分重复:关键字段(如身份证号、合同号)相同,其他字段有差异。
- 近似重复:字段值相似但不完全相同(如姓名“张三”与“张 三”)。
4.3.2 去重策略
| 重复类型 | 检测方法 | 处理策略 |
|---|---|---|
| 完全重复 | duplicated() 函数 | 保留第一条,删除其余 |
| 部分重复 | 按关键字段分组 | 保留最新记录或合并信息 |
| 近似重复 | 编辑距离、相似度计算 | 人工审核或聚类去重 |
# 完全重复去重示例
df_clean = df.drop_duplicates()
# 按关键字段去重,保留最新记录
df_clean = df.sort_values('update_time').drop_duplicates(subset=['contract_id'], keep='last')
催收场景提示:同一客户可能在不同催收阶段产生多条记录,去重前需确认业务含义。例如,同一客户的“承诺还款日期”多次更新,应保留最新承诺记录,而非简单去重。
4.4 数据清洗流程总结
数据清洗与预处理是催收模型训练的基础环节,建议按以下顺序执行:
- 缺失值分析:统计各特征缺失率,制定填充策略。
- 异常值检测:使用IQR方法或3σ原则识别异常值,结合业务规则处理。
- 重复值去重:识别完全重复和部分重复记录,按业务逻辑保留有效数据。
- 数据质量验证:检查清洗后数据的分布、统计量,确保无信息泄露。
关键原则:清洗策略需与业务场景对齐。在催收模型中,某些“异常值”(如极高逾期天数)可能代表高风险客户,直接删除会丢失重要信息。建议先标记异常值,在特征工程阶段构造“是否异常”特征,保留原始信息供模型学习。