Kaggle贷款违约预测模型优化:少数类性能提升及行业实践问询
贷款违约预测(类别不平衡)模型优化方案
现有实验情况
ExtraTreesClassifier最优模型结果
Best Model: {'bootstrap': True, 'ccp_alpha': 0.0, 'class_weight': {0: 1, 1: 5}, 'criterion': 'gini', 'max_depth': 10, 'max_features': 0.8, 'max_leaf_nodes': None, 'max_samples': None, 'min_impurity_decrease': 0.0, 'min_samples_leaf': 1, 'min_samples_split': 2, 'min_weight_fraction_leaf': 0.0, 'monotonic_cst': None, 'n_estimators': 300, 'n_jobs': None, 'oob_score': False, 'random_state': 42, 'verbose': 0, 'warm_start': False} ROC AUC Score: 0.7530 Classification Report: precision recall f1-score support 0 0.92 0.85 0.89 45170 1 0.30 0.47 0.36 5900 accuracy 0.81 51070 macro avg 0.61 0.66 0.63 51070 weighted avg 0.85 0.81 0.83 51070
已尝试方案及结果
- 重采样:性能提升不明显
- monotonic_cst约束:少数类召回率提升至0.71,但精度降至0.21,整体ROC AUC下降至0.7430,结果如下:
ROC AUC Score: 0.7430 Classification Report: precision recall f1-score support 0 0.94 0.65 0.77 45170 1 0.21 0.71 0.32 5900 accuracy 0.66 51070 macro avg 0.58 0.68 0.55 51070 weighted avg 0.86 0.66 0.72 51070
核心疑问
未尝试XGBoost、CatBoost模型;网上部分公开结果两类指标均超95%,但采用重采样后的数据作为测试集,无法反映真实性能;先划分数据集再重采样,性能大幅下降。需要优化模型,尤其是提升少数类性能,了解行业通用方法。
优化建议与行业通用方法
一、优先尝试梯度提升树模型(XGBoost/CatBoost)
这类模型在类别不平衡场景下适配性更强,重点关注以下参数:
- XGBoost:
- 设置
scale_pos_weight为负类/正类样本数比值(约7.66),平衡类别权重 - 开启
gamma控制树分裂的最小损失减少,避免过拟合少数类噪声 - 调整
max_depth(6-10)、subsample(0.8-0.9)、colsample_bytree(0.8-0.9),控制模型复杂度 - 用
eval_metric='auc'或'logloss'作为评估指标,优先关注AUC和少数类F1
- 设置
- CatBoost:
- 内置类别特征自动处理,适合贷款数据中的职业、贷款类型等字段
- 设置
class_weights=[1, 7.66]或开启auto_class_weights='Balanced'自动适配类别分布 - 调整
depth(6-8)、learning_rate(0.01-0.1),平衡模型拟合能力与泛化性
二、改进重采样策略
简单重采样效果有限,可尝试进阶方案:
- 分层采样+SMOTE变体:先按类别分层划分训练/测试集,仅在训练集上使用SMOTE-NC(适配含类别特征的数据集)或ADASYN(自适应采样难分类的少数类样本)
- 集成重采样:基于Bagging框架,每个基学习器训练时采用不同重采样策略(部分用SMOTE,部分用随机欠采样),最后融合结果
- 阈值移动:不改变样本分布,训练后调整分类阈值(从默认0.5降至0.3-0.4),提升少数类召回率,同时监控精度变化,找到F1最优阈值
三、强化特征工程
贷款违约预测的特征质量直接决定模型性能,重点方向:
- 构建业务衍生特征:
- 还款能力类:收入/贷款额、月还款额/月收入、负债比率
- 历史行为类:逾期次数、逾期天数、还款频率
- 稳定性类:工作年限、居住年限、账户开户时长
- 特征选择:利用ExtraTrees特征重要性、互信息筛选与少数类高度相关的特征,移除冗余噪声
- WOE分箱:对连续特征(如收入、贷款额)进行WOE分箱,增强特征与违约标签的线性相关性,确保少数类样本分箱有足够样本量
四、优化模型集成与评估
- Stacking集成:用ExtraTrees作为基学习器,XGBoost/CatBoost作为元学习器,融合不同模型的预测结果,提升整体稳定性
- 聚焦适配不平衡数据的指标:避免仅看accuracy,重点关注ROC AUC(整体区分能力)、少数类F1-score(平衡精度与召回)、PR AUC(更适合不平衡场景的评估指标)
- 分层K折交叉验证:使用Stratified K-Fold,确保每折的类别分布与原始数据一致,避免评估偏差
五、行业通用实践
- 拒绝推断:若数据集仅包含已通过的贷款申请,可通过拒绝推断将被拒绝的无标签样本纳入训练(被拒绝的申请违约率通常更高),补充少数类样本
- 成本敏感学习:根据业务场景设置错分成本(如漏判违约用户的损失是误判正常用户的5-10倍),引入成本矩阵让模型优先降低高成本错误
- 持续迭代监控:上线后持续监控模型在真实数据上的少数类性能,定期用新数据重新训练,因为违约模式会随时间变化
内容的提问来源于stack exchange,提问作者RenamedUser7008
相关产品推荐
相关产品推荐

