配音

Lecture 4-5:逻辑回归与感知机

课程简介

逻辑回归、牛顿法、感知机算法。

🎬 本课程视频:Stanford CS229 — 斯坦福机器学习


一、逻辑回归

1.1 从回归到分类

线性回归解决的是连续值预测问题。但现实中很多问题是分类问题——邮件是垃圾邮件还是正常邮件?肿瘤是良性还是恶性?手写数字是 0-9 中的哪一个?

对于二分类问题,输出 $y \in {0, 1}$。如果我们仍然使用线性回归,$h_\theta(x) = \theta^T x$ 的输出可能远大于 1 或小于 0,这些值无法解释为概率。

逻辑回归(Logistic Regression)正是为了解决这个问题而设计的。虽然名字带有"回归",但它实际上是一种分类算法。

1.2 假设函数

逻辑回归通过 Sigmoid 函数(也称为逻辑函数)将线性输出映射到 (0, 1) 区间:

$$h_\theta(x) = g(\theta^T x) = \frac{1}{1 + e^{-\theta^T x}}$$

其中 $g(z) = \frac{1}{1 + e^{-z}}$ 是 Sigmoid 函数。

Sigmoid 函数的性质:
- 输出范围 (0, 1),可以解释为概率
- $g(0) = 0.5$——当 $\theta^T x = 0$ 时,两类概率相等
- $\lim_{z \to -\infty} g(z) = 0$,$\lim_{z \to +\infty} g(z) = 1$
- 单调递增且平滑可导

我们解释 $h_\theta(x)$ 为 $P(y=1 | x; \theta)$:

$$P(y=1 | x; \theta) = h_\theta(x)$$
$$P(y=0 | x; \theta) = 1 - h_\theta(x)$$

统一写成:$P(y | x; \theta) = h_\theta(x)^y (1 - h_\theta(x))^{1-y}$

1.3 决策边界

逻辑回归的决策边界是 $h_\theta(x) = 0.5$,即 $\theta^T x = 0$。这是一个线性决策边界。

通过特征变换(多项式特征),我们可以得到非线性决策边界。例如,使用 $h_\theta(x) = g(\theta_0 + \theta_1 x_1 + \theta_2 x_2 + \theta_3 x_1^2 + \theta_4 x_2^2)$ 可以得到圆形或椭圆形的决策边界。

1.4 代价函数与交叉熵

如果我们在逻辑回归中使用平方误差代价函数,$J(\theta)$ 将成为 $\theta$ 的非凸函数——存在多个局部极小值,梯度下降难以收敛。

因此,逻辑回归使用交叉熵损失函数(Cross-Entropy Loss)

$$J(\theta) = -\frac{1}{m} \sum_{i=1}^{m} [y^{(i)} \log h_\theta(x^{(i)}) + (1 - y^{(i)}) \log (1 - h_\theta(x^{(i)}))]$$

这个损失函数的含义很直观:
- 当 $y=1$ 时,如果 $h_\theta(x) \to 1$,损失 $\to 0$;如果 $h_\theta(x) \to 0$,损失 $\to \infty$
- 当 $y=0$ 时,如果 $h_\theta(x) \to 0$,损失 $\to 0$;如果 $h_\theta(x) \to 1$,损失 $\to \infty$

1.5 梯度下降

对 $J(\theta)$ 求梯度,得到与线性回归形式相同的表达式:

$$\frac{\partial}{\partial \theta_j} J(\theta) = \frac{1}{m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)}) x_j^{(i)}$$

参数更新规则与线性回归完全相同!唯一的区别是 $h_\theta(x)$ 的定义不同。这是 GLM 理论的结果。

def sigmoid(z):
    return 1 / (1 + np.exp(-z))

def logistic_regression(X, y, alpha=0.01, iterations=1000):
    m, n = X.shape
    theta = np.zeros(n)
    for _ in range(iterations):
        z = X @ theta
        h = sigmoid(z)
        gradient = (1/m) * X.T @ (h - y)
        theta -= alpha * gradient
    return theta

1.6 多分类:Softmax 回归

对于 $K$ 类分类问题,使用 Softmax 回归。Softmax 函数将 $K$ 个线性得分转换为概率分布:

$$P(y = k | x; \theta) = \frac{e^{\theta_k^T x}}{\sum_{j=1}^{K} e^{\theta_j^T x}}$$

其中 $\theta_1, ..., \theta_K$ 是每个类别对应的参数向量。

二、广义线性模型(GLM)

2.1 指数族分布

GLM 的理论基础是指数族分布。如果一个概率分布可以写成以下形式,它属于指数族:

$$p(y; \eta) = b(y) \exp(\eta^T T(y) - a(\eta))$$

其中 $\eta$ 是自然参数,$T(y)$ 是充分统计量,$a(\eta)$ 是对数分割函数,$b(y)$ 是基础度量。

许多常见分布都属于指数族:
- 伯努利分布(二分类)
- 高斯分布(回归)
- 多项分布(多分类)
- 泊松分布(计数数据)

2.2 GLM 的三个假设

构建 GLM 需要三个假设:

  1. $y | x; \theta \sim \text{ExponentialFamily}(\eta)$
  2. $h(x) = E[T(y) | x]$
  3. $\eta = \theta^T x$

2.3 从 GLM 推导常见模型

线性回归:高斯分布 $\to$ $\eta = \mu$ $\to$ $h_\theta(x) = \theta^T x$

逻辑回归:伯努利分布 $\to$ $\eta = \log(\phi/(1-\phi))$ $\to$ $h_\theta(x) = 1/(1+e^{-\theta^T x})$

Softmax 回归:多项分布 $\to$ $h_\theta(x) = \text{softmax}(\theta^T x)$

GLM 框架让我们可以根据数据类型选择合适分布,系统性地推导出新模型。

三、牛顿法

3.1 基本原理

牛顿法(Newton's Method)是一种比梯度下降收敛更快的优化算法。对于寻找 $f(\theta) = 0$ 的问题:

$$\theta := \theta - \frac{f(\theta)}{f'(\theta)}$$

3.2 应用于最大似然估计

在逻辑回归中,我们要最大化对数似然 $\ell(\theta)$:

$$\theta := \theta - H^{-1} \nabla_\theta \ell(\theta)$$

其中 $H = \nabla^2_\theta \ell(\theta)$ 是海森矩阵。

3.3 收敛特性

四、感知机算法

4.1 感知机模型

感知机(Perceptron)由 Frank Rosenblatt 在 1958 年提出:

$$h_\theta(x) = \begin{cases} 1, & \text{if } \theta^T x \geq 0 \ 0, & \text{if } \theta^T x < 0 \end{cases}$$

输出是离散的 0 或 1,不是概率。

4.2 学习规则

顺序遍历训练样本,遇到分类错误时更新参数:

如果 $h_\theta(x^{(i)}) \neq y^{(i)}$:

$$\theta := \theta + (y^{(i)} - h_\theta(x^{(i)})) x^{(i)}$$

4.3 感知机 vs 逻辑回归

五、总结

  1. 逻辑回归:用 Sigmoid 函数做分类,交叉熵损失,梯度下降更新
  2. GLM 框架:从指数族分布统一了线性回归、逻辑回归、Softmax 回归
  3. 牛顿法:二次收敛速度,适合 $n$ 较小的情况
  4. 感知机:最简分类模型,线性可分时有限步收敛

六、多分类拓展与实战指南

6.1 一对多(One-vs-All)多分类策略

对于 $K$ 类分类问题,除了 Softmax 回归外,还可以使用一对多策略:训练 $K$ 个二分类器,每个分类器区分一个类别与其他所有类别。预测时选择置信度最高的分类器对应的类别。

一对多策略的优点是实现简单,可以利用任何二分类算法。缺点是当 $K$ 很大时,类别不平衡问题严重——每个二分类器的负类样本是正类的 $K-1$ 倍。

6.2 Softmax 回归的数值稳定性

Softmax 函数的计算中涉及指数运算 $e^{\theta_k^T x}$,当 $\theta_k^T x$ 很大时可能溢出。常用的技巧是减去最大值:

$$\text{softmax}(z)_k = \frac{e^{z_k - \max(z)}}{\sum_j e^{z_j - \max(z)}}$$

这个变换不改变概率分布,但保证了数值稳定性。

6.3 逻辑回归实践指南

特征工程:逻辑回归对特征工程敏感。好的特征工程可以显著提升性能。

正则化:逻辑回归几乎总是需要正则化。C 值(正则化强度的倒数)的选择通过交叉验证完成。

类别不平衡:当正负类比例严重失衡时,可以使用 class_weight 参数来给少数类更高权重,或使用上采样/下采样策略。

概率校准:逻辑回归输出的概率通常校准良好,但对于其他分类器(如 SVM、随机森林),概率可能不够准确,需要做校准。

多分类推广:Softmax 回归

逻辑回归可以自然地推广到多分类问题,称为 Softmax 回归(Softmax Regression),也称为多项逻辑回归(Multinomial Logistic Regression)。对于 K 类分类问题,Softmax 回归的输出是一个 K 维概率向量:

$$h_\theta(x) = \begin{bmatrix} P(y=1|x;\theta) \ P(y=2|x;\theta) \ \vdots \ P(y=K|x;\theta) \end{bmatrix} = \frac{1}{\sum_{j=1}^K e^{\theta_j^T x}} \begin{bmatrix} e^{\theta_1^T x} \ e^{\theta_2^T x} \ \vdots \ e^{\theta_K^T x} \end{bmatrix}$$

Softmax 函数的"归一化"特性确保了输出和为 1,使其可以解释为概率。Softmax 回归的代价函数是交叉熵损失的推广形式,其梯度形式与逻辑回归极其相似,这种统一性正是 GLM 框架的体现。

延伸阅读