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 需要三个假设:
- $y | x; \theta \sim \text{ExponentialFamily}(\eta)$
- $h(x) = E[T(y) | x]$
- $\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 收敛特性
- 收敛速度:牛顿法是二次收敛——每次迭代有效位数翻倍
- 迭代次数:通常远少于梯度下降(如 10-20 次 vs 几百次)
- 每次迭代成本:$O(n^3)$ 的海森矩阵求逆
- 适用场景:$n$ 较小时效率高
四、感知机算法
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 逻辑回归
- 收敛性:数据线性可分时保证收敛,但线性不可分时不会收敛
- 概率输出:只输出硬分类,没有概率解释
- 理论基础:缺乏统计学基础,而逻辑回归有概率模型支持
五、总结
- 逻辑回归:用 Sigmoid 函数做分类,交叉熵损失,梯度下降更新
- GLM 框架:从指数族分布统一了线性回归、逻辑回归、Softmax 回归
- 牛顿法:二次收敛速度,适合 $n$ 较小的情况
- 感知机:最简分类模型,线性可分时有限步收敛
六、多分类拓展与实战指南
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 框架的体现。
延伸阅读
- 📺 B 站播放列表:Stanford CS229 — 斯坦福机器学习
- 📚 更多学习资源,请访问 deeplearning.ai 官网