Skip to content

数学原理

本章目标

  1. 理解逻辑回归为什么虽然叫"回归",本质上却是通过 Sigmoid 做概率输出的分类模型。
  2. 理解线性得分、Sigmoid、对数几率、交叉熵损失和梯度在当前实现中的数学角色。
  3. 理解正则化机制与 C 参数(λ=1/C)的关系——C 越大正则越弱。

重点方法与概念速览

名称类型作用
线性得分 z=wTx+b模型部分先对输入特征做线性加权求和,是 Sigmoid 的输入
Sigmoid 函数 σ(z)=11+ez概率映射把线性得分 z(,+) 压缩到 (0,1) 概率区间
对数几率 lnP1P解释方式逻辑回归对对数几率建模为 wTx+b,使得概率比取对数后呈线性
交叉熵损失 L优化目标衡量预测概率与真实标签的差异,最小化等价于极大似然估计
梯度 wL优化信息决定参数 w 沿哪个方向更新能最快降低损失
正则化与 C超参数机制C 是正则化强度 λ 的倒数——C 越小正则越强,系数越收缩

1. 逻辑回归的核心思想

逻辑回归先计算一个线性得分,再把这个得分通过 Sigmoid 压缩成概率输出。因此它虽然名字里有"回归",最终目标是做分类概率估计。

线性部分

z=wTx+b=j=1dwjxj+b

Sigmoid 函数

σ(z)=11+ez

Sigmoid 的性质:

  • z+σ(z)1(十分确信正类)
  • z=0σ(z)=0.5(最不确定)
  • zσ(z)0(十分确信负类)

概率输出

P(y=1x)=σ(wTx+b)=11+e(wTx+b)

理解重点

  • 当前模型不是直接输出"正类/负类",而是先输出正类概率。
  • 这也是为什么当前流水线可以直接调用 predict_proba(...) 来绘制 ROC 曲线。
  • 逻辑回归的核心优势:分类结果和概率解释天然结合——输出不只是标签,还有置信度。

2. 对数几率与线性决策边界

逻辑回归对对数几率(log-odds)建模为线性函数:

lnP(y=1x)P(y=0x)=wTx+b=z

P(y=1)=P(y=0)=0.5 时,对数几率为 0,由此得到决策边界:

wTx+b=0

这是一个 d 维空间中的超平面,w 是法向量,b 控制超平面的偏移。

理解重点

  • 决策边界 wTx+b=0 是一张平坦的超平面——这就是"线性"的来源。
  • wj>0 意味着特征 xj 增大时会推高正类概率;wj<0 则压低正类概率。
  • 这也是为什么 coef_intercept_ 在逻辑回归里很有解释价值——它们直接描述了边界的位置和方向。

3. 极大似然与交叉熵损失

对训练集 {(xi,yi)}i=1N,假设样本独立,似然函数为:

L(w,b)=i=1Np^iyi(1p^i)1yi

其中 p^i=σ(wTxi+b)。取负对数并除以 N 后,得到交叉熵损失(对数损失):

L(w,b)=1Ni=1N[yilnp^i+(1yi)ln(1p^i)]

理解重点

  • 逻辑回归不是靠最小二乘(MSE),而是靠极大似然 / 交叉熵目标来训练——这使它更适合概率建模。
  • 与 MSE 不同,交叉熵对概率接近 0 或 1 时的错误预测惩罚很大(lnp^p^0),迫使模型给出更可信的概率估计。
  • 当前数学章节应明确这一点,避免和线性回归的损失函数混淆。

4. 梯度推导

交叉熵损失对权重 wj 的偏导数形式非常简洁:

Lwj=1Ni=1N(p^iyi)xij

向量形式:

wL=1NXT(p^y),bL=1Ni=1N(p^iyi)

理解重点

  • 梯度形式非常直观:预测概率与真实标签的误差 (p^iyi),乘上对应特征值 xij,汇总起来更新参数。
  • 可以把它理解为"当前模型在哪些方向上高估或低估了正类概率"——误差大的方向更新靠前。
  • 当前源码虽然没有手写梯度下降(使用 lbfgs 优化器封装),但理解梯度形式有助于理解优化行为。

5. 正则化与 C 参数

当前训练代码默认使用 L2 正则化。加入 L2 正则化后的完整损失函数为:

Lreg(w,b)=L(w,b)+12Cw22

其中 w22=j=1dwj2

关键关系λ=1/C,其中 λ 是传统正则化强度系数,C 是 sklearn 使用的正则化强度倒数。

参数速览

参数名类型说明示例取值
penaltystrNone正则化类型。"l2"|w|22 惩罚,系数趋于均匀收缩;"l1"|w|1 惩罚,产生稀疏解;"elasticnet" 为两者混合;None 不做正则化。默认为 "l2""l2""l1""elasticnet"None
Cfloat正则化强度的倒数,数学上 λ=1/CC 越大 → 正则越弱 → 模型越自由;C 越小 → 正则越强 → 系数越收缩趋于 0。默认为 1.00.011.0100.0
l1_ratiofloatL1 正则化在 elasticnet 中的混合比例。仅当 penalty='elasticnet' 时生效。penalty=ρ|w|1+(1ρ)|w|22。默认为 None0.00.51.0

理解重点

  • C 是正则化强度的倒数——这是当前逻辑回归分册最容易写反的地方,文档必须明确。
  • C0λ):强正则,系数趋近于 0,模型趋近于常数预测(仅剩截距起作用)。
  • Cλ0):弱正则,系数自由增长,容易过拟合。
  • 当前默认 C=1.0penalty='l2',是 sklearn 的保守默认值。

6. 为什么标准化会影响训练与解释

逻辑回归使用梯度优化器(lbfgs)最小化交叉熵损失,特征尺度差异会导致:

  1. 不同维度的梯度量级差异巨大——优化器收敛困难
  2. 正则化惩罚不均匀——大值特征的系数被过度惩罚
  3. coef_ 之间不可直接比较——无法判断哪个特征更重要

标准化 xi=(xiμi)/σi 后,所有特征均值为 0、标准差为 1,以上问题全部消除。

理解重点

  • 标准化对逻辑回归是有实益的——不是可有可无的工程惯性。
  • 标准化后 wj 的大小可以粗略反映特征 j 的相对重要性(因为各特征尺度统一)。
  • 这也是当前流水线必须在训练前执行 StandardScaler 的原因。

7. 多分类扩展:Softmax

逻辑回归可以自然扩展到多分类(Softmax 回归 / 多项逻辑回归)。对 K 个类别,每个类别有自己的权重向量 wk

P(y=kx)=ewkTx+bkj=1KewjTx+bj

二分类退化为 Sigmoid:当 K=2 时,Softmax 等价于 Sigmoid。

理解重点

  • 当前数学章节保留此扩展以建立完整视角。
  • 当前工程实现使用的是二分类数据和二分类逻辑回归,因此数据、模型、训练、评估章节都应聚焦二分类场景。
  • 如果将来需要多分类,sklearn 的 LogisticRegression 已原生支持(通过 multi_class='multinomial')。

8. 数学原理如何映射到当前源码

以下表格将本章涉及的数学概念与当前仓库的代码实现一一对应:

数学概念数学符号/公式代码实现
线性得分z=wTx+bmodel.decision_function(X)
Sigmoid 概率σ(z)=1/(1+ez)model.predict_proba(X)[:, 1]
决策边界wTx+b=0model.coef_ × X + model.intercept_ = 0
权重系数wRdmodel.coef_
截距bRmodel.intercept_
交叉熵损失L=1N[yilnp^i+(1yi)ln(1p^i)]solver='lbfgs' 内部优化目标
L2 正则化12C|w|22penalty='l2'C=1.0
正则化倒数λ=1/CC=1.0λ=1.0
优化器solver='lbfgs'

常见坑

  1. 把逻辑回归误当成线性回归加阈值——本质上是线性得分 + Sigmoid 概率映射 + 交叉熵优化。
  2. 忽略交叉熵与极大似然的等价关系——最小化交叉熵 = 最大化对数似然。
  3. C 的含义写反——C 是正则化强度的倒数,C 越大正则越弱,不是"正则化系数"。
  4. 忽略标准化对优化和系数解释的影响——梯度优化器对特征尺度敏感,不标准化会导致收敛困难和系数不可比。

小结

  • 逻辑回归的核心数学链:线性得分 z=wTx+b → Sigmoid 概率 σ(z) → 交叉熵损失 L → 梯度下降优化 → 正则化控制复杂度。
  • coef_intercept_ 直接决定线性决策边界 wTx+b=0 的位置——wj>0 推高正类概率,wj<0 压低正类概率。
  • Cλ 的倒数(λ=1/C),C 越大正则越弱——这个方向是当前文档必须反复强调的重点。
  • 当前源码默认使用 L2 正则化 + lbfgs 优化器的二分类逻辑回归,与当前高维近线性可分数据高度匹配。