Skip to content

逻辑回归 (Logistic Regression)


一句话定义:逻辑回归是一种二分类算法,通过 Sigmoid 函数将线性回归的输出映射到 [0, 1] 区间,表示属于某一类的概率

虽然名字里有”回归”,但它解决的是分类问题(如:邮件是否是垃圾邮件、用户是否会点击广告)。


调整权重观察决策边界如何变化,拖动 Sigmoid 输入滑块理解概率映射。

🎯逻辑回归可视化

📊 二分类决策边界

x₁x₂00001111类别 1类别 0

📈 Sigmoid 函数

10.50-505
输入 z0.0
σ(0.0) = 0.5000
w₁1.00
w₂1.00
b-5.00
损失: 0.097准确率: 100%

你收到一封邮件,想判断是不是垃圾邮件:

  • 包含”免费” → +3 分
  • 包含”中奖” → +5 分
  • 来自通讯录 → -4 分
  • 有正常问候语 → -2 分

总分 = 3 + 5 - 4 - 2 = 2 分

然后用 Sigmoid 函数转换:

  • 分数高 → 概率接近 1 → 垃圾邮件
  • 分数低 → 概率接近 0 → 正常邮件

z=w1x1+w2x2++wnxn+b=wTx+bz = w_1 x_1 + w_2 x_2 + \cdots + w_n x_n + b = \mathbf{w}^T \mathbf{x} + b σ(z)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

性质

  • 输出范围 (0,1)(0, 1)
  • z=0z = 0 时,σ(0)=0.5\sigma(0) = 0.5
  • z+z \to +\infty 时,σ(z)1\sigma(z) \to 1
  • zz \to -\infty 时,σ(z)0\sigma(z) \to 0
y^={1if σ(z)0.50otherwise\hat{y} = \begin{cases} 1 & \text{if } \sigma(z) \geq 0.5 \\ 0 & \text{otherwise} \end{cases} L=1ni=1n[yilog(p^i)+(1yi)log(1p^i)]\mathcal{L} = -\frac{1}{n} \sum_{i=1}^{n} \left[ y_i \log(\hat{p}_i) + (1 - y_i) \log(1 - \hat{p}_i) \right]
概率
1.0 | .---------
| .-'
0.5 |- - - - - - - -o- - - - - - - (决策边界)
| .-'
0.0 |------------'
+-----------------------------→ z
-5 0 +5

import numpy as np
def sigmoid(z):
return 1 / (1 + np.exp(-z))
def predict(X, w, b):
z = np.dot(X, w) + b
return sigmoid(z)
# 示例:2个特征
X = np.array([[1, 2], [2, 1], [3, 4], [4, 3]]) # 特征
y = np.array([0, 0, 1, 1]) # 标签
# 假设已训练好的参数
w = np.array([0.5, 0.5])
b = -2
probs = predict(X, w, b)
predictions = (probs >= 0.5).astype(int)
print(f"概率: {probs}")
print(f"预测: {predictions}")

逻辑回归神经网络
Sigmoid 激活输出层激活函数
交叉熵损失分类任务标准损失
单层结构无隐藏层的网络

关键洞察:逻辑回归 = 线性回归 + Sigmoid 激活 + 交叉熵损失


当类别 > 2 时,使用 Softmax 回归:

P(y=kx)=ezkj=1KezjP(y = k | \mathbf{x}) = \frac{e^{z_k}}{\sum_{j=1}^{K} e^{z_j}}
  1. 只能处理线性可分问题 - 决策边界是直线/超平面
  2. 对特征缩放敏感 - 建议先标准化
  3. 特征工程依赖 - 非线性关系需手动构造交叉特征