数字普惠金融2026 Courseware

第三章

递归回归算法与正则化

在线更新、数值稳定与过拟合控制

本章解释最小二乘闭式解在金融场景下的局限,系统介绍梯度下降、SGD、动量、Adam、递归最小二乘以及 LASSO、Ridge 和 Elastic Net。

01

最小二乘法的局限性

普通最小二乘的闭式解清晰优雅,但在大规模、高维、实时更新的金融场景中存在计算和稳定性问题。

调水温:一次调准很难,边试边调更常见

洗澡时水太冷,你不会先计算一个完美公式再调水龙头。更常见的做法是调一点、试一下,再继续修正。梯度下降和递归更新就是这种“边观察、边调整”的思想。

金融模型面对的是不断变化的数据。客户今天还款、明天经营、下个月行业变化,模型不能永远停留在第一次训练的状态。

当前状态

模型现在的参数和误差

新反馈

新样本告诉我们方向偏在哪里

小步调整

沿着误差下降方向逐步修正

正则化像给模型装“刹车”

一个学生为了记住训练题,把每道题答案都背下来,考试换题就不会了。过拟合也是这样:模型把历史样本里的偶然噪声当成规律。

正则化的作用像刹车:不让模型为了追求训练集完美而把参数调得过于极端。普惠金融中,稳健比漂亮的训练集分数更重要。

过拟合

把噪声当规律

惩罚项

限制模型复杂度

稳健性

换一批客户仍能保持效果

β^=(X⊤X)−1X⊤y\hat\beta=(X^{\top}X)^{-1}X^{\top}y
  • 当特征数量大、样本持续流入或 X⊤XX^{\top}X 接近奇异时,直接求逆会带来较高计算成本和数值不稳定。
  • 金融数据常出现强相关特征,例如多个消费频率指标、多个资产价格指标或多个宏观变量。多重共线性会放大参数估计方差。
  • 递归算法的目标是在不反复重算全部历史样本的情况下,随新数据到来更新参数。

递归算法的核心:不是一次算完,而是不断靠近稳定解

旧课件中提到 Banach 不动点定理,这里不要求把它作为数学分析课程来掌握。需要把握的直觉是:如果一次更新可以把“当前估计”和“真实稳定状态”的距离缩小,那么反复更新以后,参数就会逐步靠近一个稳定解。

xt+1=T(xt),d(T(x),T(y))≤c d(x,y),0<c<1x_{t+1}=T(x_t),\qquad d(T(x),T(y))\leq c\,d(x,y),\quad 0<c<1
  • 上式中,TT 可以理解为“看到新数据后更新模型”的规则。
  • c<1c<1 表示每次更新不会把模型推得更远,而是把误差压缩到原来的一部分。
  • 信用评分里可以理解为:先给新客户一个基础分,之后每次看到还款、逾期、交易流水等信息,就小幅修正评分。

信用评分例子

初始评分可以是 600。若连续按时还款,模型可能先调到 620,再调到 625,再调到 626。越到后面,单次调整越小,说明模型越来越接近该客户的稳定信用水平。

为什么适合金融数据

金融数据不是一次性静止样本。申请、还款、交易、逾期、地域冲击都会持续进入系统。递归方法把模型训练变成“持续校正”的过程,更适合实时风控和在线画像。

递归更新在业务中的优势场景

  • 在线学习:新贷款申请、新还款记录、新交易流水到来后,模型可以小步更新,而不是每次全量重训。
  • 高维稀疏数据:小微信贷中可能有大量行为变量,但多数客户只触发其中少部分特征。递归算法可以配合稀疏表示降低计算和存储压力。
  • 非平稳环境:季节性收入、促销月份、行业冲击会改变数据分布。递归更新比固定模型更容易吸收近期信息。
  • 工程部署:线上模型通常要在响应时间、计算成本和稳定性之间平衡。递归更新的价值不只是数学上优雅,更是工程上可落地。
怎么理解

闭式解适合讲清楚原理,但不一定适合实时业务。金融数据不断进入,模型也需要能逐步更新。

普惠金融例子

线上小微信贷每天新增申请和还款记录,如果每次都从头训练模型,成本高且反应慢;递归更新能更快吸收新信息。

课堂追问

哪些金融场景必须在线更新?哪些场景可以定期离线重训?

02

梯度下降与 SGD

梯度下降把参数估计看作目标函数最小化问题。SGD 每次使用一个或一小批样本更新,适合数据流和大规模训练。

梯度到底是谁的梯度?先找到误差函数

讲梯度下降时,最容易漏掉的一句话是:梯度不是凭空出现的,它是某个损失函数对参数的变化率。在本章中,可以先从学生熟悉的线性回归进入。假设用客户经营流水变化 xix_i 预测贷款后的经营增长 yiy_i,一个最简单的模型写作:

y^i=β0+β1xi\hat y_i=\beta_0+\beta_1x_i

模型预测值和真实值之间的差,就是误差。如果误差有正有负,直接相加会互相抵消,所以最小二乘法把误差平方后再平均,得到 Mean Squared Error,MSE:

ei=yi−y^ie_i=y_i-\hat y_iL(β0,β1)=MSE=1n∑i=1n(yi−β0−β1xi)2L(\beta_0,\beta_1)=\mathrm{MSE}=\frac{1}{n}\sum_{i=1}^{n}\left(y_i-\beta_0-\beta_1x_i\right)^2

因此,梯度下降真正要做的事情是:不断调整 β0\beta_0 和 β1\beta_1,让 MSE 越来越小。这里的“下降”,下降的是误差;这里的“方向”,来自 MSE 对参数的导数或梯度。

导数

导数描述一个变量变化时,函数值变化得多快。单参数模型里,如果横轴是 β1\beta_1,纵轴是 MSE,那么某一点的导数就是那一点切线的斜率。

斜率为正,说明继续增大参数会让误差变大;斜率为负,说明继续增大参数会让误差变小。

梯度

当参数不止一个,例如同时有 β0,β1,β2,…\beta_0,\beta_1,\beta_2,\ldots,就不能只看一条横轴上的斜率。梯度把每个参数方向上的导数放在一起,形成一个向量。

它告诉模型:如果想让误差上升最快,应朝哪个方向走。梯度下降则反过来,沿着负梯度方向走。

最小二乘梯度

对线性回归 MSE 求导,可以得到每个参数应该怎样调整。以斜率参数 β1\beta_1 为例:

∂L∂β1=−2n∑i=1nxi(yi−β0−β1xi)\frac{\partial L}{\partial \beta_1}=-\frac{2}{n}\sum_{i=1}^{n}x_i\left(y_i-\beta_0-\beta_1x_i\right)∇βL=(∂L∂β0,∂L∂β1,…,∂L∂βp)⊤\nabla_{\beta}L=\left(\frac{\partial L}{\partial \beta_0},\frac{\partial L}{\partial \beta_1},\ldots,\frac{\partial L}{\partial \beta_p}\right)^{\top}

这个表达式不用死记。只要记住:误差大、样本特征值大、方向一致时,参数更新幅度就更明显。

MSE误差曲线上的梯度下降路径,展示参数从初始值逐步走向最优值
横轴是模型参数,纵轴是 MSE。左侧初始参数误差很高,切线斜率为负,因此负梯度方向向右;越靠近最优参数,斜率绝对值越小,步子也应该更谨慎。若学习率过大,参数可能越过最低点,在两侧来回震荡。

单样本 SGD:五位客户依次进入模型

为了看清楚“随机”是什么意思,先用一个极简例子。假设用月收入 xx 预测违约状态 yy,只估计一个参数 θ\theta。每来一位客户,就用这一位客户的误差更新一次参数。

J(θ)=12(xθ−y)2J(\theta)=\frac{1}{2}(x\theta-y)^2
θt+1=θt−η xt(xtθt−yt)\theta_{t+1}=\theta_t-\eta\,x_t(x_t\theta_t-y_t)
顺序客户收入 x实际 y当前预测梯度更新后参数
1张三300.30000.90000.0910
2李四510.4550-2.72500.1183
3王五200.23650.47300.1135
4赵六410.4541-2.18370.1354
5孙七100.13540.13540.1340

这个表说明:SGD 的“随机”不是随便乱调,而是不等所有样本凑齐,每次抽取一个样本或一个小批量样本,用当前看到的信息推动参数下降。样本顺序会影响中间路径,但只要学习率合理,整体会向低误差方向移动。

为什么更新公式前面是负号?

梯度指向的是损失函数上升最快的方向。如果目标是让误差变小,就不能顺着梯度走,而要沿着负梯度走。以 f(x)=x2f(x)=x^2 为例,在 x=2x=2 时导数为 f′(2)=4f'(2)=4。

顺着梯度走

xnew=2+0.1×4=2.4x_{new}=2+0.1\times 4=2.4,函数值从 44 增加到 5.765.76,离最低点更远。

沿负梯度走

xnew=2−0.1×4=1.6x_{new}=2-0.1\times 4=1.6,函数值从 44 降到 2.562.56,误差下降。

因此,梯度下降不是“看到梯度就往梯度方向走”,而是先确认目标是最小化损失,再使用负号把参数推向损失更低的位置。

从批量梯度下降到随机梯度下降

批量梯度下降每一步都使用全部样本计算 MSE 和梯度。这样方向比较稳定,但当样本很多、特征很多、数据持续进入时,每一步都很慢。

βt+1=βt−η∇βL(βt)\beta_{t+1}=\beta_t-\eta\nabla_{\beta}L(\beta_t)

随机梯度下降里的 stochastic,意思是每一步不再看全部样本,而是随机抽一条样本或一小批样本来估计梯度。对小微信贷来说,可以理解为:系统不等到攒够全年的申请记录才更新模型,而是每来一批新申请、还款、逾期或补充材料,就做一次小幅修正。

LB(β)=1∣B∣∑i∈B(yi−xi⊤β)2,βt+1=βt−η∇βLB(βt)L_B(\beta)=\frac{1}{|B|}\sum_{i\in B}\left(y_i-x_i^{\top}\beta\right)^2,\quad \beta_{t+1}=\beta_t-\eta\nabla_{\beta}L_B(\beta_t)

这里的 BB 是随机抽到的一小批样本。它带来的梯度不一定等于全样本梯度,所以路径会抖动;但长期看,它通常能以较低成本把参数推向较好的区域。这种“有噪声的修正”是 SGD 的核心特征。

学习率太小

学习率决定每次沿负梯度方向走多远。太小会很稳,但像每次只挪一厘米,训练时间很长;在实时业务中,模型可能来不及吸收新变化。

学习率太大

太大会让参数一步跨过最低点,在误差曲线两边来回跳,甚至越跳越远。表现为训练误差不降反升,或者模型结果非常不稳定。

学习率衰减

常见做法是先用较大学习率快速靠近较好区域,再逐渐减小学习率,进入精细调整。直觉上就是:刚开始方向大致对即可,越接近最低点越要慢。

自适应学习率

Adagrad、RMSProp、Adam会根据不同参数的历史梯度自动调整步长。频繁变化的参数可以走得更谨慎,稀疏但重要的参数可以获得更合适的更新幅度。

θt+1=θt−ηt∇θL(θt)\theta_{t+1}=\theta_t-\eta_t\nabla_{\theta}L(\theta_t)
  • 负号表示沿损失函数下降最快的方向移动。学习率 ηt\eta_t 决定每一步移动幅度。
  • 在实时信用评分系统中,新申请、新还款、新逾期会持续进入系统。SGD 可以逐步吸收新信息,而不必每天完整重训。
  • SGD 的噪声既是缺点也是优点:它会带来震荡,但也可能帮助模型跳出局部不佳区域。
怎么理解

SGD 的直觉是“每看到一条新样本,就把模型方向修正一点”。它不追求一步到位,而追求持续改进。

普惠金融例子

一个农户按月还款,系统每个月都能观察到新的还款行为。SGD 可以把这些新行为逐步纳入风险评分。

课堂追问

如果新数据中有异常值,SGD 为什么可能比批量训练更容易受冲击?

03

动量方法与 Adam

动量方法通过累积历史梯度方向减少震荡;Adam 进一步为不同参数设置自适应学习率。

为什么需要动量?

在真实模型中,损失函数往往不是一条平滑的单参数曲线,而更像一条狭长的山谷。某些方向很陡,某些方向很平。普通梯度下降在陡峭方向上容易左右震荡,在真正通向低误差区域的方向上反而走得慢。

动量的想法来自物理直觉:如果连续几步的梯度都指向类似方向,就说明这个方向比较稳定,可以积累“速度”;如果某个方向一会儿向左、一会儿向右,就让相反方向互相抵消,减少无意义震荡。

gt=∇θL(θt)g_t=\nabla_{\theta}L(\theta_t)vt=γvt−1+ηgt,θt+1=θt−vtv_t=\gamma v_{t-1}+\eta g_t,\quad \theta_{t+1}=\theta_t-v_t

这里 gtg_t 是当前梯度,vtv_t 是积累后的“速度”,γ\gamma 控制过去方向保留多少。若 γ=0\gamma=0,就退化成普通梯度下降;若 γ\gamma 较大,历史方向影响更强,但也要防止冲过最优区域。

MSE 曲线中普通梯度下降与动量更新的方向比较
棕色路径表示普通梯度下降,每一步主要跟随当前梯度;绿色路径表示加入动量后的更新方向,它把当前梯度和历史速度合在一起,稳定方向会被放大,来回震荡的方向会被削弱。图的重点不是精确坐标,而是理解参数更新方向怎样由“当前斜率”扩展为“当前斜率加历史惯性”。

没有动量

每一步只看当前梯度。若样本噪声较大或误差曲面狭长,路径可能来回摆动,训练看起来“不稳”。

加入动量

把过去几步的方向也考虑进去。稳定方向会被加强,反复横跳的方向会被削弱,通常能更快穿过平缓区域。

金融场景直觉

如果连续多个批次的客户数据都显示“现金流下降”对应更高复核概率,模型可以更坚定地调整相关参数;如果信号时正时负,就不应剧烈更新。

和 Adam 的关系

Adam 可以理解为在动量之外,再根据梯度平方的历史大小调整每个参数的学习率。它同时考虑“方向是否稳定”和“这个参数过去震荡是否剧烈”。

vt=γvt−1+η∇θL(θt),θt+1=θt−vtv_t=\gamma v_{t-1}+\eta\nabla_{\theta}L(\theta_t),\quad \theta_{t+1}=\theta_t-v_t
  • 动量项 vtv_t 类似“速度”,能够在稳定方向上加速,在来回震荡方向上相互抵消。
  • Adam 使用一阶矩和二阶矩估计:mt=β1mt−1+(1−β1)gtm_t=\beta_1m_{t-1}+(1-\beta_1)g_t, vt=β2vt−1+(1−β2)gt2v_t=\beta_2v_{t-1}+(1-\beta_2)g_t^2。
  • 参数更新为 θt=θt−1−αm^tv^t+ϵ\theta_t=\theta_{t-1}-\alpha\frac{\hat m_t}{\sqrt{\hat v_t}+\epsilon}。在金融神经网络、文本模型和高维特征模型中较常见。

Adagrad 与 Adam:让不同特征使用不同的学习速度

普通 SGD 或 Momentum 通常给所有参数使用相同的基础学习率。但金融特征的出现频率和波动强度很不一样:年龄、学历等变量比较稳定,交易频率、节假日消费、直播带货收入等变量可能突然变化。自适应优化算法希望对不同参数使用不同的有效步长。

Gt=Gt−1+gt⊙gtG_t=G_{t-1}+g_t\odot g_t
θt=θt−1−ηGt+ϵ⊙gt\theta_t=\theta_{t-1}-\frac{\eta}{\sqrt{G_t}+\epsilon}\odot g_t

Adagrad 会累计历史梯度平方。经常被更新、梯度长期较大的参数,其有效学习率会下降;较少出现的稀疏特征还能保留较大的更新幅度。它适合稀疏特征,但后期可能因为累计量过大而学习率过小。

mt=β1mt−1+(1−β1)gt,vt=β2vt−1+(1−β2)(gt⊙gt)m_t=\beta_1m_{t-1}+(1-\beta_1)g_t,\qquad v_t=\beta_2v_{t-1}+(1-\beta_2)(g_t\odot g_t)
θt=θt−1−ηm^tv^t+ϵ\theta_t=\theta_{t-1}-\eta\frac{\hat m_t}{\sqrt{\hat v_t}+\epsilon}

Adam 同时记录一阶矩估计和二阶矩估计。可以简单理解为:它既有 Momentum 的方向记忆,又有 Adagrad 的自适应步长,但通过指数衰减避免学习率一路衰减到几乎不动。

数据特征SGD + MomentumAdagradAdam课堂理解
稳定连续变量适合适合适合变化慢,步长不宜过激。
稀疏离散变量一般适合适合少见但可能重要的特征,需要保留更新能力。
非平稳波动变量容易滞后后期可能变慢通常更稳需要兼顾近期冲击和历史方向。

按模型生命周期选择算法

训练阶段推荐算法典型场景原因
冷启动Adagrad新县域、新产品初始模型稀疏变量多,少见特征仍需要较快学习。
中期迭代Adam助农贷款季度更新、线上风控迭代同时兼顾方向记忆和自适应步长,响应更稳。
成熟系统SGD + Momentum 或周期学习率全国性稳定风控系统数据量充足、目标稳定时,简单算法更容易监控和部署。
怎么理解

动量像给优化方向加了惯性,Adam 像给每个参数配了自己的步伐。它们解决的是“怎么更稳、更快地走到较好解”。

普惠金融例子

在高维交易特征模型中,有些变量变化频繁,有些变量很稀疏。Adam 的自适应学习率能更灵活地处理这种不均衡。

课堂追问

优化器越复杂,模型一定越好吗?如何用验证集判断?

04

递归最小二乘

递归最小二乘直接更新参数估计和协方差矩阵,适合参数可能随时间缓慢变化的金融时间序列问题。

Kt=Pt−1xtλ+xt⊤Pt−1xt,βt=βt−1+Kt(yt−xt⊤βt−1)K_t=\frac{P_{t-1}x_t}{\lambda+x_t^{\top}P_{t-1}x_t},\quad \beta_t=\beta_{t-1}+K_t(y_t-x_t^{\top}\beta_{t-1})
  • 其中 KtK_t 是增益向量,PtP_t 是参数不确定性的矩阵表达,λ\lambda 是遗忘因子。
  • 遗忘因子小于一时,模型会更重视近期数据,适合市场结构变化、客户行为迁移或宏观周期转换。
  • 递归方法需要监控数值稳定性;异常样本可能快速改变参数,因此要结合异常检测和稳健损失。
怎么理解

递归最小二乘特别适合“关系会慢慢变”的场景。遗忘因子就是告诉模型:近期数据是否应该更重要。

普惠金融例子

利率市场化后,客户对存款利率变化的反应可能变快。用遗忘因子可以让模型更重视近期行为,而不是被多年旧数据拖住。

课堂追问

遗忘因子设得太小或太大,分别会有什么风险?

05

正则化的基本原理

正则化通过在损失函数中加入复杂度惩罚,牺牲少量训练集拟合能力,换取样本外稳定性。

min⁡β  1n∑i=1n(yi−xi⊤β)2+λΩ(β)\min_{\beta}\; \frac{1}{n}\sum_{i=1}^{n}(y_i-x_i^{\top}\beta)^2+\lambda\Omega(\beta)
  • L0L_0 范数计算非零参数个数,直接对应变量选择,但优化困难。
  • L1L_1 范数 ∥β∥1=∑j∣βj∣\|\beta\|_1=\sum_j|\beta_j| 会产生稀疏解,适合自动特征选择。
  • L2L_2 范数 ∥β∥22=∑jβj2\|\beta\|_2^2=\sum_j\beta_j^2 会收缩参数,适合处理多重共线性和提升数值稳定性。
  • L∞L_{\infty} 范数限制最大参数绝对值,可用于控制极端暴露或最大敏感度。
怎么理解

正则化可以理解成给模型“降噪”和“收敛”。金融模型宁可少抓一点训练集细节,也要在未来样本上稳定。

普惠金融例子

如果一个信用评分模型用了几百个高度相似的交易变量,训练集效果可能很好,但换一个月份就失效。正则化能压制这种脆弱性。

课堂追问

为什么普惠金融模型更需要稳健,而不是只追求训练集准确率?

06

LASSO、Ridge 与 Elastic Net

三类正则化回归分别回答变量筛选、相关变量稳定和“既要筛选又要稳定”的问题。本节完整保留旧课件中关于几何直觉、数学推导、交叉验证和系数路径的要点。

三种正则化的几何直觉

旧课件中的三张图非常重要:LASSO、Ridge、Elastic Net 不只是公式不同,它们对参数空间施加的“约束形状”不同。形状不同,会直接影响系数是否容易变成 0、相关变量是否会被一起保留。

LASSO 的菱形约束

β₁β₂尖角更容易碰到坐标轴

菱形有尖角,最优解容易落在坐标轴上,因此某些系数会被压成 0。

Ridge 的圆形约束

β₁β₂平滑收缩,不偏爱坐标轴

圆形没有尖角,系数会被整体拉小,但通常不会精确归零。

Elastic Net 的折中约束

β₁β₂兼顾尖角稀疏与圆形稳定

它把 L1 的变量筛选和 L2 的稳定收缩放在一起,通过 α\alpha 调节比例。

读图方式

把误差函数的等高线想成一圈圈椭圆。椭圆第一次碰到约束边界的位置,就是惩罚后的估计点。碰到尖角时,某个坐标可能正好为 0;碰到圆弧时,两个坐标通常都非零但更小。

LASSO:L1 正则化与变量筛选

LASSO 的目标是在拟合误差之外加入 L1L_1 惩罚。它最重要的特点是稀疏性:部分系数会被压到 0,因此可用于自动特征选择。

完整推导步骤

第一步,写出目标函数:

J(β)=12n∑i=1n(xi⊤β−yi)2+λ∥β∥1J(\beta)=\frac{1}{2n}\sum_{i=1}^{n}(x_i^{\top}\beta-y_i)^2+\lambda\|\beta\|_1

第二步,对平滑的平方损失部分求梯度:

∇β(12n∑i=1n(xi⊤β−yi)2)=1nX⊤(Xβ−y)\nabla_{\beta}\left(\frac{1}{2n}\sum_{i=1}^{n}(x_i^{\top}\beta-y_i)^2\right)=\frac{1}{n}X^{\top}(X\beta-y)

第三步,处理 L1L_1 项。由于绝对值函数在 0 点不可导,所以使用次梯度:

∂∥β∥1={s∈Rp∣sj=sign⁡(βj)  if βj≠0,  sj∈[−1,1]  if βj=0}\partial\|\beta\|_1=\left\{s\in\mathbb{R}^p\mid s_j=\operatorname{sign}(\beta_j)\;\text{if }\beta_j\neq0,\;s_j\in[-1,1]\;\text{if }\beta_j=0\right\}

第四步,写出一阶最优性条件。由于目标函数包含不可导项,这里使用 KKT / 次梯度条件:

1nX⊤(Xβ−y)+λs=0,s∈∂∥β∥1\frac{1}{n}X^{\top}(X\beta-y)+\lambda s=0,\qquad s\in\partial\|\beta\|_1

逐坐标展开,第 jj 个变量满足:

1nxj⊤(Xβ−y)+λsj=0\frac{1}{n}x_j^{\top}(X\beta-y)+\lambda s_j=0

第五步,在坐标下降中令部分残差 r=y−X−jβ−jr=y-X_{-j}\beta_{-j},得到软阈值更新:

βjnew=S(1nxj⊤r,λ)\beta_j^{new}=S\left(\frac{1}{n}x_j^{\top}r,\lambda\right)
S(z,λ)=sign⁡(z)max⁡{∣z∣−λ,0}S(z,\lambda)=\operatorname{sign}(z)\max\{|z|-\lambda,0\}

第六步,解释为什么会归零:如果 ∣1nxj⊤r∣≤λ\left|\frac{1}{n}x_j^{\top}r\right|\leq\lambda,软阈值函数直接给出 βjnew=0\beta_j^{new}=0;如果信号超过阈值,系数保留但会向 0 收缩一个幅度。

交叉验证选择 lambda

  • 标准化全部特征,截距项通常不惩罚。
  • 设定 KK 折交叉验证,例如 K=5K=5 或 K=10K=10。
  • 构造从 λmax\lambda_{max} 到 λmin\lambda_{min} 的对数序列,可使用 warm-start 沿路径求解。
  • 每个 λ\lambda 下在训练折拟合,在验证折计算 MSE、MAE、ROC-AUC 等指标。
  • 选择验证指标最优的 λ∗\lambda^*,也可用 1-SE 规则选择更简洁的模型。

系数路径与普惠金融例子

绘制 βj(λ)\beta_j(\lambda) 随 log⁡(λ)\log(\lambda) 变化的路径,可以直观看到哪些变量最先被裁撤。虚拟示例中,HOLIDAY_ACTIVITY 可能先归零,PROMO_COUNT 和 INQUIRIES 随后归零,DEFAULTS、DTI、LATE_30 等稳定风险变量保留到较大的 λ\lambda。

在小微信贷评分中,LASSO 适合从大量候选变量中形成较简洁的变量清单,便于向业务人员解释。但强相关变量组中,它可能任意保留一个、压掉其他,导致信息损失。

Ridge:L2 正则化与稳定收缩

Ridge 不直接做变量筛选,而是把所有系数整体拉小。它适合特征高度相关、矩阵接近奇异、预测稳定性比变量稀疏性更重要的场景。

完整推导步骤

第一步,写出目标函数:

J(β)=12n∥Xβ−y∥22+λ∥β∥22J(\beta)=\frac{1}{2n}\|X\beta-y\|_2^2+\lambda\|\beta\|_2^2

第二步,平方损失部分的梯度为:

∇β(12n∥Xβ−y∥22)=1nX⊤(Xβ−y)\nabla_{\beta}\left(\frac{1}{2n}\|X\beta-y\|_2^2\right)=\frac{1}{n}X^{\top}(X\beta-y)

第三步,L2L_2 惩罚项是平滑可导的:

∇β(λ∥β∥22)=2λβ\nabla_{\beta}(\lambda\|\beta\|_2^2)=2\lambda\beta

第四步,令总梯度为 0,得到一阶条件:

1nX⊤(Xβ−y)+2λβ=0\frac{1}{n}X^{\top}(X\beta-y)+2\lambda\beta=0

整理后得到 Ridge 的线性方程:

(1nX⊤X+2λI)β=1nX⊤y\left(\frac{1}{n}X^{\top}X+2\lambda I\right)\beta=\frac{1}{n}X^{\top}y

因此闭式解为:

β=(1nX⊤X+2λI)−11nX⊤y\beta=\left(\frac{1}{n}X^{\top}X+2\lambda I\right)^{-1}\frac{1}{n}X^{\top}y

第五步,坐标下降中令部分残差 r(j)=y−∑k≠jxkβkr^{(j)}=y-\sum_{k\neq j}x_k\beta_k,第 jj 维更新为:

βj←1nxj⊤r(j)1n∥xj∥22+2λ\beta_j\leftarrow\frac{\frac{1}{n}x_j^{\top}r^{(j)}}{\frac{1}{n}\|x_j\|_2^2+2\lambda}

如果特征已标准化,∥xj∥22=n\|x_j\|_2^2=n,则进一步简化为:

βj←1nxj⊤r(j)1+2λ\beta_j\leftarrow\frac{\frac{1}{n}x_j^{\top}r^{(j)}}{1+2\lambda}

第六步,解释 Ridge 为什么稳定:分母中的 2λ2\lambda 会连续压缩系数,但没有软阈值截断,因此通常不会产生精确的 0 系数。

交叉验证与路径说明

  • 同样需要先标准化特征,截距项通常不惩罚。
  • 在 log⁡(λ)\log(\lambda) 维度取 50 到 100 个候选点做交叉验证。
  • 可用 1-SE 规则选择更稳定的解,而不是只追求验证集分数的微小提升。
  • 画 Ridge 系数路径时,多数系数会平滑向 0 收缩;强相关变量组往往同步收缩。

普惠金融例子

例如 LATE_30、LATE_60、LATE_90 同时描述逾期风险,相关性很强。Ridge 不会随意删掉某一个,而是把它们的权重一起压小,避免某个变量因为样本扰动突然变得特别大。这对跨月份、跨地区稳定部署很重要。

Elastic Net:L1 加 L2 的折中

Elastic Net 同时加入 L1L_1 和 L2L_2 惩罚。它既可以保留 LASSO 的变量筛选能力,也可以借助 Ridge 稳定相关变量组。

完整推导步骤

第一步,写出目标函数:

J(β)=12n∥Xβ−y∥22+λ[α∥β∥1+(1−α)∥β∥22]J(\beta)=\frac{1}{2n}\|X\beta-y\|_2^2+\lambda\left[\alpha\|\beta\|_1+(1-\alpha)\|\beta\|_2^2\right]

其中 α∈(0,1]\alpha\in(0,1]。当 α→1\alpha\to1 时接近 LASSO;当 α→0\alpha\to0 时接近 Ridge。

第二步,平方损失部分梯度仍为:

∇β(12n∥Xβ−y∥22)=1nX⊤(Xβ−y)\nabla_{\beta}\left(\frac{1}{2n}\|X\beta-y\|_2^2\right)=\frac{1}{n}X^{\top}(X\beta-y)

第三步,L1L_1 部分使用次梯度:

sj={sign⁡(βj),βj≠0,t∈[−1,1],βj=0.s_j=\begin{cases}\operatorname{sign}(\beta_j),&\beta_j\neq0,\\t\in[-1,1],&\beta_j=0.\end{cases}

第四步,写出 KKT / 次梯度条件:

1nX⊤(Xβ−y)+λαs+2λ(1−α)β=0,s∈∂∥β∥1\frac{1}{n}X^{\top}(X\beta-y)+\lambda\alpha s+2\lambda(1-\alpha)\beta=0,\qquad s\in\partial\|\beta\|_1

第五步,令 zj=1nxj⊤r(j)z_j=\frac{1}{n}x_j^{\top}r^{(j)},得到坐标更新:

βj←S(zj,λα)1n∥xj∥22+2λ(1−α)\beta_j\leftarrow\frac{S(z_j,\lambda\alpha)}{\frac{1}{n}\|x_j\|_2^2+2\lambda(1-\alpha)}
S(z,λα)=sign⁡(z)max⁡{∣z∣−λα,0}S(z,\lambda\alpha)=\operatorname{sign}(z)\max\{|z|-\lambda\alpha,0\}

第六步,解释两个惩罚项如何分工:分子中的软阈值负责把弱变量压到 0;分母中的 2λ(1−α)2\lambda(1-\alpha) 负责把保留下来的变量继续收缩。

交叉验证选择 lambda 与 alpha

  • 先设一组 α\alpha 候选值,例如 0.1,0.3,0.5,0.7,0.90.1,0.3,0.5,0.7,0.9。
  • 每个 α\alpha 下沿 log⁡(λ)\log(\lambda) 做 K 折交叉验证。
  • 如果特征家族强相关,可先考察较小的 α\alpha;如果业务更重视简洁解释,可提高 α\alpha。
  • 最终组合 (α,λ)(\alpha,\lambda) 既要看验证指标,也要看变量保留结果是否符合业务逻辑。

稀疏—稳定路径说明

固定一个 α\alpha 后,绘制系数随 log⁡(λ)\log(\lambda) 变化的路径。部分变量会因为软阈值归零,另一些变量则因 L2L_2 部分平滑收缩。对 LATE_30、LATE_60、LATE_90 这类变量家族,可用同一颜色分组观察是否保留了相关结构。

普惠金融例子

当逾期变量、流水变量和交易活跃度变量高度相关,同时又希望模型不要太复杂时,Elastic Net 通常比单纯 LASSO 更稳,比单纯 Ridge 更简洁。它适合“变量很多 + 共线性强 + 需要一定解释性”的综合场景。

三类正则化方法的业务比较

选择正则化方法时,不要只问“哪个更高级”,而要问“当前业务更需要变量少、预测稳,还是二者兼顾”。

方法惩罚形式是否稀疏共线性处理数值稳定性可解释性适用场景可能不足
Ridgeλ∥β∥22\lambda\|\beta\|_2^2否强强中等p>np>n、强相关、强调稳健预测无法直接做特征选择,系数不为 0 不便简化。
LASSOλ∥β∥1\lambda\|\beta\|_1是较弱中等强高维、需要变量筛选和评分卡解释强共线时可能任意保留一个变量,丢失相关组信息。
Elastic Netλ[α∥β∥1+(1−α)∥β∥22]\lambda[\alpha\|\beta\|_1+(1-\alpha)\|\beta\|_2^2]适中,可控强强较强同时希望“稀疏 + 稳定”的综合场景需要同时调参 λ\lambda 和 α\alpha。
金融应用提示

农户信用评分可以先用 LASSO 形成简洁变量清单;如果逾期、流水、交易行为等变量高度相关,再用 Ridge 或 Elastic Net 提升稳定性。上线前应采用时间切分验证,检查模型是否能跨月份、跨区域泛化。

怎么理解

LASSO 像变量筛选器,Ridge 像稳定器,Elastic Net 像二者之间的调节旋钮。

普惠金融例子

农户信贷中,交易次数、交易金额、收款天数可能共同反映经营活跃度。Elastic Net 比单纯 LASSO 更可能保留这一组业务含义。

课堂追问

如果模型要给客户经理解释,变量越少是否一定越好?如果变量少但不稳定,风险在哪里?

07

本章练习

  • 解释为什么高维信用评分模型容易过拟合,并说明 L1L_1 与 L2L_2 惩罚的不同作用。
  • 为实时风控场景设计一个递归更新流程,写出数据进入、参数更新、异常监控和人工复核四个环节。
  • 比较 SGD、Momentum 和 Adam 在收敛速度、稳定性和可解释性上的差异。
怎么理解

练习题建议用真实业务语言回答,不要只写公式。先说明业务场景,再说明变量、假设和可能的失败点。

普惠金融例子

例如“欺诈识别”的回答可以从低欺诈率、误报成本、人工审核资源和客户体验四个角度展开。

课堂追问

如果你的模型把很多正常客户误判为高风险,对普惠金融目标有什么影响?