清晨,你在银行柜台前排队,前面一位年轻人拿着身份证和收入证明,眼神里满是期待。柜员敲击键盘,屏幕上跳出几个数字——这就是他的“信用分”。这个分数决定了他是拿到年利率 4% 的低息贷款,还是被礼貌地告知“感谢您的光临”。 这背后站着的,就是风控模型中的信用评分(Credit Scoring)系统。它像一个经验丰富的“掌柜”,不看人情世故,只看一本本“账本”:你过去怎么借钱、怎么还钱、收入多少、工作了多久……然后给你打一个综合分。这个分数不是拍脑袋定的,而是由一条数学公式“算”出来的——这条公式,就是你今天要学的主角。 本文将带你走进信用评分这个“数字掌柜”的内心世界。我们会用“银行审批贷款”这个生活场景做主线比喻,从最基础的概念讲起,逐步深入到逻辑回归算法、特征工程、模型评估、策略应用与优化调参。没有高深莫测的专业壁垒,只有步步为营的清晰逻辑。

岗位关联

信用评分是 AI+金融领域的核心技能之一。掌握它,你就掌握了理解银行风控、消费金融、普惠信贷等业务的技术钥匙,也为自己打开了通往金融科技高薪岗位的大门。

目录
  1. 可视化演示
  2. 借款人与账户
  3. 逻辑回归算法
  4. 特征工程
  5. 模型性能评估
  6. 策略应用场景
  7. 优化与迭代
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

围绕信用评分展开深入探讨,从基本概念出发逐步深入到高级应用。内容涵盖AI行业应用、AI+金融中的信用评分原理、... 切换模式查看不同维度。

本节配有交互动效(进入视口后自动加载,约 3KB)。

信用评分基本:核心原理 动态展示关键流程与数据流动 交互控件调节参数实时渲染 f(x) = transform(x) 核心概念的可视化呈现

借款人与账户

想象你是镇上小有名气的钱庄掌柜。每天都有形形色色的人来借钱:有老实巴交的裁缝、也有油嘴滑舌的投机商。你没有三头六臂,如何快速判断该借给谁、借多少?聪明的做法是——给每位老主顾建一本“账本”,记录他过往的每一笔借还记录。时间一长,你翻开账本扫一眼,心里就有了底。

这就是信用评分的本质:把一个人的还款能力和还款意愿,用数字的形式量化出来。在金融科技领域,这个数字通常落在 300 到 850 分之间。分数越高,代表违约风险越低,借款人就越是“优质客户”。

信用评分卡(Scorecard)就是将这个打分过程标准化的工具。它像一个“算盘”,把借款人的各种信息——年龄、收入、负债、历史逾期记录——拨拉一通,最终“噼里啪啦”算出一个总分。银行拿到这个分数,就可以快速决定:批不批、批多少、利息定多少。

在信贷全流程中,信用评分卡处于“准入门槛”的位置。贷前它做审批闸门,贷中它做额度定价依据,贷后它做风险预警信号。可以说,整条信贷流水线都以这个分数为轴心运转。

当“账本”被量化成一条公式,钱庄掌柜就升级成了数据科学家。

信用评分=w1x1+w2x2+⋯+wnxn+b\text{信用评分} = w_1 x_1 + w_2 x_2 + \cdots + w_n x_n + b
这个公式表示:信用分是各项特征(收入、负债、逾期次数等)的加权求和。每个特征前面都有一个“权重”,就像掌柜心里给每项记录打的“重要性系数”。
  1. 特征变量公式中的 $x_1, x_2, \ldots, x_n$ 代表借款人的各项信息,比如月收入、负债金额、逾期次数。它们就是账本上的“流水条目”。
    xi=第 i 项特征(如月收入)x_i = \text{第 } i \text{ 项特征(如月收入)}
  2. 权重系数$w_1, w_2, \ldots, w_n$ 表示每项特征对信用分的影响大小。收入稳定的占比高,偶尔迟交一次水电费占比就低。
    wi=第 i 项特征的权重w_i = \text{第 } i \text{ 项特征的权重}
  3. 偏置项$b$ 是一个常数调整项,让分数的起点落在一个合理区间,相当于掌柜账本上的“基础分”。
    b=偏置(基础分偏移)b = \text{偏置(基础分偏移)}

逻辑回归算法

有了公式,下一步要解决的问题是:如何确定这些权重 $w$ 该取多少? 这里引入信用评分最经典的核心算法——逻辑回归。

回到钱庄的比喻。掌柜积累了上百本账本,每一本都记录着借款人的特征和最终结果(还清了,还是跑路了)。他想要找到一组权重,使得“算出来的分”能最大程度地复现历史结果。逻辑回归就是这个“找权重”的数学方法。

逻辑回归的思想可以拆成三步。第一步,先做线性求和:把各项特征加权相加,得到一个连续值。第二步,将这个值送入 Sigmoid 函数“压缩”,映射到 0 到 1 之间,变成“违约概率”。第三步,根据概率与 0.5 的比较划出决策边界。

为什么要用 Sigmoid 函数?因为线性求和的结果范围是负无穷到正无穷,而概率必须落在 0 和 1 之间。Sigmoid 就像一根“弹簧”,把无限长的数轴压缩到一个有限区间里。当加权求和是正数且很大时,概率趋近于 1;是负数且很小时,概率趋近于 0。

权重怎么定?靠的是最大似然估计——寻找一组参数,使得模型在历史数据上预测得最“顺理成章”。就像掌柜调整自己对各项记录的“偏重”,直到算出的分与真实结局最吻合。

P(y=1∣x)=11+e−(wTx+b)P(y=1|x) = \frac{1}{1 + e^{-(w^T x + b)}}
这是信用评分的“心脏公式”:它把借款人的特征向量 $x$ 输入,输出一个 0 到 1 之间的违约概率。概率越接近 1,说明模型认为该借款人越可能违约。
  1. 特征向量$x$ 表示一个借款人的全部特征构成的向量,相当于他账本上所有条目的集合。
    x=[x1,x2,…,xn]Tx = [x_1, x_2, \ldots, x_n]^T
  2. 线性得分$w^T x + b$ 将特征加权求和,得到一个实数分数,代表“风险总评分”。
    z=wTx+bz = w^T x + b
  3. Sigmoid 压缩将 $z$ 代入 $\frac{1}{1+e^{-z}}$,把任意实数映射到区间 $[0,1]$。
    σ(z)=11+e−z\sigma(z) = \frac{1}{1 + e^{-z}}
  4. 概率输出最终输出即为违约概率,当 $z > 0$ 时概率大于 0.5,模型判定为“高风险”。
    P(y=1∣x)=σ(wTx+b)P(y=1|x) = \sigma(w^T x + b)

特征工程

“账本”里的原始记录五花八门,不能直接拿来做决策。有的记录缺失、有的记录过期、有的记录单位混乱。所以,让掌柜头疼的下一步是:如何把这些原始流水变成干净、有预测力的特征?

特征工程就是“账本整理术”。它分三步走:清洗、构造、编码。清洗是去掉错误和缺失的记录;构造是把两三条原始信息组合成新信息(比如“负债收入比”);编码则是让数据变成算法能“吃”的形式。

清洗阶段最典型的是处理缺失值和异常值。例如某位借款人没有工作记录,我们不能直接删掉他,而要填充一个合理值或用单独类别标记。异常值像账本上突然出现一笔“天价交易”,要么纠正、要么做封顶截断处理。

构造阶段是从原始字段中提炼衍生特征。比如“月收入”和“月负债”是原始字段,但真正影响还款能力的是两者之比,即“债务收入比”(DTI)。这类衍生特征往往比原始字段更具区分度,就像掌柜不只看你赚了多少,更看你每个月要还多少。

编码阶段常用的技术是分箱(Binning)与 WOE 编码。分箱把连续变量(如年龄 23、27、31 岁)划分为若干区间(20-30 岁、30-40 岁),像把零钱兑换成整钞。WOE(Weight of Evidence,证据权重)编码则把每个箱替换为一个数值,指示该箱内“坏客户占比”与“好客户占比”的对数比。当某个箱的 WOE 为正值时,说明这个箱里的客户质量相对偏好。

特征工程做完,原本晦涩的账本变成了一行行干净的数字。掌柜看着这些数字,觉得心里踏实了——因为他知道,这些数字才是真正能预测风险的“信号”。

WOEi=ln⁡(该箱中好客户占比该箱中坏客户占比)\text{WOE}_i = \ln\left(\frac{\text{该箱中好客户占比}}{\text{该箱中坏客户占比}}\right)
WOE 编码的精髓在于:它把“这个箱子里的人是好是坏”这个信息提取出来,变成一个纯数字。模型看到的是“信号”,而不是“箱子编号”。
  1. 分箱将连续特征划分为若干区间,每箱独立计算好坏客户比例。
    箱 i:[Li,Ui)\text{箱 } i: [L_i, U_i)
  2. 好客户占比该箱中实际履约客户数占该箱总客户数的比例。
    pgood,i=箱 i 中好客户数箱 i 总客户数p_{\text{good},i} = \frac{\text{箱 } i \text{ 中好客户数}}{\text{箱 } i \text{ 总客户数}}
  3. 坏客户占比该箱中违约客户数的同口径比例。
    pbad,i=箱 i 中坏客户数箱 i 总客户数p_{\text{bad},i} = \frac{\text{箱 } i \text{ 中坏客户数}}{\text{箱 } i \text{ 总客户数}}
  4. 取对数比将两个占比相除后取自然对数,得到最终 WOE 值。
    WOEi=ln⁡(pgood,ipbad,i)\text{WOE}_i = \ln\left(\frac{p_{\text{good},i}}{p_{\text{bad},i}}\right)

模型性能评估

模型建好了,但掌柜不敢直接用。他得先验验货:这套打分系统到底靠不靠谱? 这就要引入模型评估环节——相当于给模型做一次全面“体检”。

体检的底层基础是混淆矩阵(Confusion Matrix)。它统计四类预测结果:真正例(实际好、预测好)、假正例(实际坏、预测好)、真负例(实际坏、预测坏)、假负例(实际好、预测坏)。听上去绕,但用生活话说:掌柜放出去 100 笔贷款,其中 80 笔按时还了(真正例),10 笔连本带利收回来了但过程惊险(假正例),8 笔彻底跑路但被预测到了(真负例),还有 2 笔本来会按时还却因为分数低被拒之门外(假负例)。

体检报告上最亮的两个指标是 KS 值和 AUC。KS 值衡量模型区分“好坏客户”的最大差距,像掌柜看一杆秤——好客户和坏客户在分数分布上能不能明显分开。AUC 是 ROC 曲线下的面积,一个随机猜测的模型 AUC=0.5,完美模型 AUC=1。现实中信用评分的 AUC 通常在 0.75 到 0.85 之间就算相当不错。

还有一个必须警惕的陷阱:过拟合(Overfitting)。它像学生死记硬背了练习册答案,模考全对、高考崩盘。模型在训练数据上表现完美,遇到新客户却一塌糊涂。相反,欠拟合(Underfitting)像学生只学了目录就去考试,训练和测试表现都糟糕,模型过于简单、没学到规律。防止过拟合的常用手段包括正则化、交叉验证和增加样本量。

体检报告的每一项都在回答同一个终极问题:这套评分系统能否在真实世界中可靠地甄别风险?掌柜知道,只有通过了全部体检,这把“丈量信用”的尺子才算合格。

KS=max⁡t∣CDFgood(t)−CDFbad(t)∣\text{KS} = \max_{t} \left| \text{CDF}_{\text{good}}(t) - \text{CDF}_{\text{bad}}(t) \right|
KS 统计量是所有可能阈值下,好客户累计分布与坏客户累计分布的最大差距。差距越大,说明模型对好坏客户的区分能力越强。
  1. 好客户累计分布CDF 表示好客户中分数小于等于某个阈值 $t$ 的比例。
    CDFgood(t)=P(score≤t∣y=0)\text{CDF}_{\text{good}}(t) = P(\text{score} \le t \mid y=0)
  2. 坏客户累计分布表示坏客户中的同口径比例。
    CDFbad(t)=P(score≤t∣y=1)\text{CDF}_{\text{bad}}(t) = P(\text{score} \le t \mid y=1)
  3. 取最大差距遍历所有可能的阈值 $t$,找到两个分布差距最大的点,即为 KS 值。
    KS=max⁡t∣CDFgood(t)−CDFbad(t)∣\text{KS} = \max_t |\text{CDF}_{\text{good}}(t) - \text{CDF}_{\text{bad}}(t)|

策略应用场景

体检合格后,这把“尺子”终于要上岗实战了。信用评分的核心价值就体现在风控策略的应用上——它不是一个静态的数字,而是切割业务决策的“手术刀”。

第一个应用场景是贷款审批。传统人工审批慢、主观性强,且难以标准化。有了信用评分后,金融机构可以设定一条硬性的审批分数线:比如分数低于 550 分的申请件一律自动拒绝,高于 650 分的自动通过,介于两者之间的转入人工复核。这让审批吞吐量提升了数倍,同时也把“掌柜拍脑袋”的情绪因素完全剔除。

第二个场景是额度与定价。同样是获得批准的客户,也可以根据分数高低差异化对待。分数高的客户信用风险低,可以给予更高的额度和更低的利率;分数低的客户则额度收紧、利率上浮。这背后的逻辑是“风险定价”——风险高的人付更高的利息,本质是风险补偿。

第三个场景是贷后风险预警。贷款发放后,模型可以持续监测借款人的新行为数据(如其他平台出现逾期、负债骤增)。一旦分数跌破警戒线,系统立即触发预警,催收团队第一时间介入,避免损失扩大。就像掌柜定期翻看账本,发现某位老主顾最近频繁赊账不还,赶紧上门问询。

当评分系统融入业务流程,贷款就不再是“碰运气”的博弈,而是一场有数据支撑的精密计算。

预期损失=违约概率×违约损失率×风险敞口\text{预期损失} = \text{违约概率} \times \text{违约损失率} \times \text{风险敞口}
这是风控中著名的“预期损失公式”:单笔贷款的风险成本取决于三个因素——借款人违约的概率、违约后损失的比例、以及借出去的本金数额。信用评分直接服务于公式中的第一项。
  1. 违约概率由信用评分模型输出,指示借款人未来违约的可能性。
    PD=P(y=1∣x)\text{PD} = P(y=1 \mid x)
  2. 违约损失率一旦违约,无法收回的金额占总敞口的比例。有抵押物的贷款该比例低。
    LGD=违约损失金额风险敞口\text{LGD} = \frac{\text{违约损失金额}}{\text{风险敞口}}
  3. 风险敞口当前暴露在风险下的贷款金额总量。
    EAD=当前未偿还本金\text{EAD} = \text{当前未偿还本金}
  4. 三值相乘三者相乘得到预期的风险成本,用于定价和资本计提。
    EL=PD×LGD×EAD\text{EL} = \text{PD} \times \text{LGD} \times \text{EAD}

优化与迭代

最后一站,也是最考验功力的一站:如何让模型持续保持最佳状态? 世界在变、客户结构在变、经济周期在变,一套模型打一辈子天下的时代早就过去了。

第一个优化点是阈值调优。审批分数线(阈值)的调整本质是收益与风险的权衡。阈值定得高,批准率低、坏账少,但会错杀好客户(机会成本);定得低,业务量大但坏账攀升。金融分析师会用“利润曲线”来寻找最优阈值点,让总收益最大化。这就像掌柜决定“多大的雨算暴雨要关门歇业”——太敏感会错过好生意,太迟钝会淋湿铺子。

第二个痛点是样本不均衡。违约客户永远是少数派——正常信贷场景中坏客户占比通常只有 2%-5%。模型如果没有特殊处理,会“偷懒”地预测所有人都好,以获得极高准确率但毫无风控意义。解决办法包括过采样(对少数类复制样本)、欠采样(随机丢弃多数类样本),以及使用类别权重(让模型更重视少数类的错误代价)。

第三个关键是模型监控与重训。经验丰富的风控团队会给模型设定“健康指标”:每月监控 KS 值是否衰减、PSI(群体稳定性指标)是否超限。一旦 PSI 大于 0.25,说明当前客户群体和建模时的客群发生了显著偏移,模型已经“过时”,需要触发重训。就像掌柜定期翻看账本,发现最近半年来的客户模样都变了,赶紧更新自己的评判标准。

持续优化是一个永不完结的循环:监控、发现衰减、触发重训、上线验证、继续监控。掌柜的账本每天都在更新,信用评分模型也必须是活着的系统。

PSI=∑i(实际占比i−预期占比i)×ln⁡(实际占比i预期占比i)\text{PSI} = \sum_{i} \left( \text{实际占比}_i - \text{预期占比}_i \right) \times \ln\left(\frac{\text{实际占比}_i}{\text{预期占比}_i}\right)
PSI 衡量“建模时的客户分数分布”和“当前客户分数分布”之间的差异。如果差异过大,说明模型的应用环境已经发生变化,预测结果不再可靠。
  1. 分箱统计将分数划分为若干区间,分别统计实际样本占比和预期样本占比。
    实际占比i=当前分数落在箱 i 的人数总人数\text{实际占比}_i = \frac{\text{当前分数落在箱 } i \text{ 的人数}}{\text{总人数}}
  2. 对数比率对实际占比与预期占比之比取自然对数,衡量偏离方向。
    ln⁡(实际占比i预期占比i)\ln\left(\frac{\text{实际占比}_i}{\text{预期占比}_i}\right)
  3. 加权求和将偏离值与占比变化量相乘后求和得到 PSI。
    PSI=∑i(实际占比i−预期占比i)×ln⁡(实际占比i预期占比i)\text{PSI} = \sum_i \left(\text{实际占比}_i - \text{预期占比}_i\right) \times \ln\left(\frac{\text{实际占比}_i}{\text{预期占比}_i}\right)

AI 应用场景

零售银行信贷审批

阶段:贷前风控 — 申请评分(Application Scoring)

解决的问题:传统审批依靠人工审核,一位信贷员每天只能处理 5-10 笔申请,效率低下且标准不统一。AI 信用评分模型可以实时处理海量申请,以统一标准实现 7×24 小时自动审批。

具体案例:某股份制银行在其信用卡发卡业务中部署了基于逻辑回归的信用评分系统。接入人行征信、公积金、社保等多源数据,形成超过 300 个特征变量。模型在 1 秒内完成评分并输出审批决策,将单笔审批成本从 15 元降至 1 元以内,同时将整体不良率控制在 1.5% 以下。

消费金融额度定价

阶段:贷中管理 — 行为评分(Behavior Scoring)与风险定价

解决的问题:不同客户的风险水平差异极大,统一利率会导致低风险客户被高利率“劝退”、高风险客户被低利率“养肥”。AI 信用评分将客户划分为 10-20 个风险等级,实行差异化额度与利率。

具体案例:某头部消费金融公司对存量客户按月滚动评分。评分最高的 10% 客户可获得额度提升 50% 并享受利率 7 折优惠;评分下降超过 30 分的客户触发额度冻结与人工复核。实施后整体资产收益率提升了 18%,不良率下降 0.6 个百分点。

小微企业贷后预警

阶段:贷后管理 — 预警评分(Early Warning System)

解决的问题:小微企业贷款出现风险后往往难以补救,被动催收损耗巨大。信用评分系统可持续监测企业经营数据,提前 1-3 个月识别风险信号,变被动催收为主动干预。

具体案例:某网商银行面向小微商户的信用贷产品,接入商户的收单流水、水电费缴纳、物流发货频次等实时数据。当综合评分跌破阈值时,系统自动推送预警工单至客户经理。上线半年后,该产品的逾期率下降了 22%,且客户满意度不降反升。

Python 演示

python69 行
"""逻辑回归信用评分模型:训练、评估与阈值调优"""import numpy as npfrom sklearn.linear_model import LogisticRegressionfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import roc_auc_score, confusion_matrix  def make_synthetic_data(n_samples=10000, n_features=5, seed=42):    """生成模拟信用样本数据:0为好客户,1为违约客户"""    rng = np.random.RandomState(seed)    X = rng.normal(0, 1, (n_samples, n_features))    # 真实权重:前两维决定性,后三维是噪声    true_w = np.array([1.5, 1.2, 0.0, 0.0, 0.0])    logits = X @ true_w + rng.normal(0, 0.5, n_samples)    prob = 1 / (1 + np.exp(-logits))    y = (prob > 0.7).astype(int)    # 模拟类别不均衡:好客户占比约 95%    while y.mean() < 0.04:        y = (prob > rng.uniform(0.65, 0.8)).astype(int)    return X, y  def train_model(X, y):    """训练逻辑回归模型并返回模型与评估指标"""    X_train, X_test, y_train, y_test = train_test_split(        X, y, test_size=0.3, random_state=42, stratify=y    )    model = LogisticRegression(class_weight="balanced", max_iter=1000)    model.fit(X_train, y_train)    y_prob = model.predict_proba(X_test)[:, 1]    auc = roc_auc_score(y_test, y_prob)    tn, fp, fn, tp = confusion_matrix(y_test, y_prob > 0.5).ravel()    ks = np.max(np.abs(        np.cumsum((y_test == 0)[np.argsort(y_prob)]) / (y_test == 0).sum()        - np.cumsum((y_test == 1)[np.argsort(y_prob)]) / (y_test == 1).sum()    ))    return model, auc, ks, (tn, fp, fn, tp)  def find_best_threshold(model, X, y):    """遍历阈值寻找最大化 F1 分数的最优分割点"""    prob = model.predict_proba(X)[:, 1]    thresholds = np.arange(0.1, 0.9, 0.05)    best_t, best_f1 = 0.5, 0.0    for t in thresholds:        pred = (prob > t).astype(int)        tn, fp, fn, tp = confusion_matrix(y, pred).ravel()        precision = tp / (tp + fp) if (tp + fp) > 0 else 0        recall = tp / (tp + fn) if (tp + fn) > 0 else 0        f1 = 2 * precision * recall / (precision + recall) if (precision + recall) > 0 else 0        if f1 > best_f1:            best_f1, best_t = f1, t    return best_t, best_f1  def main():    X, y = make_synthetic_data()    print("样本数:", len(y), "| 违约率:", round(y.mean(), 4))    model, auc, ks, (tn, fp, fn, tp) = train_model(X, y)    print("AUC:", round(auc, 4), "| KS:", round(ks, 4))    print("混淆矩阵 TN/FP/FN/TP:", tn, fp, fn, tp)    best_threshold, best_f1 = find_best_threshold(model, X, y)    print("最优阈值:", round(best_threshold, 2), "| 最佳 F1:", round(best_f1, 4))  if __name__ == "__main__":    main()
目的:展示信用评分建模的完整流程——从构造模拟数据、训练逻辑回归,到评估 AUC/KS 指标,再到实地搜索最优审批阈值。
  1. LogisticRegression(class_weight="balanced", max_iter=1000)用类别权重平衡处理违约样本过少的问题,防止模型“偷懒”全预测为好客户
  2. train_test_split(..., stratify=y)按类别比例分层切分数据,保证训练集和测试集中违约率一致
  3. model.predict_proba(X_test)[:, 1]取第二列,即模型输出的违约概率(P(y=1|x))
  4. roc_auc_score(y_test, y_prob)计算 AUC,衡量模型区分好坏客户的综合能力
  5. confusion_matrix(y_test, y_prob > 0.5)以 0.5 为默认阈值统计四类预测结果,得到混淆矩阵
  6. find_best_threshold遍历 0.1 到 0.9 的所有阈值,用 F1 分数搜索最优审批线

常见误区

误区很多人以为信用评分本质上是衡量一个人有没有钱——收入高的人分数就高,收入低的人分数就低。我工资那么高,凭什么贷款被拒?

正解信用评分衡量的不是“财富水平”,而是“还款意愿和还款能力的历史证据”。一个高收入但频繁逾期、多头借贷的人,分数可能远低于收入只有他一半但从未逾期的人。信用分是“行为记录”的数字化投影,不是“贫富标尺”。

为何常见:人在直觉上容易把“信用”和“金钱”绑定。加上市面上很多“信用财富榜”类营销概念的误导,让这个误区更加根深蒂固。

误区模型评估时肯定 AUC 越高模型越强,选模型时直接挑 AUC 最大的那个,准没错。

正解AUC 高只说明模型的排序能力强(好客户分数普遍高于坏客户),但不代表校准度好。一个模型可能 AUC 高达 0.9,但输出的违约概率整体偏高 20 个百分点,导致实际应用的阈值完全失效。此外,AUC 对样本不均衡不敏感——在违约率仅 2% 的场景下,AUC 表面好看但实际区分能力可能不够。需要结合 KS、PSI、校准曲线等多个维度综合评估。

为何常见:AUC 是最常被报告的指标,学术论文和模型报告中它总是“主角”,学习者容易被单一数字“带偏”,忽视实际业务场景中的复杂评估需求。

误区特征工程嘛,就是拼命加变量。征信报告上几百个字段全部塞进模型,变量越多信息越充分,模型自然越准。

正解特征过多会引入噪声和多重共线性,导致过拟合。信用评分领域特别注重模型的“简洁可解释性”——监管要求银行必须能清晰解释每笔审批的拒绝理由,变量过多会让解释变成“天书”。实践中通常从几百个原始特征中筛选出 10-20 个最有预测力的变量纳入最终模型。特征选择本身就是一门“删繁就简”的艺术。

为何常见:初学机器学习时“特征越多越准”的直觉很普遍,加上有些比赛确实靠堆特征刷分,让人误以为这是工业界常态。

误区逻辑回归输出的是概率,概率大于 0.5 就判定为违约,这是数学上的天然边界,不需要调整。

正解0.5 只是数学上的自然分界点,不是业务上的最优决策点。信贷场景中,把违约客户误判为好客户的代价(一笔本金的损失)远高于把好客户误判为违约的代价(一笔利息的损失)。因此最优阈值通常远低于 0.5,需要通过利润分析或 F1 搜索来确定。比如某个模型在阈值为 0.3 时总利润最高,那么在 0.5 处做审批就是在“烧钱”。

为何常见:教科书和课程中常以 0.5 为默认分类阈值,初学者容易把“默认值”误认为“最优值”,忽视了业务成本不对称这一关键前提。

误区模型训练完、上线运行,指标看着不错,就可以安心做别的事了。后面只需要偶尔看看报表就好。

正解信贷客群随经济周期、监管政策、产品策略不断变化。去年建出来的模型,今年可能因为客群偏移导致 PSI 爆表、KS 衰减。正规风控团队会建立模型监控报表体系:每周看 KS/PSI 趋势、每月做模型体检、每季度评估是否需要重训。模型是有“保质期”的生鲜食品,不是越放越香的陈酿。

为何常见:“训练完成即结束”是机器学习初学者的惯性思维。学校课程到预测为止,而工业界的生命线在部署之后的持续运维。

面试题

Q1. 信用评分的核心目的是什么?

单选题 · easy

  • A.衡量借款人的社会地位
  • B.用数字量化借款人的违约风险← 正确答案
  • C.预测借款人的收入水平
  • D.统计借款人的消费偏好

答案:B。信用评分的本质是把还款能力和还款意愿量化为一个分数,服务于风险决策,B 选项准确。A 和 D 是无关维度,C 把“风险”偷换成了“收入”。

Q2. Sigmoid 函数在逻辑回归中的作用是什么?

单选题 · easy

  • A.把特征向量线性加权求和
  • B.把实数压缩到 0 到 1 之间← 正确答案
  • C.计算特征之间的相关性
  • D.对特征进行标准化处理

答案:B。Sigmoid 函数将线性得分 $w^T x + b$ 映射到 [0,1] 区间,使其可以解释为概率。A 是线性部分做的事,C 和 D 与 Sigmoid 无关。

Q3. WOE 编码中,某箱的 WOE 值为正数表示什么?

单选题 · mid

  • A.该箱中坏客户占比更高
  • B.该箱中好客户占比更高← 正确答案
  • C.该箱中客户数量最多
  • D.该箱中客户收入水平最高

答案:B。WOE 是好客户占比与坏客户占比之比的自然对数,正值说明分子大于分母,即该箱内好客户比例更高,风险相对较低。

Q4. 混淆矩阵中“假负例”(FN)指的是什么情况?

单选题 · mid

  • A.实际好客户被预测为坏客户← 正确答案
  • B.实际坏客户被预测为好客户
  • C.实际坏客户被预测为坏客户
  • D.实际好客户被预测为好客户

答案:A。“假负例”表示模型预测为“负”(不违约、好客户),但实际上他是“正”(违约、坏客户)。这对应着信贷场景中最危险的“漏网之鱼”。

Q5. 处理信用评分中样本不均衡问题的常用方法有哪些?

多选题 · mid

  • A.对少数类样本进行过采样← 正确答案
  • B.对多数类样本进行欠采样← 正确答案
  • C.直接删除少数类样本
  • D.在模型中使用类别权重← 正确答案

答案:ABD。过采样、欠采样和类别权重都是标准处理手段。C 直接删除少数类会丢失关键信息,违约样本恰恰是最需要学习的对象,不可取。

Q6. PSI 指标主要用于监控什么?

单选题 · hard

  • A.模型预测准确率的变化
  • B.客群分布随时间的变化← 正确答案
  • C.模型训练速度的变化
  • D.特征数据量的变化

答案:B。PSI 衡量当前客群分数分布与建模时预期分布之间的偏移程度。它监控的是“客群漂移”,而非准确率、速度或数据量。

Q7. 关于 KS 值,下列说法正确的是?

多选题 · hard

  • A.KS 值越大,说明好坏客户区分度越高← 正确答案
  • B.KS 值的计算需要设定一个固定阈值
  • C.KS 值为 0 表示模型完全没有区分能力← 正确答案
  • D.KS 值与 AUC 衡量的是完全相同的模型特性

答案:AC。KS 是好坏客户累计分布的最大差距,越大区分力越强,为 0 则完全无区分力。B 错误——KS 遍历所有阈值取最大值。D 错误——KS 侧重于最大分离点,AUC 衡量整体排序能力。

Q8. 过拟合在信用评分模型中最典型的表现是什么?

单选题 · hard

  • A.模型在训练集和测试集上表现都差
  • B.模型在训练集表现优异,测试集表现差← 正确答案
  • C.模型在训练集和测试集上表现都优异
  • D.模型在训练集表现差,测试集表现优异

答案:B。过拟合等于模型“背下了”训练数据中的噪声规律,所以训练集表现极好,但对新样本的泛化能力差。A 描述的是欠拟合,C 是理想状态,D 在现实中几乎不可能出现。

Q9. 信用评分中“风险定价”的核心逻辑是?

单选题 · mid

  • A.高风险的客户应获得更高额度
  • B.高风险的客户应支付更高利率← 正确答案
  • C.低风险的客户应被拒绝贷款
  • D.所有客户适用相同利率

答案:B。风险定价的本质是风险补偿——高风险客户违约概率高,金融机构需要通过更高的利率来弥补潜在的违约损失。低风险客户则应享受更低利率。

Q10. 以下哪些措施可以有效防止逻辑回归信用评分模型过拟合?

多选题 · hard

  • A.增加正则化项← 正确答案
  • B.引入更多的特征变量
  • C.使用交叉验证进行模型选择← 正确答案
  • D.减少训练样本数量

答案:AC。正则化能约束权重幅度,交叉验证能帮助选择泛化性能好的超参数,两者都是防过拟合的标准手段。B 引入更多特征通常会加重过拟合,D 减少训练样本会牺牲模型学习能力,反而加剧问题。