数学原理
本章目标
- 理解逻辑回归为什么虽然叫"回归",本质上却是通过 Sigmoid 做概率输出的分类模型。
- 理解线性得分、Sigmoid、对数几率、交叉熵损失和梯度在当前实现中的数学角色。
- 理解正则化机制与
C参数()的关系—— C越大正则越弱。
重点方法与概念速览
| 名称 | 类型 | 作用 |
|---|---|---|
| 线性得分 | 模型部分 | 先对输入特征做线性加权求和,是 Sigmoid 的输入 |
| Sigmoid 函数 | 概率映射 | 把线性得分 |
| 对数几率 | 解释方式 | 逻辑回归对对数几率建模为 |
| 交叉熵损失 | 优化目标 | 衡量预测概率与真实标签的差异,最小化等价于极大似然估计 |
| 梯度 | 优化信息 | 决定参数 |
正则化与 C | 超参数机制 |
1. 逻辑回归的核心思想
逻辑回归先计算一个线性得分,再把这个得分通过 Sigmoid 压缩成概率输出。因此它虽然名字里有"回归",最终目标是做分类概率估计。
线性部分
Sigmoid 函数
Sigmoid 的性质:
时 (十分确信正类) 时 (最不确定) 时 (十分确信负类)
概率输出
理解重点
- 当前模型不是直接输出"正类/负类",而是先输出正类概率。
- 这也是为什么当前流水线可以直接调用
predict_proba(...)来绘制 ROC 曲线。 - 逻辑回归的核心优势:分类结果和概率解释天然结合——输出不只是标签,还有置信度。
2. 对数几率与线性决策边界
逻辑回归对对数几率(log-odds)建模为线性函数:
当
这是一个
理解重点
- 决策边界
是一张平坦的超平面——这就是"线性"的来源。 意味着特征 增大时会推高正类概率; 则压低正类概率。 - 这也是为什么
coef_和intercept_在逻辑回归里很有解释价值——它们直接描述了边界的位置和方向。
3. 极大似然与交叉熵损失
对训练集
其中
理解重点
- 逻辑回归不是靠最小二乘(MSE),而是靠极大似然 / 交叉熵目标来训练——这使它更适合概率建模。
- 与 MSE 不同,交叉熵对概率接近 0 或 1 时的错误预测惩罚很大(
当 ),迫使模型给出更可信的概率估计。 - 当前数学章节应明确这一点,避免和线性回归的损失函数混淆。
4. 梯度推导
交叉熵损失对权重
向量形式:
理解重点
- 梯度形式非常直观:预测概率与真实标签的误差
,乘上对应特征值 ,汇总起来更新参数。 - 可以把它理解为"当前模型在哪些方向上高估或低估了正类概率"——误差大的方向更新靠前。
- 当前源码虽然没有手写梯度下降(使用
lbfgs优化器封装),但理解梯度形式有助于理解优化行为。
5. 正则化与 C 参数
当前训练代码默认使用 L2 正则化。加入 L2 正则化后的完整损失函数为:
其中
关键关系:
参数速览
| 参数名 | 类型 | 说明 | 示例取值 |
|---|---|---|---|
penalty | str 或 None | 正则化类型。"l2" 对 "l1" 对 "elasticnet" 为两者混合;None 不做正则化。默认为 "l2" | "l2"、"l1"、"elasticnet"、None |
C | float | 正则化强度的倒数,数学上 1.0 | 0.01、1.0、100.0 |
l1_ratio | float | L1 正则化在 elasticnet 中的混合比例。仅当 penalty='elasticnet' 时生效。None | 0.0、0.5、1.0 |
理解重点
C是正则化强度的倒数——这是当前逻辑回归分册最容易写反的地方,文档必须明确。( ):强正则,系数趋近于 0,模型趋近于常数预测(仅剩截距起作用)。 ( ):弱正则,系数自由增长,容易过拟合。 - 当前默认
C=1.0、penalty='l2',是 sklearn 的保守默认值。
6. 为什么标准化会影响训练与解释
逻辑回归使用梯度优化器(lbfgs)最小化交叉熵损失,特征尺度差异会导致:
- 不同维度的梯度量级差异巨大——优化器收敛困难
- 正则化惩罚不均匀——大值特征的系数被过度惩罚
coef_之间不可直接比较——无法判断哪个特征更重要
标准化
理解重点
- 标准化对逻辑回归是有实益的——不是可有可无的工程惯性。
- 标准化后
的大小可以粗略反映特征 的相对重要性(因为各特征尺度统一)。 - 这也是当前流水线必须在训练前执行
StandardScaler的原因。
7. 多分类扩展:Softmax
逻辑回归可以自然扩展到多分类(Softmax 回归 / 多项逻辑回归)。对
二分类退化为 Sigmoid:当
理解重点
- 当前数学章节保留此扩展以建立完整视角。
- 当前工程实现使用的是二分类数据和二分类逻辑回归,因此数据、模型、训练、评估章节都应聚焦二分类场景。
- 如果将来需要多分类,sklearn 的
LogisticRegression已原生支持(通过multi_class='multinomial')。
8. 数学原理如何映射到当前源码
以下表格将本章涉及的数学概念与当前仓库的代码实现一一对应:
| 数学概念 | 数学符号/公式 | 代码实现 |
|---|---|---|
| 线性得分 | model.decision_function(X) | |
| Sigmoid 概率 | model.predict_proba(X)[:, 1] | |
| 决策边界 | model.coef_ × X + model.intercept_ = 0 | |
| 权重系数 | model.coef_ | |
| 截距 | model.intercept_ | |
| 交叉熵损失 | solver='lbfgs' 内部优化目标 | |
| L2 正则化 | penalty='l2',C=1.0 | |
| 正则化倒数 | C=1.0 → | |
| 优化器 | — | solver='lbfgs' |
常见坑
- 把逻辑回归误当成线性回归加阈值——本质上是线性得分 + Sigmoid 概率映射 + 交叉熵优化。
- 忽略交叉熵与极大似然的等价关系——最小化交叉熵 = 最大化对数似然。
- 把
C的含义写反——C是正则化强度的倒数,越大正则越弱,不是"正则化系数"。 - 忽略标准化对优化和系数解释的影响——梯度优化器对特征尺度敏感,不标准化会导致收敛困难和系数不可比。
小结
- 逻辑回归的核心数学链:线性得分
→ Sigmoid 概率 → 交叉熵损失 → 梯度下降优化 → 正则化控制复杂度。 coef_与intercept_直接决定线性决策边界的位置—— 推高正类概率, 压低正类概率。 C是的倒数( ), 越大正则越弱——这个方向是当前文档必须反复强调的重点。 - 当前源码默认使用 L2 正则化 +
lbfgs优化器的二分类逻辑回归,与当前高维近线性可分数据高度匹配。