Logistic 回归 · 对数几率回归

Logistic 回归:用一条直线算概率

分类问题的第一课。线性回归直出的是数值,Logistic 回归把线性分数 z = w₁x₁ + w₂x₂ + b 塞进 Sigmoid,压成 0 到 1 的概率——p > 0.5 判正类,那道 p = 0.5 的分界线就是决策边界。训练它、看边界移动、拆开 Sigmoid 和交叉熵,最后理解它为什么「名字叫回归,干的是分类」。

分类画布 · 粉色为正类概率区

蓝点 = 负类(y=0),粉点 = 正类(y=1);红色直线是 p = 0.5 的决策边界,粉色半平面被模型判为正类。

Sigmoid 函数 · 概率是怎么压出来的

控制台

迭代轮数0
训练准确率—
对数损失—
参数 w₁ / w₂ / b—

原理:对数几率回归

Logistic 回归先用线性函数打分,再用 Sigmoid 函数把分数压成概率:

z = w₁x₁ + w₂x₂ + b  ,  p = σ(z) = 1 / (1 + e−z)

训练目标是最小化对数损失(交叉熵)——预测概率越接近真实标签,损失越小:

L = −(1/n) Σ [ yᵢ ln pᵢ + (1−yᵢ) ln(1−pᵢ) ]

它对 w 的梯度恰好是 (pᵢ − yᵢ)xᵢ 的平均——和线性回归的梯度下降长得几乎一样,只是外面套了层 Sigmoid。这不是巧合:Sigmoid 是「把回归变成伯努利概率」的自然选择(Sigmoid 正是 logit 函数的反函数)。

名字叫「回归」,干的是分类

  • 对数几率的视角。对 σ(z) 取反可得 z = ln(p/(1−p)):模型实际上在用线性函数拟合「对数几率(log-odds)」。所以它输出的 p 不是拍脑袋的分数,而是有统计含义的置信度——营销里「点击率预估」用的就是它。
  • 为什么不用 MSE 训练分类。MSE + Sigmoid 的损失面非凸(容易卡在半山腰),且 Sigmoid 两端导数趋零会让梯度消失;交叉熵的梯度恰是 (p−y),干净又凸。这就是分类任务几乎都用交叉熵的原因。
  • 概率要校准才有意义。输出 0.9 就意味着「九成把握」吗?未必——过拟合的模型可能过度自信。评估时除了准确率,还应看概率校准曲线(本站评估页的 ROC 是排序质量,校准是另一回事)。

三个值得动手验证的现象

  • 决策边界是条直线。p = 0.5 等价于 z = 0,而 z 是线性的——所以无论怎么训练,边界永远是直线。弯的边界它画不出来,这正是后面决策树、SVM 核技巧、神经网络存在的理由。
  • 边界垂直于 w 向量。注意看红色直线的方向随 w₁/w₂ 变化——w 指向正类那一侧。系数解释由此而来:w 越大,该特征越「投正类一票」;w 为负则投反类一票。
  • 换一批数据再训练。两类离得越远收敛越快(间隔大、梯度信号强);把学习率拉到 2.0,损失曲线会抖动但通常仍能收敛——Sigmoid 的梯度天生温和,不像回归页那样一拉就爆炸。

多分类怎么办

两种标准扩展:OvR(一对其余)训练 K 个「本类 vs 非本类」的 Logistic,各自出概率取最大;Softmax 回归把 Sigmoid 推广成同时输出 K 类概率(本站朴素贝叶斯页的三分类决策区域就是多分类的样子)。两者在小数据上表现接近,工程里 softmax 更常见。

动手实验:训练到收敛后,把某次训练的准确率和对数损失同时记下;再换一批数据训练——边界角度变了,但「直线」这个性质永远不变。想看到弯边界?去神经网络页。

知识点拆解:把 Logistic 学扎实

函数

Sigmoid 的三个性格

输出恒在 (0,1);z>0 押正类、z<0 押负类;两端饱和(|z| 很大时梯度≈0)。饱和既是它稳定的来源,也是深层网络梯度消失的祸根。

对应演示:下半屏 Sigmoid 曲线
损失

交叉熵惩罚「自信的错误」

真实为 1 而模型给 p=0.01 时,交叉熵 ≈ 4.6(巨大);MSE 只给 0.98。交叉熵对「自信且错」的惩罚重得多——这正是分类需要的性格。

对应演示:看对数损失随训练下降
几何

边界、方向、距离三件套

边界是 z=0 的等值线;w 决定边界法向;|z| 越大离边界越远、概率越接近 0/1。一句话:几何上它是「带概率刻度的直线分类器」。

对应演示:边界与粉色半平面
局限

它画不出「弯」与「圈」

异或数据(对角两类)能把 Logistic 逼到 50% 准确率。突破方法:手工加交叉特征、换决策树/SVM、或直接上带隐藏层的神经网络。

对应演示:神经网络页 · 异或数据
  • Sigmoid σ — 把实数压到 (0,1) 的 S 形函数
  • logit — ln(p/(1−p)),Sigmoid 的反函数
  • 交叉熵 — 分类标准损失,梯度 = (p−y)
  • 决策边界 — p=0.5 对应的 z=0 等值线
  • OvR — 多分类的「一对其余」策略
  • Softmax — Sigmoid 的 K 类推广

期末高频问答

  • 为什么分类不用 MSE?两点:MSE+Sigmoid 非凸(梯度下降可能停在半山腰);Sigmoid 饱和区梯度趋零会让训练停滞。交叉熵两者皆无,且梯度形式简洁 (p−y)。
  • 输出的概率可以直接当真实概率用吗?要小心。模型没校准时 0.7 未必等于 70% 的正确率;需要校准(Platt scaling / isotonic)或至少在验证集上检查。
  • 它和「最大熵模型」是什么关系?同一件事的两个名字:从信息论最大化熵出发、从概率论伯努利建模出发,得到的都是同一个模型——期末卷喜欢考这个「殊途同归」。