信贷风险预测:三种机器学习模型的巅峰对决
想象一下,你是一家银行的风控经理,每天要审批成千上万的贷款申请。如何快速判断谁会按时还款,谁可能会违约?这就是信贷风险预测要解决的问题。今天,我将带你看看三种主流机器学习模型在这个任务上的表现。
一、问题背景:为什么信贷风险预测很重要?
信贷风险,简单来说就是借款人无法按时偿还贷款的可能性。对于银行和金融机构来说,准确预测信贷风险意味着:
- 💰 减少坏账损失:提前识别高风险客户
- 📈 优化贷款审批:提高审批效率
- 🎯 精准定价:根据风险水平设定利率
二、数据集:Give Me Some Credit
我们使用的是Kaggle上的经典数据集——Give Me Some Credit,包含15万条真实的信贷记录。
| 属性 | 值 |
|---|---|
| 样本量 | 150,000 条记录 |
| 特征数 | 11 个原始特征 |
| 目标变量 | 是否在2年内违约 |
| 正样本比例 | 6.68% (违约) |
| 负样本比例 | 93.32% (未违约) |
主要特征
| 特征 | 说明 |
|---|---|
| RevolvingUtilizationOfUnsecuredLines | 循环信用利用率 |
| age | 年龄 |
| NumberOfTime30-59DaysPastDueNotWorse | 30-59天逾期次数 |
| DebtRatio | 债务比率 |
| MonthlyIncome | 月收入 |
| NumberOfTimes90DaysLate | 90天以上逾期次数 |
三、三位选手登场
1. 逻辑回归 (Logistic Regression) —— 老将
逻辑回归是最经典的分类模型之一,就像一位经验丰富的老将:
- ✅ 优点:简单、可解释、训练快
- ❌ 缺点:难以捕捉复杂的非线性关系
2. LightGBM —— 速度之王
LightGBM是微软推出的梯度提升框架,以速度著称:
- ✅ 优点:训练速度快、内存占用低、支持类别特征
- ❌ 缺点:对参数敏感、容易过拟合
3. CatBoost —— 类别特征专家
CatBoost是Yandex开发的梯度提升框架,专门为类别特征设计:
- ✅ 优点:自动处理类别特征、鲁棒性强、效果好
- ❌ 缺点:训练速度相对较慢
四、实验结果:谁是冠军?
经过完整的数据预处理、特征工程和模型训练,结果如下:
| 模型 | AUC | KS | F1-Score |
|---|---|---|---|
| CatBoost | 0.8710 | 0.5853 | 0.2866 |
| LightGBM | 0.8700 | 0.5867 | 0.2729 |
| Logistic Regression | 0.8551 | 0.5547 | 0.3170 |
🏆 冠军:CatBoost
CatBoost以AUC=0.8710的成绩夺得冠军!
指标解读
- AUC (曲线下面积):衡量模型区分正负样本的能力,越接近1越好
- KS (Kolmogorov-Smirnov):衡量模型最大区分度,KS值越大说明模型区分能力越强
- F1-Score:精确率和召回率的调和平均
五、特征工程:秘密武器
我们创建了6个新特征来提升模型表现:
| 特征名 | 说明 |
|---|---|
| AgeGroup | 年龄分组 |
| IncomeGroup | 收入分组(五分位数) |
| TotalPastDue | 逾期次数总和 |
| HasPastDue | 是否有逾期记录 |
| CreditDensity | 信贷产品密度 |
| IncomeDebtRatio | 收入债务比 |
六、关键发现
- CatBoost的自动特征处理:CatBoost对类别特征的自动处理能力确实出色,无需手动编码
- 特征工程的价值:新增的特征对模型表现有明显提升
- 模型差异不大:三个模型的AUC差异在2%以内,说明特征质量更重要
七、如何运行这个项目?
环境要求
pip install pandas numpy scikit-learn lightgbm catboost matplotlib seaborn
运行分析
git clone https://cnb.cool/acidbunny/credit-risk-prediction.git
cd credit-risk-prediction
python credit_risk_comparison.py
输出文件
运行后会在 outputs/ 目录生成:
model_comparison.csv- 模型对比表格analysis_report.md- 详细分析报告roc_curves.png- ROC曲线对比图confusion_matrices.png- 混淆矩阵对比图ks_curves.png- KS曲线对比图feature_importance.png- 特征重要性对比图
八、扩展建议
如果你想进一步提升模型表现,可以尝试:
- 超参数调优:使用Optuna进行更精细的参数优化
- 模型融合:尝试Stacking或Blending等集成方法
- 样本不平衡处理:使用SMOTE、ADASYN等过采样技术
- 更多特征工程:尝试特征交互和多项式特征
九、结语
通过这次实验,我们发现CatBoost在信贷风险预测任务上表现最佳。但更重要的是,没有最好的模型,只有最适合的模型。在实际应用中,还需要考虑模型的可解释性、训练成本、部署难度等因素。
希望这篇文章能帮助你了解信贷风险预测的基本流程。如果你有任何问题,欢迎在评论区留言!