如何从逻辑回归模型构建信用评分网格

如何从逻辑回归模型构建信用评分网格

如何从逻辑回归模型构建信用评分网格

📰 来源:Towards Data Science | 📅 翻译日期:2026年6月25日
🔗 原文查看原文
🤖 翻译:DeepSeek AI · 仅供参考

本文所有代码可在 GitHub 上获取。业务逻辑和建模函数位于 src/selection 目录,具体文件为:

src/modeling/score_computation.py

对应的分析和结果记录在:

09_score_computation.qmd

图像、表格和图表均借助 Codex 编码助手生成。

FICO 信用评分逻辑

在美国,信用评分无处不在。它决定你是否能获得贷款、信用卡甚至租房。大多数决策背后的模型是 FICO。其逻辑简单明了:

  • 付款历史(35%):按时支付账单。
  • 欠款金额(30%):保持信用卡使用率低于 20%。
  • 信用历史长度(15%):越长越好。
  • 信用组合(10%):使用不同类型的信用。
  • 新信用(10%):限制新申请。
如果你按时支付信用卡账单,分数就会上升。付款历史权重最高。

这些权重产生一个分数,分为几个区间:

  • 300–579:较差
  • 580–669:一般
  • 670–739:良好
  • 740–799:优秀
  • 800–850:极佳

本文遵循相同的逻辑,但将其应用于我们自己的模型。

我们的模型与数据

我们使用本系列构建评分模型的数据集。目标很简单:为每个保留的变量分配权重,计算数据中每个客户的分数,并展示如何计算新客户的分数。

像之前一样,Codex 帮助编写代码并构建表格和图表。我反复强调这一点,因为它很重要:你可以使用 AI 代理来加快工作速度,但要检查它们的输出。只有验证后,信任才会增长。使用这些工具,但保持警惕。

上次我们保留了四个变量:

  • loan_int_rate:贷款利率
  • loan_percent_income:收入用于还款的比例
  • cb_person_default_on_file:借款人是否有过违约
  • home_ownership_3:借款人的住房状况

像 FICO 一样,我们为每个变量分配权重,并从 0 到 1000 构建分数。高分意味着低风险,低分意味着高风险。

从模型系数到分数

我们将每个系数转化为分数。

变量每个类别的分数

loan_int_rate 为例。类别 ii 的分数为:

$$ SC(j,i) = 1000 \times \frac{ |c(j,i)-\alpha_j| }{ \sum_{j=1}^{p}\alpha_j } $$

其中,c(j,i) 是变量 j 类别 i 的系数,α_j 是变量 j 的最大系数。例如,对于 loan_int_rate,最大系数为 α_j = 1.357044926979

该公式给出了下面的分数表。

客户分数计算步骤

以一个新客户为例,我们逐一检查每个变量所属的类别:

  • loan_int_rate 为 10%:分数 181.72
  • loan_percent_income 为 25%:分数 0
  • 无过往违约(cb_person_default_on_file = N):分数 59.52
  • 拥有房屋(home_ownership_3 = OWN):分数 373.94

将这些分数相加得到客户的最终分数:

$$ 181.72 + 59.52 + 0 + 373.94 = 615.18 $$

我们对数据中的每个客户重复此过程。

每个变量的重要性

一旦有了分数,我们便询问:哪个变量的影响最大?

我们在训练数据上测量:

$$ q_j = \frac{ \sum_{k=1}^{m_j} p_k \cdot |\overline{SC}_j - SC_k| }{ \sum_{j'=1}^{n} \sum_{k=1}^{m_{j'}} p_k \cdot |\overline{SC}_{j'} - SC_k| } $$

其中,

  • p_k:变量 j 中类别 k 的客户比例;
  • \overline{SC}_j:变量 j 经人口加权的平均得分;
  • m_j:变量 j 的类别数量;
  • n:模型中变量数量。

简而言之,q_j 表示变量 j 对分数的驱动程度。其不同类别之间的差异越大,权重越高。

下表显示每个变量的权重:

  • loan_percent_income 权重最大,为 35%
  • 其次是 home_ownership_331%
  • 然后是 loan_int_rate28%
  • 最后是 cb_person_default_on_file

这很合理。将超过 20% 的收入用于还款的客户风险高。该变量对分数影响最大是好消息:模型捕捉到了正确的信号。

分数能否有效区分风险?

在构建风险网格之前,我们检查分数是否履行了职责:区分违约者与非违约者。

我们绘制每组分数密度图,按违约状态分割,并覆盖训练集、测试集和跨期数据。

两条曲线相距越远,分数效果越好。

我们看到:违约集中在低分区域非违约集中在高分区域。这正是我们想要的:高分低风险。

构建风险网格

现在我们构建网格。

步骤 1:按分数分组的违约率

我们将分数划分为 20 个等分组,并绘制各组的违约率。从分数二十等分位(20个等大小分段)与违约率的关系图开始。

该图表是网格的基础:它自然地提供了将 20 个分段合并为六个风险类别的起始点。

步骤 2:六个风险类别

基于上图,我们将 20 个分段分组如下:

  • 组 1、2、3:分数 0-241,最低分,最高风险。
  • 组 4、5、6:分数 241-331
  • 组 7、8:分数 332-498
  • 组 9、10、11、12:分数 498-589
  • 组 13、14、15、16、17:分数 589-780
  • 组 18、19、20:分数 781-1000,最高分,最低风险。

这些类别必须满足三个规则:

✓ 每个类别内部风险一致;
✓ 每个类别与下一个类别的风险差异至少 30%
✓ 每个类别至少包含 1% 的所有客户。

上表显示这些规则被遵守。

步骤 3:检查稳定性

风险网格只有在时间推移中保持稳定才有效。我们检查两点:

  • 较风险类别在后续时间段中是否保持高风险?
  • 较安全类别是否保持低风险?

我们将在后续文章中进行验证。

参考资料


📌 *本文由 DeepSeek AI 自动翻译排版,如有不准确之处欢迎指正* 🏠 [返回首页](https://www.suiyuanlu.cn) · 📖 [查看原文](https://towardsdatascience.com/how-to-build-a-credit-scoring-grid-from-a-logistic-regression-model/)
©版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

评论已关闭