基于机器学习的智能信用评分卡模型:变量分箱与WOE编码
一、问题描述
信用评分卡是金融风控中的核心工具,用于评估借款人违约风险。传统评分卡通常采用逻辑回归模型,但其前提是需要对原始特征进行分箱(Binning)和WOE(Weight of Evidence)编码,以解决以下问题:
- 非线性关系:将连续变量转换为离散区间,捕捉变量与违约概率的非线性关系。
- 异常值鲁棒性:分箱可减少异常值的干扰。
- 可解释性:每个箱的WOE值直接反映该区间对违约风险的影响方向与强度。
二、关键步骤详解
步骤1:变量分箱(Binning)
目标:将连续变量或高基数类别变量划分为少量离散区间,同时保证每个箱内的样本分布稳定且具有区分度。
常用方法:
- 等宽分箱:按值域均匀划分(如年龄每10岁一箱),简单但可能分布不均。
- 等频分箱:使每个箱的样本数量相近,但可能合并不同风险水平的样本。
- 基于决策树的分箱(最优分箱):
- 将变量作为特征,违约标签作为目标,训练单变量决策树(如CART算法)。
- 树的叶子节点自然形成分箱边界,确保箱内样本的违约率差异最小化,箱间差异最大化。
示例:
假设“年收入”为连续变量,通过决策树分箱后可能得到:
- 箱1:收入 < 10万(违约率15%)
- 箱2:10万 ≤ 收入 < 30万(违约率5%)
- 箱3:收入 ≥ 30万(违约率1%)
步骤2:计算WOE(Weight of Evidence)
公式:
\[\text{WOE}_i = \ln\left( \frac{\text{非违约样本在箱i中的占比}}{\text{违约样本在箱i中的占比}} \right) = \ln\left( \frac{\frac{N_{i,\text{good}}}{N_{\text{good}}}}{\frac{N_{i,\text{bad}}}{N_{\text{bad}}}} \right) \]
其中:
- \(N_{i,\text{good}}\):箱i中的非违约样本数
- \(N_{i,\text{bad}}\):箱i中的违约样本数
- \(N_{\text{good}}\):总非违约样本数
- \(N_{\text{bad}}\):总违约样本数
WOE的意义:
- WOE > 0:该箱内非违约比例高于整体,为低风险区间。
- WOE < 0:该箱内违约比例高于整体,为高风险区间。
- WOE的绝对值越大,区分能力越强。
示例:
针对上述收入分箱:
- 箱1:非违约占比10%,违约占比30% → WOE = ln(0.1/0.3) ≈ -1.1(高风险)
- 箱2:非违约占比50%,违约占比40% → WOE = ln(0.5/0.4) ≈ 0.22(轻微低风险)
- 箱3:非违约占比40%,违约占比30% → WOE = ln(0.4/0.3) ≈ 0.29(低风险)
步骤3:IV值(Information Value)评估变量重要性
公式:
\[\text{IV} = \sum_{i=1}^{n} \left( \frac{N_{i,\text{good}}}{N_{\text{good}}} - \frac{N_{i,\text{bad}}}{N_{\text{bad}}} \right) \times \text{WOE}_i \]
IV值解读:
- IV < 0.02:预测能力弱,通常剔除。
- 0.02 ≤ IV < 0.1:中等预测能力。
- IV ≥ 0.1:强预测能力。
步骤4:逻辑回归建模
将WOE编码后的变量作为输入,训练逻辑回归模型:
\[\text{Logit}(P) = \ln\left( \frac{P}{1-P} \right) = \beta_0 + \beta_1 \cdot \text{WOE}_1 + \beta_2 \cdot \text{WOE}_2 + \dots \]
优势:
- WOE编码使变量与违约概率间呈线性关系,满足逻辑回归假设。
- 系数\(\beta_i\)可解释为:WOE每增加1单位,违约几率比(Odds Ratio)的变化倍数。
三、优化与注意事项
- 分箱单调性:确保WOE值随箱的排序单调变化(如收入越高,WOE越大),避免模型逻辑矛盾。
- 防止过拟合:避免过多分箱导致样本稀疏,通常限制箱数4-6个。
- 业务验证:分箱边界需符合业务常识(如年龄分箱不应出现“20-30岁”与“30-40岁”风险倒挂)。
四、总结
通过分箱与WOE编码,信用评分卡模型将原始数据转换为稳定、可解释的特征,既提升了模型性能,又满足了金融风控对透明度的要求。后续可结合特征选择(如IV值筛选)与模型集成(如梯度提升树)进一步优化预测能力。