一、样本不平衡问题概述
做评分卡模型这些年,我遇到最多的坑,就是样本不平衡。
什么叫样本不平衡?说白了,就是好人和坏人的比例严重失调。比如你手上有10万个客户,违约的只有500个,占比0.5%。这就是典型的样本不平衡——正负样本比例悬殊。
1.1 什么是样本不平衡
我习惯用一个简单的定义:当分类任务中,某一类样本的数量远多于另一类时,就出现了样本不平衡。
在评分卡场景里,我们通常把「违约客户」称为正样本(少数类),把「正常客户」称为负样本(多数类)。比例多少算「不平衡」?我个人经验是:当正负样本比例超过1:10时,就要警惕了。超过1:100,基本就是重度不平衡。
核心指标:不平衡比
不平衡比 = 多数类样本数 / 少数类样本数
比如:正常客户95000,违约客户5000,不平衡比 = 95000/5000 = 19:1
你想想看,如果模型看到100个样本里只有1个坏人,它会怎么学?它会觉得「所有人都没问题」就能拿到99%的准确率。嗯,这就是问题的根源。
1.2 不平衡数据对评分卡模型的影响
我记得刚入行时,带我的老工程师说过一句话:「模型在平衡数据上表现好,不代表在真实场景中能用。」当时没太在意,直到自己踩了坑才明白。
不平衡数据对评分卡的影响,主要体现在三个方面:
- 模型偏向多数类:模型会倾向于把所有样本都预测为「正常」,因为这样整体损失最小。结果就是——违约客户一个都抓不到。
- 评估指标失真:准确率(Accuracy)会变得毫无意义。你想想,99%的准确率,但一个坏人都没识别出来,这模型能用吗?
- 概率校准偏移:评分卡最终输出的是违约概率。在不平衡数据下,模型预测的概率会整体偏低。我曾经遇到过,模型预测的违约概率普遍在0.1%以下,但实际坏账率是2%——完全对不上。
避坑指南
我曾经接手过一个信贷评分卡项目,原始数据不平衡比高达200:1。团队直接用原始数据训练逻辑回归,结果KS值只有0.08,基本等于随机猜。后来做了欠采样+权重调整,KS才提到0.35。所以,不平衡处理不是「锦上添花」,而是「生死攸关」。
1.3 实际业务中的不平衡场景
在实际业务中,不平衡几乎是常态。我列几个典型的场景:
| 业务场景 | 典型违约率 | 不平衡比 | 说明 |
|---|---|---|---|
| 信用卡反欺诈 | 0.1% - 1% | 100:1 ~ 1000:1 | 欺诈交易极少,但损失巨大 |
| 个人信贷评分 | 1% - 5% | 20:1 ~ 100:1 | 银行客群相对优质 |
| P2P网贷 | 5% - 15% | 6:1 ~ 20:1 | 客群下沉,违约率较高 |
| 企业贷款 | 0.5% - 3% | 30:1 ~ 200:1 | 样本量通常较小 |
为什么会这样?说白了,金融业务本身就是「低违约」的。银行放贷,如果违约率超过10%,那这家银行基本离倒闭不远了。所以,我们面对的天然就是一个不平衡的世界。
我个人习惯,在项目启动前先做一件事:统计正负样本比例,判断不平衡的严重程度。如果比例超过1:20,我会直接告诉业务方——后续建模必须做不平衡处理,否则模型没法用。
一个小技巧
不要只看整体比例。我建议按时间窗口切分,看看不同时间段的不平衡比是否稳定。比如,2023年Q1的违约率是2%,Q2突然降到0.5%——这可能是数据质量问题,也可能是业务策略调整。搞清楚原因再动手。
1.4 本章知识体系
下面这张图,是我自己总结的样本不平衡问题处理框架。你可以把它当作后续学习的路线图:
这张图把样本不平衡问题拆成了三个维度:问题定义、影响分析、业务场景。后续章节我们会逐一深入,讲数据层面的处理方法(采样、权重)、算法层面的优化(代价敏感学习)、以及评估指标的选择(KS、AUC、Gini等)。
嗯,这一章先到这里。记住一句话:不平衡不是异常,而是常态。接受它,理解它,然后学会处理它。