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%,且存在与缺失特征相关性较强的其他特征。在催收模型中,对于“收入水平”这类重要但缺失较多的特征,可先用模型预测填充,再与其他填充方法对比效果。
缺失值处理策略对比流程 原始数据含缺失值 缺失率 > 50% 删除该特征/样本 缺失率 5%-30% 缺失率 < 5% 均值/中位数/众数填充 模型预测填充

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)。
  • 分箱:将连续值离散化,异常值归入单独类别。
  • 单独标记:新增二值特征标记是否为异常值,保留原始信息。
异常值检测方法对比 3σ原则 假设:正态分布 阈值:μ ± 3σ IQR方法 假设:无分布要求 阈值:Q1-1.5×IQR, Q3+1.5×IQR 对称分布数据 偏态分布数据 催收数据推荐优先使用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 数据清洗流程总结

数据清洗与预处理是催收模型训练的基础环节,建议按以下顺序执行:

  1. 缺失值分析:统计各特征缺失率,制定填充策略。
  2. 异常值检测:使用IQR方法或3σ原则识别异常值,结合业务规则处理。
  3. 重复值去重:识别完全重复和部分重复记录,按业务逻辑保留有效数据。
  4. 数据质量验证:检查清洗后数据的分布、统计量,确保无信息泄露。
关键原则:清洗策略需与业务场景对齐。在催收模型中,某些“异常值”(如极高逾期天数)可能代表高风险客户,直接删除会丢失重要信息。建议先标记异常值,在特征工程阶段构造“是否异常”特征,保留原始信息供模型学习。