1. 项目概述:当信贷风险建模遇上因果推断
在金融科技和传统银行的风控部门干了十几年,我见过太多模型从“神坛”跌落。最典型的一个场景是:一个预测能力(比如AUC高达0.85)看起来非常漂亮的信用评分模型,上线后却可能引发意想不到的负面效应——比如,它可能系统性地拒绝了那些“高风险”但实际还款意愿和能力都很强的特定人群(例如初创企业主、自由职业者),或者,它可能因为过度依赖某些强相关但非因果的变量(如邮政编码、常用购物平台),导致了隐性的“数字红lining”。这就是“Causal inference for credit risk: why prediction alone isn't enough”这个标题直指的核心痛点。它不是在否定预测模型的价值,而是在强调,在信贷风险这个直接影响个人机会和金融公平的领域,仅仅知道“A和B会同时发生”(相关性)是远远不够的,我们必须追问“A是否导致了B”(因果性)。
这个项目,本质上是一次风控建模范式的思维升级。传统的信用评分卡、机器学习模型(如XGBoost、LightGBM),乃至现在火热的深度学习,其核心任务都是精准地预测违约概率。它们擅长从海量历史数据中挖掘模式,回答“这个人违约的可能性有多大?”。然而,它们无法回答一些更根本的业务问题:“如果我们提高这个人的信用额度,他的违约概率会变化吗?”(干预效应);“这个人的违约,多大程度上是因为他失业了,而不是因为他本身的信用习惯差?”(归因分析);“我们拒绝这笔贷款申请,是基于他真正的风险,还是基于模型从数据中学到的某些偏见?”(反事实公平性)。
因此,将因果推断引入信贷风险管理,目标是为风控决策注入“可解释性”和“可干预性”。它试图构建一个超越预测的“决策大脑”,不仅能预判结果,还能理解结果背后的驱动机制,并评估不同决策动作(如通过、拒绝、提额、降额)可能带来的因果效应。这对于实现更精细化的风险定价、更负责任的普惠金融、以及满足日益严格的监管合规要求(如模型可解释性、公平性审计)都至关重要。
2. 预测模型的局限性与因果推断的必要性
2.1 预测模型在信贷场景中的“阿喀琉斯之踵”
预测模型,无论是逻辑回归评分卡还是复杂的集成树模型,其成功严重依赖于一个关键假设:历史数据中的统计规律在未来会稳定重现。在信贷场景中,这个假设非常脆弱,主要体现在以下几个方面:
混淆变量陷阱:这是最经典的问题。假设我们发现“拥有高端智能手机”与“低违约率”高度相关。一个纯预测模型会很高兴地将“使用某品牌手机”作为一个强特征。但从因果角度看,真正降低违约风险的可能是“高收入”或“稳定的职业”,而高收入人群恰好更可能购买高端手机。手机品牌只是一个混淆变量,它本身并不导致低风险,只是与真正的因果变量(收入)相关。如果我们依据这个特征给予优惠,可能只是补贴了本来就低风险的群体,并未真正识别出因获得信贷而改善行为的潜在优质客户。
样本选择偏差:我们用于建模的历史数据,全部来自于“过去被批准贷款”的客户。这是一个严重的被截断的样本。那些被旧版风控模型拒绝的申请人,我们永远无法观察到他们的真实还款表现。如果旧模型存在偏见(例如,对某个地区或职业有歧视),那么新模型从有偏的历史数据中学到的,很可能是对旧偏见的强化和固化,而非纠正。预测模型无法处理这种“从未观测到结果”的数据缺失问题,而因果推断中的工具变量等方法提供了应对思路。
干预效应评估的缺失:这是业务中最直接的痛点。风控策略经常需要调整,比如:“如果我们把高风险客户的利率从15%降到12%,他们的违约率会变化吗?”预测模型只能告诉你,基于历史数据,这类高风险客户的违约概率是X%。但它无法告诉你,当“利率”这个变量被人为改变时,违约概率会如何变化。因为历史数据中,高风险客户通常就是高利率,你观察不到“高风险客户享受低利率”的情况。要回答这个“如果…那么…”的问题,你需要估计干预效应,这正是因果推断的核心。
2.2 从相关到因果:思维范式的转变
理解因果推断,首先要区分两种不同的提问方式:
- 预测性问题:“给定这个客户的所有信息(X),他违约(Y)的概率是多少?” 答案是一个条件概率 P(Y|X)。
- 因果性问题:“如果我们采取行动将这个客户的信用额度从A提升到B(do(X=B)),那么他违约的概率将如何变化?” 答案是一个干预分布 P(Y|do(X=B))。
这个“do”算子,由朱迪亚·珀尔(Judea Pearl)提出,是因果推断的标志。它意味着主动改变世界,而不是被动观察。在信贷中,“do”可以对应各种策略动作:批准贷款、调整额度、更改还款计划、发送提醒短信等。
注意:直接从观测数据中估计 P(Y|do(X)) 是危险的。因为观测到的相关性 P(Y|X) 可能混杂了其他因素。因果推断提供了一套数学工具(如后门准则、前门准则、工具变量)来识别和估计这个“do”操作下的效应,其前提是构建一个关于变量间因果关系的假设图——因果图。
3. 因果推断的核心框架与在风控中的映射
3.1 构建信贷风险的因果图
进行因果分析的第一步,是将业务知识形式化为一个有向无环图。在这个图中,节点代表变量,有向边代表假定的因果关系方向。一个简化的信贷因果图可能包含以下节点:
- 处理变量:我们关心的决策或干预,如“贷款批准”(是/否)、“信用额度”(数值)、“利率”(数值)。
- 结果变量:核心风险指标,如“是否违约”(二值)。
- 混淆变量:同时影响处理变量和结果变量的变量。例如,“收入水平”可能影响“获得的信用额度”(银行倾向给高收入者更高额度),也直接影响“违约概率”(高收入者违约风险低)。如果不控制收入,额度与违约之间的观测关系就是有偏的。
- 中介变量:位于处理变量和结果变量之间的因果路径上的变量。例如,“贷款批准”可能导致“客户增加消费”,进而可能影响“月度现金流”,最终改变“违约概率”。分析中介效应能让我们理解策略起作用的机制。
- 工具变量:一个只影响处理变量,但不直接影响结果变量(除了通过处理变量)的变量。在风控中很难找到完美的工具变量,但有时“不同审批员的严格程度差异”或“基于某些阈值的政策变动”可以作为近似。
绘制因果图是一个需要风控专家、数据科学家和业务方紧密协作的过程。它迫使团队明确所有关于“什么导致什么”的假设,这些假设将成为后续所有分析的基础。
3.2 关键因果估计方法及其风控应用场景
根据因果图的结构和数据条件,我们可以选择不同的估计方法:
1. 匹配与倾向得分匹配
- 原理:为每个受到处理的个体(如获批贷款者),在未受处理的群体(被拒者)中找到一个或多个“双胞胎”,这个双胞胎在所有观测到的混淆变量上都尽可能相似。然后比较这两组人的结果差异。
- 风控应用:评估“贷款批准”这个处理对违约的效应。由于被拒者没有还款记录,我们无法直接比较。但我们可以找到那些“差点被批准”的申请人(通过倾向得分),分析批准与否对其后续在其他渠道的信用表现(如其他贷款、消费数据)的间接影响,或用于评估历史审批政策是否存在偏见。
- 实操心得:匹配的质量决定估计的可靠性。需要检查匹配后的协变量平衡性。对于信贷数据,通常会有大量维度,使用倾向得分(预测获批概率的模型得分)进行匹配是更可行的。但切记,PSM只能控制观测到的混淆变量,对于未观测的混淆(如个人还款意愿)无能为力。
2. 双重差分法
- 原理:比较处理组和对照组在政策干预前后的结果变化差异。它消除了处理组和对照组之间不随时间变化的固有差异。
- 风控应用:完美适用于评估策略变更的效果。例如,公司决定对某个客群(处理组)实施新的、更宽松的审批策略,而另一个相似客群(对照组)维持旧策略。比较两组在策略变更前后违约率的变化差值,即可得到新策略的净效应。
- 注意事项:DID的核心假设是“平行趋势”——即如果没有干预,处理组和对照组的变化趋势应该是一致的。在信贷中,经济周期、季节性因素都可能破坏这个假设,需要进行严格的检验和调整(如合成控制法)。
3. 工具变量法
- 原理:当处理变量(如实际获得的额度)与误差项相关(存在未观测混淆)时,寻找一个工具变量(Z),它满足:a) 与处理变量(X)相关;b) 只通过X影响结果(Y)。用Z引起的X变异部分来估计X对Y的因果效应。
- 风控应用:挑战极大,因为寻找有效的IV非常困难。一个经典的学术例子是,用“是否超过信用评分阈值”作为“是否获得贷款”的工具变量。在业务中,某些时候“营销渠道的随机分配”或“审批系统的随机分流”可能作为近似的IV,用于估计营销活动或新模型的效果。
- 实操心得:IV估计结果对假设非常敏感。必须进行过度识别检验(如果有多个IV)和弱工具变量检验。弱工具变量会导致估计值严重偏误且不稳定,在风控这种要求稳健的场景中需极其谨慎。
4. 结构方程模型与回归调整
- 原理:基于明确的因果图,通过统计模型(如结构方程模型)直接估计路径系数。对于简单的混淆结构,通过在线性回归中纳入所有混淆变量,也能得到处理变量的因果效应估计。
- 风控应用:适用于因果关系相对清晰、主要混淆变量均可观测的场景。例如,研究“债务收入比”对违约的影响,我们可以控制收入、职业、资产等混淆因素后,看DTI的系数。
- 注意事项:这严重依赖于“所有重要混淆变量都已测量并纳入模型”的强假设。在复杂的现实风控中,这个假设通常不成立。
4. 实操流程:一个因果推断风控分析项目
假设我们要评估“提高信用额度对优质客户违约风险的影响”。这是一个典型的干预效应估计问题。
4.1 步骤一:定义因果问题与构建因果图
首先,与业务方明确:
- 处理变量:信用额度的提升幅度(连续变量)或“是否获得提额”(二值变量)。
- 结果变量:未来12个月内的违约状态(是/否)。
- 核心问题:对于当前信用良好的客户,主动提升其信用额度,是会增加其违约风险(因过度负债),降低风险(因提升了客户满意度和信用利用率健康度),还是没有影响?
绘制因果图。关键的混淆变量可能包括:客户的历史收入、当前总负债、信用评分、行为评分(如交易活跃度)。这些变量既影响风控系统做出“提额”的决策,也直接影响客户的违约风险。我们需要控制它们。
4.2 步骤二:数据准备与“可忽略性”评估
收集处理组(被提额客户)和对照组(未被提额但其他方面相似的客户)的数据。除了上述变量,尽可能多地收集潜在的混淆变量。
这里面临的核心挑战是:提额决策不是随机的。系统或人工会根据规则选择“风险低、收益潜力大”的客户提额。这导致处理组和对照组在基线特征上存在系统性差异。我们的数据分析必须首先量化这种差异。
实操操作:
- 计算每个客户的倾向得分,即基于基线特征预测其被提额的概率。使用逻辑回归或梯度提升树。
- 进行协变量平衡性检查。比较处理组和对照组在所有特征上的分布差异(如标准化均值差)。如果差异很大,说明直接比较违约率会有严重偏差。
- 常见问题:如果发现严重不平衡,考虑:
- 精确匹配/协变量匹配:为每个处理组客户寻找特征几乎相同的对照组客户。
- 倾向得分匹配:使用倾向得分进行匹配。
- 逆概率加权:用倾向得分的倒数对样本进行加权,构建一个“伪随机化”的总体。
- 如果数据允许,寻找自然实验场景:例如,公司曾因系统故障随机给了一批客户提额,这就是一个完美的自然实验。
4.3 步骤三:模型选择与效应估计
根据数据情况和平衡性调整后的数据形态,选择估计方法。
场景A:数据较平衡,或通过加权/匹配后较平衡
- 方法:采用基于回归的调整。
- 操作:构建一个逻辑回归模型:
违约 ~ 处理变量(提额) + 混淆变量1 + 混淆变量2 + ...。在控制了所有混淆变量后,“提额”变量的系数及其显著性,就代表了提额对违约风险的平均处理效应。 - 代码示例(Python pseudocode):
import statsmodels.api as sm # df 是经过匹配或加权后的数据 X = df[['is_increased', 'income', 'total_debt', 'credit_score', ...]] # 包含处理变量和混淆变量 X = sm.add_constant(X) # 添加截距项 y = df['default'] model = sm.Logit(y, X).fit() print(model.summary()) # 重点关注 `is_increased` 的系数和p值- 结果解读:如果
is_increased的系数为负且显著,意味着在控制其他因素不变的情况下,提额导致了违约概率的显著下降。
场景B:存在明显的时间趋势和分组
- 方法:双重差分法。
- 操作:需要面板数据。定义提额发生的时间点t。比较处理组(被提额客户)和对照组(未被提额客户)在t前后一段时间(如前后6个月)的违约率变化。
- 模型:
违约率_it = β0 + β1 * 处理组_i + β2 * 后期_t + β3 * (处理组_i * 后期_t) + ε_it - 核心系数:β3 就是DID估计量,即提额政策的净效应。
场景C:存在未观测混淆的担忧
- 方法:考虑工具变量法或断点回归。
- 操作(断点回归示例):如果公司政策是“信用分>700分的客户自动提额10%”。那么700分就是一个清晰的断点。比较分数在700分上下微小区间内(如695-705分)的客户,他们除了提额状态不同,其他特征应该是相似的。他们的违约率差异可以近似认为是提额的局部平均处理效应。
4.4 步骤四:敏感性分析与结果解释
因果推断的结论高度依赖于假设(如无未观测混淆)。必须进行敏感性分析,回答“我们的结论有多稳健?”。
- 方法:例如,对于回归调整,可以计算E值。E值衡量的是,需要多么强的未观测混淆(与处理和结果的关系强度),才能推翻我们当前的显著性结论。
- 风控报告:在向管理层汇报时,绝不能只说“我们发现提额降低风险5%”。必须附上:
- 核心假设:我们假设已控制了所有重要混淆变量。
- 敏感性分析:根据E值分析,除非存在一个与处理和结果关联度达到XX的未观测因素,否则结论是稳健的。
- 估计范围:提供平均处理效应的置信区间(如,降低风险2%-8%)。
- 异质性处理效应:进一步分析,这个效应在不同子群体(如不同收入段、年龄层)中是否不同?可能对高收入者无影响,但对中低收入者风险降低明显。这能指导更精细化的策略。
5. 因果推断落地的挑战与应对策略
将因果推断从方法论应用到日常风控运营,挑战巨大。
挑战一:数据质量与“反事实”的缺失因果推断本质上是关于“反事实”的推理——我们想知道如果一个人没被提额会怎样,但我们只能观察到一种事实。我们永远无法获得完美的反事实数据。
- 应对:通过科学的实验文化来积累数据。推动业务方进行更多的A/B测试或随机对照试验。例如,将符合提额条件的客户随机分成三组:A组提额10%,B组提额5%,C组不提额(对照组)。这是获取无偏因果效应的黄金标准。用RCT的结果来校准观察性研究中的因果模型。
挑战二:业务理解与因果图构建的复杂性画出一个被各方认可的因果图非常困难。业务专家可能凭直觉,数据科学家可能依赖算法,两者常有冲突。
- 应对:建立跨职能的“因果分析工作坊”机制。使用白板反复推敲每一个箭头。一个实用的技巧是:针对每一个假定的因果关系,反复追问“如果我对这个变量进行随机化干预,另一个变量会变吗?”来检验因果方向。
挑战三:计算复杂性与工程化部署传统的风控预测模型上线,输入特征,输出分数即可。因果模型要上线,可能需要实时计算倾向得分、匹配相似个体、或调用更复杂的结构方程模型,对计算架构要求更高。
- 应对:分阶段实施。初期,将因果分析作为离线策略分析工具,用于评估历史策略效果、优化规则阈值。中期,将因果效应估计作为预测模型之外的辅助决策模块,为审核人员提供“干预建议”及预期效果。远期,探索将因果发现算法与强化学习结合,构建动态策略优化系统。
挑战四:监管沟通与模型可解释性监管机构熟悉逻辑回归的系数,但如何向他们解释“工具变量估计的局部平均处理效应”?
- 应对:用业务语言和案例说话。重点展示因果分析如何帮助识别和消除歧视性偏差。例如,通过因果分析证明,旧模型中“居住时长”这个特征通过混淆变量“年龄”间接歧视了年轻人,从而推动了更公平的模型迭代。这恰恰是当前监管鼓励的方向。
在我经历的一个真实项目中,我们利用DID方法评估了一项针对小微企业的贷款产品优化。单纯看上线后整体违约率上升,业务几乎要叫停该产品。但通过DID分析,我们发现,在剔除了宏观经济下滑对全行业的影响后,该产品相对于旧产品,实际上显著降低了目标客群的违约率。这个因果结论不仅保住了产品,更让我们对目标客群的风险有了更深的理解。这就是因果推断超越预测的价值——它不仅在“描述世界”,更在“理解改变世界的杠杆点”。这条路不容易,但无疑是信贷风险管理走向更智能、更公平、更负责任的未来必经之路。