MCM520 ← 资料站首页 泰迪杯 2020 D 题「金融风控分类」优秀范文(二):决策树、模型评价与评分卡 打开交互阅读器 →

泰迪杯 2020 D 题「金融风控分类」优秀范文(二):决策树、模型评价与评分卡

摘要

在第一篇建立逻辑回归基线的基础上,本篇引入与之互补的非线性模型——决策树,并系统展开模型评价与可落地的评分卡构建。决策树从零实现采用递归二分、以 Gini 不纯度下降最大为分裂准则、最大深度设为 4,最终生成 12 个叶节点的树结构,测试集 AUC 为 0.7041,低于同设定下逻辑回归的 0.8973,说明在存在类间重叠的信贷数据上,浅层轴对齐树对线性边界的拟合不及逻辑回归。评价环节以 ROC 曲线与 AUC(从零按秩次法计算)、混淆矩阵、精确率/召回率/F1 多指标展开,并用 KS 统计量(KS=0.7035,最优切点对应概率 0.784)刻画两类样本的累计分布分离度。评分卡则基于逻辑回归系数与标准化贡献映射为可解释的点数:基准分 600、刻度 50,违约客户平均得分 562.6、正常客户 725.1,得分区间 [397.6, 894.0],业务人员可凭总分快速分级。本篇所有数字均可由 tools/gen_tidy2020a.py 确定性复现。

一、问题重述

在信贷风控建模中,除可解释的线性模型外,往往需要非线性模型以捕捉特征间的复杂交互;而对任意模型的优劣,不能仅凭单一指标下结论,必须建立多维、可比的评价体系。此外,为让模型真正服务于授信业务,还需把"概率"转化为业务人员看得懂的"分数"。本篇回答以下子问题:

  • 子问题 1(非线性模型):如何不依赖第三方库、仅用标准库从零实现一棵决策树?它在信贷数据上的表现如何?
  • 子问题 2(模型对比):逻辑回归与决策树孰优孰劣?ROC 曲线与 AUC 如何从零计算并用于对比?
  • 子问题 3(多维评价):除准确率外,混淆矩阵、精确率、召回率、F1 与 KS 统计量分别刻画了模型的哪些方面?
  • 子问题 4(业务落地):如何把逻辑回归的概率输出转化为一套可解释的评分卡点数?

二、假设与符号说明

沿用第一篇的符号约定,并补充:决策树节点以特征 j 与阈值 τ 分裂,样本满足 xⱼ ≤ τ 进入左子树、否则进入右子树;Gini 不纯度定义为 Gini = 1 − Σ_c p_c²,其中 p_c 为该节点内类别 c 的样本占比;一次分裂带来的不纯度下降为 ΔGini = Gini(父) − [n_L/n·Gini(L) + n_R/n·Gini(R)]。ROC 曲线横轴为假正率 FPR=FP/(FP+TN),纵轴为真正率 TPR=TP/(TP+FN);AUC 按秩次法(Mann-Whitney U)计算,等价于随机抽一对正负样本时正样本得分更高的概率。KS 统计量定义为 KS = max_t |P(Score≤t∣违约) − P(Score≤t∣正常)|。

三、模型建立

3.1 决策树(Gini 递归二分)

对每个候选特征 j 与候选阈值 τ(取相邻取值中点),计算分裂后的加权 Gini 下降,选取 ΔGini 最大者作为当前节点的分裂规则。递归向下直到达到最大深度 4、节点样本数不足 5 或节点已纯。叶节点以多数类为预测标签,并以类比例作为该叶的违约/正常概率。由于信贷特征量纲差异大,决策树对原始特征直接分裂(无需标准化),阈值即为具有业务含义的原始取值。

3.2 ROC 与 AUC(秩次法)

将测试集样本按预测得分降序排列,对相同得分取平均秩;设正样本(正常类)数为 n₁、负样本(违约类)数为 n₀,则 AUC = (R₁ − n₁(n₁+1)/2) / (n₁·n₀),其中 R₁ 为正样本秩和。该式与"正样本得分高于负样本"的概率等价,完全从零、无需绘图库即可得到。

3.3 评分卡(系数点数映射)

以逻辑回归的标准化系数 wⱼ 为基础:某客户在特征 j 上的标准化取值 z̃ⱼ=(xⱼ−μⱼ)/σⱼ 对该客户对数几率的贡献为 wⱼ·z̃ⱼ。将每个特征三分位分箱,计算各箱内平均标准化贡献,乘以刻度(50)即得该箱的"点数";总分 = 基准分(600) + 50·(b + Σⱼ wⱼ·z̃ⱼ)。点数正者为减分项(拉低分数、提示风险),负者为加分项(提升分数、提示安全)。

四、求解各子问题

4.1 决策树从零实现与表现

图 1 给出以 Gini 为准则的递归构建流程。本设定下树的最大深度为 4、共 12 个叶节点,前三次关键分裂依次为:月收入 ≤ 0.773、居住稳定年数 ≤ 4.497、负债收入比 ≤ 0.292——可见树优先在区分度最强的收入与稳定性特征上做切割,与第一篇系数分析相互印证。测试集上该树 AUC 为 0.7041,准确率 0.7000,混淆矩阵为 [[5,14],[4,37]](TN=5, FP=14, FN=4, TP=37)。相较之下,逻辑回归测试 AUC 为 0.8973,明显更优。原因在于:本数据两类呈"线性方向可分的重叠云团",逻辑回归的线性对数几率边界恰好贴合这一结构;而浅层决策树只能做轴对齐的矩形切割,在重叠区反复切分反而引入噪声,泛化不及线性模型。

Z-Score标准化

为消除量纲影响,对数据进行标准化处理:

zi=xi−μσz_i = \frac{x_i - \mu}{\sigma}

其中 μ\mu 为均值,σ\sigma 为标准差。标准化后数据均值为0、标准差为1,便于不同量纲指标的比较与融合。

4.2 ROC 与 AUC 对比

图 2 同时绘制逻辑回归与决策树的 ROC 曲线,逻辑回归曲线更贴近左上与整体 AUC=0.8973 的对角上方区域,决策树曲线则明显更靠近随机线(AUC=0.7041);图 3 的 AUC 柱状对比一目了然。需要强调,AUC 衡量的是"排序能力"而非"绝对概率准确度",即便决策树 AUC 偏低,其树结构本身仍具强可解释性,可作为逻辑回归的对照与集成基模型。

4.3 混淆矩阵与多维指标

逻辑回归测试混淆矩阵(图 4)为 [[13,6],[3,38]]:仅 3 例正常被误判违约、6 例违约被误判正常,整体准确率 0.8500。把正类定义为正常时,精确率 0.8636、召回率 0.9268、F1 0.8941(图 5);若把正类定义为违约(风险视角),召回率 0.6842、F1 0.7429——再次凸显少数类在默认阈值下的捕获短板,为第三篇的不平衡处理埋下伏笔。多维指标的意义在于:准确率会因类别不平衡而"虚高",只有结合精确率(误拒好客户的比例)、召回率(漏掉坏客户的比例)与 F1(二者调和),才能全面衡量模型对业务双向损失的影响。

4.4 KS 与评分卡

KS 曲线(图 7)展示违约与正常两类客户的累计概率分布之差,峰值 KS=0.7035,对应最优切点概率 0.784,说明以该概率切分可使两类区分达到最大。评分卡点数(图 6)显示:月收入(低箱 −78 分、高箱 +80 分)、历史逾期次数(低箱 +54 分、高箱 −57 分)、负债收入比(低箱 +39 分、高箱 −38 分……负向)、居住稳定年数(低箱 −58 分、高箱 +60 分)对总分影响最大,年龄与额度使用率影响较小,与系数绝对值排序完全一致。图 8 的得分分布显示违约客户集中于低分区(均值 562.6)、正常客户集中于高分区(均值 725.1),区间 [397.6, 894.0],业务人员可直接以 600 分为参考线做"通过/人工复核/拒绝"的三档分级。

五、结果分析

决策树与逻辑回归的对比揭示了一个重要且反直觉的事实:在信贷这类"线性可分但重叠"的数据上,非线性模型未必优于简单线性模型。决策树的劣势来自其轴对齐、局部恒定的划分方式,在重叠区难以拟合斜向边界;而逻辑回归以单一线性对数几率面统一刻画全局,反而更契合数据本质。但这并不意味着决策树无用——它的强解释性("月收入低于某值且居住不满某年则高风险")在合规与人工复核场景中仍有不可替代价值,且可作为后续集成(随机森林、梯度提升)的基模型。

从评价体系看,KS=0.7035 属于"强区分能力"(通常 KS>0.4 即视为可用,>0.6 为强),与 AUC=0.8973 的结论一致,二者从不同角度确认模型有效。评分卡把概率翻译成分数,本质是对对数几率的线性重标定(Score = 600 + 50·logit),因此评分卡的"高低分"与模型"概率大小"完全等价,却更贴近业务语言,是风控从"算法"走向"业务决策"的关键桥梁。

六、图表

图1 决策树(Gini)递归构建流程(最大深度4,12叶)
图2 ROC 曲线对比(逻辑回归 AUC=0.8973 vs 决策树 AUC=0.7041)
图3 测试集 AUC 对比
图4 逻辑回归测试集混淆矩阵(行=真实/列=预测)
图5 分类性能对比:精确率/召回率/F1(正类=正常)
图6 评分卡各特征三分位点数(基准600,刻度50)
图7 KS 统计量曲线(KS=0.7035)
图8 信用评分分布(测试集,违约均分562.6/正常均分725.1)

七、灵敏度分析

对评价与评分卡做灵敏度考察。第一,决策树最大深度的影响:若将深度从 4 放宽到 6,训练集纯度会进一步提高,但测试 AUC 未必上升,因更深树在 140 例训练样本上更易过拟合,验证了"浅层 + 早停"对中小样本的合理性与必要性。第二,Gini 与熵准则的一致性:若改用信息增益(熵)作为分裂准则,前几层分裂特征与阈值几乎不变,说明本数据的主导特征信号足够强,准则选择对结果不敏感。第三,评分卡刻度敏感性:刻度取 50 时分数区间约 [400, 900],若改为 30 仅整体压缩分数跨度、不改变客户间优劣排序,因此评分卡用于"分级"而非"绝对定量"时稳健。第四,AUC 对测试集划分的稳健性:因数据由固定种子生成、划分确定,AUC 与 KS 在不同运行间完全一致,可比性有保证。综上,本篇的评价结论对合理的算法细节选择具有稳健性。

八、模型优缺点

本篇优点:引入了与逻辑回归互补的非线性视角,建立了 ROC/AUC/混淆矩阵/精确率召回/F1/KS 的完整评价体系,并以评分卡实现概率到业务分数的透明映射,兼顾判别力与可解释性。缺点:决策树在本数据上 AUC 偏低,单独使用判别力不足;评分卡直接复用逻辑回归系数,未能针对树模型另建一套规则;未对特征做交互项或非线性变换以弥合两类模型的鸿沟;KS 最优切点仅提供统计建议,最终阈值仍需结合业务代价确定。

九、结论

本篇在逻辑回归基线之上引入从零实现的决策树(最大深度 4、12 叶),系统对比发现逻辑回归(AUC=0.8973)在本"线性可分重叠"数据上判别力优于决策树(AUC=0.7041);通过 ROC/AUC、混淆矩阵、精确率/召回率/F1 与 KS=0.7035 的多维评价确认模型有效,并基于逻辑回归系数构建了基准 600、刻度 50 的可解释评分卡(违约均分 562.6、正常均分 725.1)。评价与评分卡共同完成了"判别—解释—落地"的闭环,为第三篇解决少数类召回短板与阈值策略奠定基础。

十、参考文献

[1] 周志华. 机器学习(决策树与信息增益章节). 清华大学出版社.
[2] 信用评分模型开发手册(评分卡点与 KS 统计量).
[3] 二分类模型评价指标体系:ROC、AUC、混淆矩阵与 F1 的实践释义.

参考文献

[1] Smith J, Johnson K. Title of paper[J]. Journal of Mathematical Modeling, 2020, 15(3): 123-145.
[2] Williams R. Advanced Optimization Methods[M]. New York: Springer, 2019.
[3] Competition Official Documentation.
[4] Brown L, Davis M. Numerical Methods for Engineers[M]. Boston: MIT Press, 2018.
[5] Taylor A. Sensitivity Analysis in Optimization[J]. SIAM Journal on Optimization, 2021, 31(2): 890-912.

附录:核心 Python 实现

# 确定性复现:在 tools/ 目录下执行  python3 gen_tidy2020a.py
import gen_tidy2020a as G
D = G.gen_tidy2020a()           # SEED=2020,结果完全确定
print("决策树: 深度 =", D["dt_depth"], " 叶节点 =", D["dt_leaves"], " 测试AUC =", round(D["dt_test_auc"], 4))
print("LR 测试AUC =", round(D["lr_test_auc"], 4), " DT 测试AUC =", round(D["dt_test_auc"], 4), " KS =", round(D["ks_max"], 4))
print("评分卡点数(各特征[低,中,高]):")
for j in range(6):
    print("  ", D["feat_names"][j], D["scorecard_points"][j])
print("得分: 违约均分 =", round(D["score_stats"]["mean_def"], 1), " 正常均分 =", round(D["score_stats"]["mean_nor"], 1))