3. 授信业务数据理解

授信评分模型的构建,其根基在于对业务数据的深刻理解。本章将系统梳理信贷业务中三类核心数据来源(申请数据、征信数据、行为数据),讲解数据字典的设计规范,并明确样本与标签的定义标准(好客户/坏客户)。只有将数据源头、数据结构与业务定义三者对齐,后续的评分沙盘才能产出可信的模型。

3.1 信贷业务数据来源

信贷业务数据按产生阶段与获取渠道,可划分为三大类:申请数据、征信数据与行为数据。三者共同构成授信决策的信息基础。

数据类别 获取时点 核心字段示例 主要用途
申请数据 客户提交申请时 年龄、收入、职业、婚姻状况、学历、居住地址 基础准入、身份核验、初步还款能力评估
征信数据 客户授权后查询 征信报告、逾期记录、负债总额、查询次数、担保信息 信用历史验证、多头借贷识别、违约风险判断
行为数据 贷后持续产生 还款记录、交易流水、APP使用频率、设备信息、位置轨迹 贷中监控、额度调整、早期预警、反欺诈
数据融合要点: 申请数据提供“客户声称”的信息,征信数据提供“外部验证”的信息,行为数据提供“实际表现”的信息。三者交叉验证,可有效降低信息不对称带来的信用风险。

3.2 数据字典设计

数据字典是数据治理的基石。在授信评分沙盘中,数据字典需要明确每个字段的字段名、数据类型、取值范围、缺失处理规则以及业务含义。以下是一个典型的数据字典片段:

字段名 数据类型 取值范围/示例 缺失处理 业务含义
age int 18-100 中位数填充 申请人年龄(周岁)
income float 0-999999.99 均值填充 申请人月收入(元)
marital_status string 未婚/已婚/离异/丧偶 众数填充 婚姻状况
loan_purpose string 消费/经营/购房/购车/其他 单独标记“未知” 贷款用途
credit_score int 300-850 拒绝赋值(如-1) 外部征信评分
overdue_days_12m int 0-365 0填充 近12个月最大逾期天数
数据字典设计避坑: 字段命名应统一采用小写+下划线风格(如 overdue_days_12m),避免使用中文拼音或混合大小写。缺失值处理策略必须在数据字典中明确记录,否则后续建模时容易产生数据泄露或逻辑错误。

3.3 样本与标签定义

在授信评分模型中,标签是监督学习的核心。我们需要根据业务目标,将客户划分为好客户与坏客户。标签定义直接决定模型的学习方向与最终效果。

3.3.1 好客户/坏客户定义标准

客户类型 定义标准 典型业务规则 标签值
好客户 按时还款,无违约记录 贷款期内从未逾期超过30天,且正常结清 0
坏客户 发生严重违约或欺诈 逾期超过90天、核销、被认定为欺诈、失联 1
灰客户 表现介于好坏之间 逾期1-89天但未达到严重违约标准 通常剔除或单独建模
标签定义原则:
  • 业务可解释性: 坏客户的定义必须与公司风险偏好、监管要求一致。
  • 时间窗口明确: 通常设置“表现期”(如12个月),在表现期内观察客户是否变坏。
  • 样本平衡性: 坏客户占比通常较低(5%-15%),需考虑采样策略或代价敏感学习。

3.3.2 样本划分与时间窗口

在授信评分沙盘中,样本的划分需要严格遵循时间顺序,避免未来信息泄露。典型的样本划分方式如下:

  • 观察点(Observation Point): 客户申请或放款的时间点。
  • 表现期(Performance Window): 观察点之后的一段固定时间(如12个月),用于判断客户好坏。
  • 观察期(Observation Window): 观察点之前的一段固定时间(如6个月),用于提取特征变量。

以下是一个时间窗口划分的示意图:

授信评分样本时间窗口划分 观察期(6个月) 观察点 T=0 表现期(12个月) T-6 T T+12 时间窗口设计要点 • 观察期用于提取特征(如近6个月征信查询次数、收入变化) • 表现期用于定义标签(如是否逾期超过90天) • 观察点与表现期之间不能有数据交叉,避免未来信息泄露

3.4 数据质量与预处理要点

在正式建模前,必须对数据进行质量检查。以下是常见的数据质量问题及处理策略:

问题类型 典型表现 处理策略
缺失值 字段为空或NULL 均值/中位数/众数填充、模型预测填充、单独标记
异常值 年龄200岁、收入为负数 截断(如1%-99%分位数)、业务规则剔除
重复记录 同一客户多次申请 按申请时间保留最新一条,或按业务规则去重
逻辑矛盾 婚姻状态为“未婚”但配偶信息非空 交叉验证后修正或标记为可疑
时间穿越 申请日期早于出生日期 直接剔除或标记为数据错误
Python预处理示例: 使用Pandas进行缺失值填充与异常值截断。
import pandas as pd
import numpy as np

# 读取数据
df = pd.read_csv('credit_data.csv')

# 缺失值填充:年龄用中位数,收入用均值
df['age'].fillna(df['age'].median(), inplace=True)
df['income'].fillna(df['income'].mean(), inplace=True)

# 异常值截断:收入上下限设为1%和99%分位数
lower = df['income'].quantile(0.01)
upper = df['income'].quantile(0.99)
df['income'] = df['income'].clip(lower, upper)

# 重复记录去重:保留最新一条
df.sort_values('apply_date', inplace=True)
df.drop_duplicates(subset='customer_id', keep='last', inplace=True)

3.5 本章小结

  • 信贷业务数据来源包括申请数据、征信数据和行为数据,三者各有侧重,需融合使用。
  • 数据字典是数据标准化的核心工具,需明确字段名、类型、取值范围、缺失处理与业务含义。
  • 好客户/坏客户的标签定义需结合业务规则与时间窗口,避免未来信息泄露。
  • 数据预处理(缺失值、异常值、重复记录、逻辑矛盾)是建模前的必要步骤,直接影响模型质量。