第 4 步 · 从回归到分类
逻辑回归(二分类)Logistic Regression
不是预测数值,而是判断"是 A 还是 B"
8 分钟
阅读 + 实操
1 个
交互演示
初级
难度
逻辑回归 · 交互演示
损失 BCE--
准确率--
步数0
为什么学这步?
逻辑回归把"预测数值"变成"判断类别"——垃圾邮件识别、疾病诊断、信用审核,本质都是"是 A 还是 B"的二分类。它用 Sigmoid 把打分压缩成概率,再用交叉熵衡量概率与真实标签的差距,决策边界就是概率=0.5 的那条线。这是机器学习从"回归"跨入"分类"的关键一步,也是后续多层网络和多分类的基础。
📌 发生了什么
- Sigmoid 把线性打分 z = w₁x + w₂y + b 压缩成 (0,1) 的概率。
- 交叉熵损失衡量预测概率与真实标签的差距,梯度下降更新 w₁、w₂、b。
- 决策边界(概率=0.5)是一条直线,随训练逐步分开两类点。
⚠️ 常见陷阱
- 逻辑回归是"回归"?名字误导,它其实是分类算法。
- 准确率高就等于模型好?不一定,类别不平衡时会有假象。
- 决策边界一定是直线?对原始特征是的,弯曲边界需要多项式或神经网络。
✅ 本章小结
- 任务转变:从回归(预测数值)到分类(判断类别)。
- Sigmoid:σ(z) = 1/(1+e⁻ᶻ),把打分压缩成 (0,1) 的概率。
- 交叉熵损失:比 MSE 更适合分类,决策边界是概率=0.5 的直线。
📐 Sigmoid 与交叉熵梯度推导
逻辑回归用 sigmoid 将线性输出压缩到 (0,1) 区间表示概率,再用交叉熵作为损失函数。以下是完整推导。
交叉熵损失衡量预测概率分布与真实分布的差异:
对 z 求导(链式法则),sigmoid 的导数 σ'(z)=σ(z)(1−σ(z)) 恰好约简:
因此参数 w 的梯度形式极其简洁(与线性回归的梯度形式一致):
🎛 决策阈值对比
分类阈值决定"多大概率才算正例"。调高则更保守(少报正例),调低则更激进(多报正例)。
| 阈值 | 表现 | 结果 |
|---|---|---|
| τ = 0.3 | 更容易判为正例,几乎不漏报 | 高召回低精确 |
| τ = 0.5 | 精确与召回均衡,默认值 | 推荐 |
| τ = 0.7 | 更保守,只有高概率才判正例 | 高精确低召回 |
| τ = 0.9 | 几乎不判正例,大量漏报 | 过度保守 |
💡 阈值选择取决于业务场景:癌症筛查宁可误诊(低阈值),垃圾邮件宁可放过(高阈值)。
💻 实现要点
Sigmoid + 交叉熵梯度下降核心循环(Python):
import numpy as np
# Sigmoid 函数
def sigmoid(z):
return 1 / (1 + np.exp(-z))
# 交叉熵梯度下降
w, b = 0.0, 0.0
lr = 0.1
for step in range(max_steps):
grad_w, grad_b = 0.0, 0.0
for i in range(n):
z = w * x[i] + b
y_hat = sigmoid(z)
error = y_hat - y[i] # dL/dz = y_hat - y
grad_w += error * x[i]
grad_b += error
grad_w /= n; grad_b /= n
w -= lr * grad_w
b -= lr * grad_b
# 预测:概率 + 阈值判断
prob = sigmoid(w * x_new + b)
label = 1 if prob >= 0.5 else 0
📚 参考文献与延伸阅读
- Bishop, Pattern Recognition and Machine Learning (2006), §4.3 The Logistic Regression Model — 交叉熵损失的完整推导
- scikit-learn: LogisticRegression — L1/L2 正则化逻辑回归的工业实现
- Goodfellow, Bengio & Courville, Deep Learning (2016), §5.5 Maximum Likelihood Estimation — 交叉熵与 MLE 的等价性
- Wikipedia: Cross-entropy — 信息论视角下的交叉熵定义
📝 课后练习
检验你的理解——答对为止