ML ML Learning Lab
04 / 14
第 4 步 · 从回归到分类

逻辑回归(二分类)Logistic Regression

不是预测数值,而是判断"是 A 还是 B"

8 分钟
阅读 + 实操
1 个
交互演示
初级
难度

逻辑回归 · 交互演示

损失 BCE--
准确率--
步数0
学习率 0.1
速度 20步/秒

为什么学这步?

逻辑回归把"预测数值"变成"判断类别"——垃圾邮件识别、疾病诊断、信用审核,本质都是"是 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 — 信息论视角下的交叉熵定义

📝 课后练习

检验你的理解——答对为止