Skip to content

信用风险与客户流失建模实战——从 PD/LGD 到欺诈检测的 Python 全流程

一句话总结

信用风险建模的 Python 生态覆盖了 Basel 合规框架的完整量化链条:违约概率 (PD) → 违约损失率 (LGD) → 违约敞口 (EAD) → 预期损失 (EL),加上欺诈检测和客户流失预测作为风险防控的两翼。

工具全景

Basel II/III 风险管理框架
        ├── PD (Probability of Default)
        │   ├── 信用评分卡: WOE + IV + 逻辑回归 (credit-risk-modelling-pd-lgd)
        │   ├── ML竞赛方案: LightGBM+XGBoost+CatBoost 投票 (tianchi-loan-default-top11)
        │   └── 8分类器对比: RF/LogReg/SVM/KNN/Bagging/Adaboost/MLP (loan-default-prediction)
        ├── LGD (Loss Given Default)
        │   ├── 统计LGD估计 (credit-risk-modelling-pd-lgd L03)
        │   └── 联邦学习LGD: 跨机构联合建模不共享原始数据 (open-lgd-credit-risk)
        ├── EAD (Exposure at Default)
        │   └── 敞口估计 + 预期损失汇总 (credit-risk-modelling-pd-lgd L04)
        └── EL = PD × LGD × EAD
        资本计提 (Regulatory Capital)
        风险定价 (Risk-Based Pricing)

逐项目分析

1. credit-risk-modelling-pd-lgd — PD/LGD/EAD/EL 完整流水线

4 个 Notebook 的建模流程

  • L01 数据预处理:缺失值处理、异常值检测、变量分箱(binning)
  • L02 PD 建模与评分卡
  • WOE (Weight of Evidence) 编码:对每个分箱计算 WOE = ln(好客户占比 / 坏客户占比),将类别变量转化为连续的风险信号
  • IV (Information Value) 特征筛选:IV = Σ (好% - 坏%) × WOE,衡量特征对违约的区分能力。IV < 0.02 无预测力,> 0.5 过度预测(可能包含未来信息 = 前视偏差)
  • 逻辑回归评分卡:将 WOE 编码后的变量输入逻辑回归,系数映射为分数卡上的点数。Score = Offset + Factor × ln(odds),Offset 和 Factor 由基准分 (PDO) 定义
  • L03 LGD 建模:Beta 回归或分阶段模型(催收阶段 × 回收率),被 Basel 要求使用经济衰退期(downturn)数据校准
  • L04 EAD & EL:CCF (Credit Conversion Factor) 转换未使用的信用额度为违约敞口,EL = PD × LGD × EAD

与概念笔记的连接: - → 概念笔记「度量选择是元决策」:IV 阈值的选择(>0.02 vs >0.1 进入模型)是度量决策——太低引入噪声特征(过拟合),太高丢弃信息(欠拟合) - → 概念笔记「概率分布选择不是数学偏好」:LGD 的 Beta 分布假设(有界 [0,1])、PD 的 Bernoulli 假设——选错分布使资本计提出现系统性偏差 - → 概念笔记「关联不等于因果」:评分卡的 WOE 编码基于关联(IV 衡量的是 X 与 Y 的统计关联),不是因果——删除一个与还款能力因果无关但高度预测的变量(如邮政编码对某地区)可能违反公平借贷法规,但对模型区分度几乎无影响

2. tianchi-loan-default-top11 — 阿里天池竞赛 TOP11 方案

核心策略:简单特征工程 + 3 模型投票 Ensemble - 特征工程 (feature.ipynb):聚合统计(均值、标准差、最小值、最大值)、交叉特征、时间窗口特征 - 3 模型独立训练lgb.ipynb (LightGBM) + xgb.ipynb (XGBoost) + cbt.ipynb (CatBoost) - 融合 (ronghe.ipynb):概率加权平均投票

竞赛 vs 生产的核心差异: - 竞赛目标:AUC 最大化(任何额外 0.0001 都是排名提升) - 生产目标:利润最大化(AUC 提升可能来自拒绝更多原本能还款的中等风险客户,降低放贷量 > 降低坏账带来的好处)

与概念笔记的连接: - → 概念笔记「机器学习失败金字塔」:天池方案的 3 模型 ensemble 将 AUC 推向极限,但在生产中 ensemble 的边际收益可能为负——3 个模型的推断延迟 × 3,解释难度 × 3,而评分卡的逻辑回归 single model 既可解释又够用

3. loan-default-prediction — 8 分类器全量对比

8 个模型在 LendingClub 数据上的对比: Random Forest, Logistic Regression, SVM, KNN, Bagging, AdaBoost, MLP

关键发现:在信用风险领域,复杂模型并不总是赢家——逻辑回归在可解释性、稳定性和监管合规上具有压倒性优势。美联储 SR 11-7 指南明确要求模型验证必须能"解构模型决策"。

4. open-lgd-credit-risk — 联邦学习 LGD 建模

核心创新:不需要共享原始贷款数据,多家银行联合训练 LGD 模型。 - 联邦学习模式 (federated_run.py):各机构本地训练 LGD 模型,仅共享梯度/参数更新,不暴露客户级数据 - 独立模式 (standalone_run.py):传统单机构训练

这解决了风险建模的两个痛点: 1. 数据稀缺:单一银行的历史违约样本有限(特别是大额企业贷款),联邦学习汇聚多家数据提高统计功效 2. 隐私合规:GDPR 和个人信息保护法(PIPL)禁止机构间直接共享客户数据

与概念笔记的连接: - → 概念笔记「网络科学——从个体交互到集体涌现」:联邦学习中的机构网络 = 信息共享的图结构——每家银行是一个节点,参数更新沿边传播。图的稀疏性(哪些机构愿意合作)决定了模型的统计功效 - → 概念笔记「贝叶斯与频率学派分歧」:联邦贝叶斯学习——每家银行的本地数据对应一个局部似然,全局后验通过聚合各银行的局部后验(而非原始数据)获得,是贝叶斯框架在隐私约束下的自然延伸

5. fraud-detection-handbook — 信用卡欺诈检测全流程手册

7 章完整覆盖: 1. 欺诈检测的业务背景 2. 数据准备与特征工程 3. 不平衡学习:SMOTE、ADASYN、欠采样、代价敏感学习——欺诈交易通常 < 1% 4. 性能度量陷阱:Accuracy 在 99:1 的不平衡数据上毫无意义——模型全部预测"非欺诈"就有 99% 准确率,但检测到 0 笔欺诈。应使用 Precision-Recall AUC、Average Precision、Cost-based metrics 5. 模型选择:Logistic Regression → Random Forest → XGBoost → Neural Networks 6. 深度学习方法:自编码器(异常检测)、图神经网络(交易网络中的欺诈环) 7. 模型可解释性:SHAP 解释为什么会标记这笔交易为可疑

与概念笔记的连接: - → 概念笔记「度量选择是元决策」:欺诈检测是度量选择的教科书级案例——Accuracy 是错误答案,Precision@K(被标记的前 K 笔交易中有多少是真的欺诈)才是正确度量(受限于人工审核团队每天只能处理 K 笔) - → 概念笔记「机器学习失败金字塔」:欺诈检测中 80% 的改进来自更好的特征工程(交易频率、地点、金额模式、设备指纹),15% 来自数据质量(标签质量——被标记为"非欺诈"的交易中其实有未检测到的欺诈),仅 5% 来自模型选择

6. churn-prediction-lightgbm — 客户流失预测生产系统

完整的 ML 工程实践: - 模块化流水线:数据摄取 → 转换 → 训练 → 预测,每步独立 Python 模块 - 超参数优化:Optuna 贝叶斯搜索替代网格搜索 - 可解释性:SHAP 值解释"为什么预测这个客户会流失" - 部署:Flask REST API + CI/CD

流失预测的核心挑战: - 时间窗设计:用过去 N 个月的行为预测未来 M 个月是否会流失。N 太短——信息不足;N 太长——行为模式已过时 - 干预因果性的缺失:模型说"这个客户 70% 概率流失"——但你应该做什么?流失预测本身不告诉你干预的效果,这是 CATE(条件平均处理效应)的领域

核心洞察

1. Basel 框架是风险量化的工程约束——不是学术建议

PD、LGD、EAD、EL 这四个缩写定义了信用风险建模的边界条件: - 必须可解释(监管要求) - 必须使用经济衰退期数据校准(LGD downturn requirement) - 必须通过回测验证(Backtesting——实际违约率 vs 预测违约率) - 必须保守(宁可高估风险,不可低估——确保银行在压力下仍有足够资本)

2. 从 PD 到干预——评分卡之后的工作

信用评分卡(逻辑回归 + WOE)告诉你"这个客户有多大概率违约"。但更好问题是:"给这个客户降息 50bp,违约概率下降多少?"——这是 CATE(条件平均处理效应)的问题。评分卡 + 因果推断(EconML)是信用风险建模的下一站。

3. 不平衡分类是风控的永恒主题

欺诈率 0.1%,违约率 2-5%。在不平衡数据上: - 不要用 Accuracy——模型全部预测多数类就能拿到"高 Accuracy" - 用 Precision-Recall 曲线而非 ROC——ROC 在高度不平衡时给出过分乐观的假象(FP 的绝对数量即使很大,FP Rate 仍然很低) - 代价敏感学习:一个欺诈漏报的代价是一个误报代价的 10-50 倍(欺诈损失 vs 客服电话打扰客户),直接用代价矩阵训练

跨域链接

  • → 概念笔记「度量选择是元决策」:Accuracy vs AUC vs Precision-Recall vs Cost-sensitive metrics——在风控领域选错度量的代价不是次优模型,而是可能面临监管罚款或大规模欺诈损失
  • → 概念笔记「概率分布选择不是数学偏好」:PD 的 Bernoulli、LGD 的 Beta、违约时间的时间-事件分布——三层分布假设共同决定了 EL 估计的准确性。PD 和 LGD 之间的相关性(downturn LGD)在压力测试中尤为关键
  • → 概念笔记「机器学习失败金字塔」:Credit scoring 是最能体现"算法是塔尖"的领域——80 年代用逻辑回归(简单模型)+专家知识(深度领域理解)能做到的,今天用 XGBoost(复杂模型)+自动特征工程(浅层理解)未必做得更好
  • → 概念笔记「关联不等于因果」:评分卡衡量的是相关性(什么特征区分好/坏客户),不是因果性(什么因素导致违约)。因果推断(如利率变化对违约率的影响)需要 EconML 等工具超越评分卡
  • → 概念笔记「贝叶斯与频率学派分歧」:Basel 要求 PD/LGD 估计的保守性(conservatism)本质上是频率学派思维——在有限数据下对参数估计增加安全边际。贝叶斯方法将参数不确定性量化到后验分布中,直接用后验分位数(而非点估计 + margin of conservatism)满足监管保守性要求
  • → 概念笔记「实验设计与在线对照实验」:信用政策的 A/B 测试——"拒绝对照组的申请 vs 批准实验组的申请"是不可行的(伦理+法律),需要 observational causal inference 来评估信用政策变更的效果
  • → 概念笔记「网络科学——从个体交互到集体涌现」:欺诈环(fraud ring)是网络效应的恶性版本——欺诈者通过社交网络协同进行合成身份欺诈。图神经网络 (GNN) 用于识别交易网络中的欺诈环
  • → 概念笔记「决策理论三张面孔」:信用审批决策 = 给定 PD 估计(不确定的预测)+ 风险偏好(效用函数)+ 放贷约束(资本、流动性),选择对每个申请者的行动(批准/拒绝/调整利率)