2. 数据探索与理解:数据源介绍、数据字典解读、数据质量初探、数据分布概览

做信用评分模型,说白了就是跟数据打交道。我见过不少新手,拿到数据就急着跑模型,结果跑出来的东西根本没法用。为什么?因为连数据长什么样都没搞清楚。

这一章,咱们就聊聊怎么把数据摸透。我个人习惯,花在数据探索上的时间,至少占整个项目周期的30%。别嫌多,这步省了,后面全是坑。

2.1 数据源介绍:你的数据从哪来?

信用评分模型的数据源,通常分三类。我一个个说。

  • 内部业务数据:银行或金融机构自己积累的。比如客户申请表、还款记录、交易流水。这类数据最可靠,但往往有缺失。
  • 外部征信数据:从央行征信中心、百行征信等机构拿到的。包括信贷历史、查询记录、公共记录(比如法院判决)。
  • 第三方数据:运营商数据、电商数据、社保公积金等。这类数据能补充客户画像,但质量参差不齐。

我记得有一次做项目,数据源里混了测试数据。嗯,就是那种“张三李四”的假名字。如果不提前清洗,模型会学出一堆奇怪规律。所以,拿到数据第一件事:确认数据源是否真实、是否过期、是否合规。

⚠️ 避坑指南:我曾经遇到过数据源里包含未来时间戳的记录。比如还款日期比当前日期还晚。这种数据要么是录入错误,要么是测试数据,必须剔除。

2.2 数据字典解读:别被字段名骗了

数据字典,就是每个字段的说明书。但说明书也可能写错。我建议你拿到数据字典后,先做三件事:

  1. 字段名与含义对照:比如“cust_id”是客户ID,“loan_amt”是贷款金额。别想当然,有些字段名缩写很坑。
  2. 数据类型确认:数值型、字符型、日期型。我见过把“性别”存成数值1和2的,也见过把“收入”存成字符串带逗号的。
  3. 取值范围与业务逻辑:比如“年龄”字段,正常范围是18-100。如果出现0或负数,那就是异常。

举个例子,下面是一个简化版的数据字典:

字段名 含义 类型 取值范围 备注
cust_id 客户唯一标识 字符型 唯一 主键
age 年龄 数值型 18-100 缺失值用-1表示
income 月收入(元) 数值型 0-999999 注意单位
loan_amt 贷款金额 数值型 1000-500000 单位:元
default_flag 是否违约 字符型 Y/N Y=违约,N=正常

你想想看,如果“income”字段里混了字符串“10,000”,那计算平均值时就会报错。所以,数据字典解读不只是看,还要动手验证。

2.3 数据质量初探:脏数据长什么样?

数据质量,说白了就是数据干不干净。我总结了几类常见问题:

  • 缺失值:有些字段空着没填。比如“收入”字段缺失,可能是客户不愿意填,也可能是系统没录进去。
  • 异常值:数值明显不合理。比如年龄200岁,月收入-5000元。
  • 重复值:同一条记录出现多次。比如同一个客户ID对应多条完全一样的数据。
  • 不一致值:同一含义用不同方式表达。比如“性别”字段,有的写“男”,有的写“M”,有的写“1”。

怎么快速发现这些问题?我一般用Python的pandas库,几行代码就能搞定:

import pandas as pd

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

# 查看缺失值比例
print(df.isnull().sum() / len(df))

# 查看基本统计量
print(df.describe())

# 查看唯一值分布(针对字符型字段)
print(df['gender'].value_counts())

这段代码跑完,你就能看到哪些字段缺失严重,哪些字段有异常值。我个人习惯,缺失率超过50%的字段,直接考虑删除。缺失率低的,可以用均值、中位数或模型预测来填充。

💡 小技巧:对于“年龄”这种字段,如果出现0或负数,我建议直接设为缺失值,而不是保留。因为0岁的客户显然不合理,保留只会污染模型。

2.4 数据分布概览:数据长什么样?

数据分布,就是看每个字段的值是怎么分布的。这步很重要,因为它决定了后续特征工程怎么做。

我一般从三个维度看分布:

  1. 数值型字段的分布:用直方图或箱线图。看数据是否偏态、是否有长尾、是否有离群点。
  2. 分类型字段的分布:用柱状图或饼图。看类别是否均衡、是否有稀有类别。
  3. 目标变量的分布:看正负样本比例。信用评分模型里,违约样本通常很少,可能只有5%-10%。

举个例子,假设“收入”字段的分布是右偏的(大部分人收入低,少数人收入极高)。那建模时,我可能会对收入做对数变换,让它更接近正态分布。

下面这张图,展示了数据探索的核心流程:

数据探索与理解核心流程 数据源 数据字典解读 数据质量初探 数据分布概览 内部数据 外部征信 第三方数据 字段名与含义 数据类型确认 取值范围检查 缺失值 异常值 重复值/不一致值 数值型分布 分类型分布 目标变量分布

这张图展示了数据探索的四个步骤,环环相扣。跳过任何一步,后面都可能出问题。

📌 核心要点:数据探索不是一次性工作。随着建模深入,你可能需要反复回来检查数据。比如,当你发现模型效果不好时,很可能就是数据质量出了问题。

好了,这一章的内容就这些。数据探索是基础,但也是最容易被忽视的环节。你想想看,如果地基没打好,房子能稳吗?


专注资料整理