4、数据基础与特征工程:数据来源、数据清洗、缺失值处理、特征构造与选择

AI信贷审批系统的预测能力,本质上取决于输入数据的质量与特征表达的有效性。在模型算法日趋同质化的今天,数据基础与特征工程往往决定了风控模型的上限。本章将围绕信贷审批场景,系统讲解数据来源的合规接入与分类、数据清洗的标准化流程、缺失值处理的策略选择,以及特征构造与筛选的工程方法,帮助学员建立从原始数据到可用特征集的完整链路认知。

AI信贷审批数据与特征工程链路 数据来源层 • 人行征信(央行报告) • 行为数据(APP/交易流水) • 第三方(百行/朴道/同盾) • 内部历史信贷记录 数据清洗与预处理 • 格式统一 / 去重 • 逻辑校验(年龄/金额) • 异常值截断(Winsorize) • 缺失值标记与填充 特征构造与选择 • 衍生变量(收入负债比) • 时序聚合(近6月逾期) • WOE编码 / IV筛选 • 相关性分析与降维 建模特征集(训练/推理) 特征口径统一 · 缺失率监控 · 稳定性PSI 特征监控与迭代反馈(PSI/缺失率/重要性衰减) 关键原则:数据合规是前提 · 清洗口径需可追溯 · 特征工程需结合业务可解释性 拒绝“黑箱特征”,确保每个变量能通过监管审计与业务逻辑校验

4.1 数据来源:三类核心数据源与合规边界

核心原理:信贷审批模型所需数据可归纳为三大类:征信数据(人行征信报告、百行征信、朴道征信)、行为数据(借款人在本平台的借贷行为、还款记录、APP操作轨迹)、第三方数据(同盾、芝麻信用、运营商数据、司法涉诉信息等)。三类数据在时效性、覆盖度、合规要求上差异显著,建模前必须明确数据字典与授权链路。

数据类别典型字段更新频率合规要点建模价值
人行征信信贷记录、逾期明细、查询次数月度需用户授权,仅用于合法信贷决策强变量,区分度最高
行为数据借款频次、提前还款、额度使用率实时/日级隐私政策明确告知反映真实资金需求与还款意愿
第三方数据多头借贷、黑名单、欺诈分日级/周级数据源需持牌,接口调用留痕补充征信白户与反欺诈

操作流程:数据接入需遵循“最小必要”原则。第一步,由法务与风控共同确认数据源资质;第二步,技术团队通过API或文件接口对接,并建立字段映射表;第三步,每日数据质量校验(记录数、空值率、延迟时间);第四步,数据落库后加密存储,访问权限按角色隔离。

风险提示:严禁在未获得用户授权的情况下采集通讯录、相册等敏感信息。2023年以来监管对“断直连”要求趋严,第三方数据必须通过持牌征信机构中转,直接与数据源公司私下交易存在合规风险。

4.2 数据清洗:从原始数据到可用样本

判断方法:数据清洗的目标是消除“脏数据”对模型的干扰。常见问题包括:字段格式不统一(如手机号带区号)、重复记录(同一客户多笔申请)、逻辑矛盾(年龄5岁但职业为“高级工程师”)、异常极端值(月收入1000万)。清洗流程应形成标准化脚本,每次建模前自动执行。

# 典型清洗逻辑(Python伪代码)
def clean_data(df):
    # 1. 去重:按客户ID+申请时间排序,保留最新一条
    df = df.sort_values('apply_time').drop_duplicates('customer_id', keep='last')
    # 2. 格式统一:手机号去空格、补0
    df['mobile'] = df['mobile'].str.replace(r'\D', '', regex=True)
    # 3. 逻辑校验:年龄在18-70岁之间,否则置为缺失
    df.loc[(df['age'] < 18) | (df['age'] > 70), 'age'] = np.nan
    # 4. 极端值截断:收入超过99.9%分位数时,用分位数替换
    cap = df['income'].quantile(0.999)
    df['income'] = df['income'].clip(upper=cap)
    return df

案例拆解:某消费金融平台在建模时发现“工作单位”字段存在大量同一公司不同写法(如“腾讯科技”与“深圳市腾讯计算机系统有限公司”)。通过文本相似度匹配与人工审核,将3000余个变体归并为800个标准企业名称,并进一步映射到行业分类。这一清洗动作使“所在行业”这一特征的IV值从0.02提升至0.11,模型AUC提升约1.5%。

4.3 缺失值处理:策略选择与工程实现

核心原理:缺失值处理需区分随机缺失与非随机缺失。在信贷场景中,某些字段缺失本身即包含信息——例如“征信查询次数”缺失可能意味着客户从未申请过信贷,属于“白户”,此时缺失不是噪声而是信号。因此,处理策略不能一刀切。

  • 删除缺失率过高的字段:当字段缺失率超过70%且业务解释性弱时,直接剔除。
  • 统计填充:对于连续变量(如收入),用中位数或分位数填充;对于分类变量(如学历),用众数填充。
  • 模型预测填充:利用其他字段构建回归或分类模型预测缺失值,适用于缺失率在20%-50%且与其他字段相关性较强的场景。
  • 缺失指示变量:单独生成一列“是否缺失”作为新特征,保留缺失本身的信息价值。
实战经验:在构建信贷模型时,建议对每个字段同时生成“原始值填充后的变量”和“缺失标记变量”。例如,将“收入”填充为-1(或中位数),同时新增“收入是否缺失”0/1变量。这样模型可以自行学习缺失模式与违约风险的关系。

4.4 特征构造与选择:从原始字段到高区分度变量

操作流程:特征构造的核心是结合业务逻辑生成具有信贷含义的衍生变量。常见方法包括:比率类(月还款额/月收入)、聚合类(近3个月申请次数、近6个月逾期天数总和)、趋势类(额度使用率环比变化)、文本类(职业关键词编码)。特征选择则通过IV值、随机森林重要性、LASSO回归等方法筛选。

特征类型构造示例业务含义IV值参考
负债比率总负债 / 年收入偿债压力0.3-0.5(强)
行为频次近30天借款申请次数资金饥渴度0.2-0.4(中强)
时序趋势近3月平均额度使用率 - 近6月平均资金紧张趋势0.1-0.3(中)
交叉特征年龄 × 是否房贷客户生命周期阶段0.05-0.15(弱-中)

案例拆解(完整闭环):某互联网银行在开发小微企业主经营贷模型时,初始仅使用征信报告中的“贷款余额”和“逾期次数”两个字段,模型KS值仅0.23。分析发现,小微企业主个人征信与经营状况关联度不足。团队随后引入以下特征:① 企业开票数据(近12个月开票金额趋势);② 个人结算账户流水(季度日均存款、大额进出频率);③ 关联企业数量及对外投资变化。经过特征构造后,新增“开票金额同比变化率”和“结算账户季度净流入”两个变量,KS值提升至0.38。但同时也发现“对外投资次数”特征在训练集上IV值很高,但在验证集上PSI超过0.25,稳定性不足,最终予以剔除。整个调优过程耗时3周,模型最终上线后坏账率较旧模型下降18%。

经验总结:特征工程不是越多越好。每增加一个特征,都需要评估其区分度(IV)、稳定性(PSI)和可解释性。建议最终模型特征控制在20-50个以内,确保在推理阶段的数据获取成本可控,且便于向监管解释。

4.5 常见误区与复盘要点

  • 误区一:盲目追求数据量大,忽视数据质量。实际中,10个高质量特征往往优于100个噪声特征。
  • 误区二:缺失值全部用均值填充,抹杀了“缺失”本身的业务含义。应优先考虑缺失指示变量。
  • 误区三:特征选择只看IV值,忽略特征之间的多重共线性。高相关特征会导致模型系数不稳定。
  • 误区四:训练集与推理集的特征口径不一致。例如训练时用“近3个月查询次数”,上线时数据源只能提供“近1个月”,导致特征分布偏移。

总结复盘:数据基础与特征工程是AI信贷审批系统的“地基工程”。建议团队建立特征仓库,对每个特征记录其来源、清洗逻辑、缺失率、IV值、PSI趋势和上线版本。每次模型迭代时,先对比新旧特征集的性能差异,再决定是否引入新变量。同时,保持与业务部门的定期沟通,确保特征构造方向与信贷策略(如客群下沉、额度调整)保持一致。最终,一个稳健的特征体系应具备:来源合规、口径清晰、缺失可控、区分度与稳定性兼备、可解释性强五大特征。