3. 数据获取与探索:以Lending Club为例,理解信贷数据字段和业务含义
做信用评分建模,第一步是啥?不是调模型,也不是算WOE。是先把数据搞清楚。说白了,数据都不了解,后面再花哨也是白搭。
我个人非常喜欢用Lending Club的公开数据来做教学案例。为什么?因为它字段够多、样本够大、业务含义够清晰。你想想看,一个数据集里既有借款人的收入、负债,又有贷款金额、利率,还有完整的还款记录——这不就是信用评分建模的天然实验室吗?
3.1 为什么选Lending Club
Lending Club是美国最大的P2P借贷平台之一,从2007年到2020年,他们公开了大量真实的贷款数据。我记得第一次下载这个数据集的时候,打开一看,好家伙,200多万条记录,上百个字段。数据质量也还不错,缺失率比很多金融数据集低得多。
这套数据有几个特点,让它特别适合做信用评分教学:
- 目标变量明确:
loan_status字段直接告诉你这笔贷款是好是坏 - 字段覆盖全面:从借款人资质到贷款属性,从信用历史到还款行为,都有
- 样本足够大:几十万到上百万条,做WOE分组统计时不会出现空桶
- 真实业务场景:不是人工合成的数据,是真实发生的借贷行为
核心观点:数据探索不是随便看看,而是带着业务问题去理解每个字段的"前世今生"。你后面做WOE编码、做特征筛选,本质上都是在跟这些字段打交道。
3.2 数据获取渠道
获取Lending Club数据主要有两个渠道:
- Kaggle平台:搜索"Lending Club Loan Data",能找到多个版本。我建议用有
loan_status完整标注的那个版本。 - Lending Club官方统计页面:他们定期发布历史贷款数据,格式是CSV,直接用pandas就能读。
数据下载下来后,通常是一个CSV文件,几百兆到1个G不等。我建议你用pd.read_csv()配合nrows参数先读一小部分看看结构,别一上来就全量加载——我曾经因为这个把笔记本内存撑爆过,嗯,尴尬。
3.3 核心字段分类与业务含义
Lending Club的字段虽然多,但按业务逻辑可以分成四大类。我在项目中习惯先按这个分类梳理一遍,再看具体字段。
| 字段分类 | 字段名 | 业务含义 | 数据类型 | 建模用途 |
|---|---|---|---|---|
| 借款人信息 | annual_inc | 年收入 | 数值型 | 还款能力评估 |
| 借款人信息 | emp_length | 工作年限 | 类别型 | 收入稳定性 |
| 借款人信息 | home_ownership | 住房拥有状况 | 类别型 | 资产稳定性 |
| 贷款详情 | loan_amnt | 贷款金额 | 数值型 | 风险敞口 |
| 贷款详情 | term | 贷款期限(36/60月) | 类别型 | 违约时间窗口 |
| 贷款详情 | int_rate | 利率 | 数值型 | 风险定价 |
| 贷款详情 | grade | 贷款等级(A~G) | 有序类别 | 信用评级 |
| 信用历史 | fico_range_low | FICO分数下限 | 数值型 | 外部征信分 |
| 信用历史 | dti | 债务收入比 | 数值型 | 负债压力 |
| 信用历史 | delinq_2yrs | 过去2年逾期次数 | 数值型 | 违约历史 |
| 还款表现 | loan_status | 贷款状态(目标变量) | 类别型 | 好坏定义 |
| 还款表现 | total_pymnt | 已还总额 | 数值型 | 还款充分性 |
| 还款表现 | last_pymnt_amnt | 最后一笔还款金额 | 数值型 | 还款行为模式 |
小技巧:别急着把所有字段都用上。先挑出跟你业务目标最相关的10~15个字段,深入理解它们的分布和业务含义,远比一股脑把所有字段塞进模型要有效。
这里我要提一下loan_status这个字段——它是我们的目标变量。但要注意,它不是简单的"好"或"坏"。原始数据里这个字段有十几种取值,比如"Fully Paid"、"Charged Off"、"Default"、"Late (31-120 days)"等等。你需要根据自己的业务定义来做好坏样本映射。我在项目中遇到过一个问题:把"Late (31-120 days)"算作好样本还是坏样本?这完全取决于你的建模目标。如果是做申请评分,通常把"逾期90天以上"算作坏样本。