Chapter 5 线性模型
我们要讲的故事
疾旋鼬用线性回归预测了房价——输出连续值。现在它拿着一个西瓜问:"这瓜好不好吃?" 这是分类问题——好瓜 (1) 还是坏瓜 (0)。
线性回归输出实值 \((-\infty, +\infty)\),我们需要把它"压缩"到 \([0, 1]\) 变成概率。
一、对率回归 (Logistic Regression)
从线性回归到分类
理想的分类函数是单位阶跃函数:\(z < 0\) 输出 0,\(z > 0\) 输出 1。但阶跃函数不连续、不可微。
用对率函数 (logistic function) 替代:
性质: - \(\sigma(z) \in (0, 1)\),天然适合做概率 - 单调可微,任意阶可导 - \(\sigma'(z) = \sigma(z)(1 - \sigma(z))\)(可自行验证:\(\frac{d}{dz}\frac{1}{1+e^{-z}} = \frac{e^{-z}}{(1+e^{-z})^2} = \sigma(z)(1-\sigma(z))\))
模型构建
统一写为:
几率与对数几率
左边称为几率 (odds)——正例发生的相对可能性。取对数:
这就是"对数几率回归"名称的由来。
注意:Logistic Regression 是分类算法!"Logistic"源自"Logit",与"逻辑 (Logic)"没有半毛钱关系。
优势: 1. 无需事先假设数据分布 2. 可得到类别的近似概率预测 3. 可直接应用数值优化算法求解
最大似然估计推导
给定数据集 \(\{(x^{(i)}, y^{(i)})\}_{i=1}^m\),似然函数:
对数似然:
利用 \(\log\sigma(z) = -\log(1+e^{-z})\) 和 \(\log(1-\sigma(z)) = -z - \log(1+e^{-z})\):
最大化对数似然等价于最小化交叉熵损失:
交叉熵的信息论解释
熵 (Entropy):衡量随机变量的不确定性。\(H(P) = -\sum P(x)\log P(x)\)。
交叉熵 (Cross Entropy):如果真实分布是 \(P\),你用 \(Q\) 编码,多花的比特数:\(H(P, Q) = -\sum P(x)\log Q(x)\)。
当 \(P\) 和 \(Q\) 越接近,交叉熵越小。最小化交叉熵等价于让预测分布接近真实分布。
KL 散度:\(D_{\text{KL}}(P \| Q) = H(P, Q) - H(P) \geq 0\)。最小化交叉熵等价于最小化 KL 散度。
凸性证明
定理:对率回归的损失函数 \(\mathcal{L}(w)\) 是凸函数。
证明:\(\ell(w) = \sum_i [y^{(i)} w^T x^{(i)} - \log(1 + e^{w^T x^{(i)}})]\)。
- 第一项 \(y^{(i)} w^T x^{(i)}\) 关于 \(w\) 是线性的(既凸又凹)
- 第二项 \(\log(1 + e^{w^T x^{(i)}})\) 是 \(\log\text{-sum-exp}\) 函数,是凸函数(可由 Hessian 半正定证明)
- 因此 \(-\log(1 + e^{w^T x^{(i)}})\) 是凹函数
凹函数之和是凹函数,故 \(\ell(w)\) 是凹函数,\(\mathcal{L}(w)\) 是凸函数。\(\square\)
梯度计算
梯度的形式非常简洁:(真实值 − 预测值)× 输入。与线性回归的梯度形式完全一致。
求解
- 梯度下降:\(w \leftarrow w + \eta \nabla \ell(w)\)
- 牛顿法:\(w \leftarrow w - H^{-1}\nabla \ell(w)\),其中 Hessian \(H = -X^T S X\),\(S = \text{diag}(\hat{y}^{(i)}(1-\hat{y}^{(i)}))\)
二、Softmax 回归(多分类推广)
问题设定
\(C\) 个类别,\(y \in \{1, 2, \ldots, C\}\)。使用 \(C\) 个线性判别函数 \(f_c(x) = w_c^T x + b_c\)。
判定规则:\(y = \arg\max_c f_c(x)\)。如果数据集是多类线性可分的,一定存在这样的线性分类器可以正确分开。
Softmax 函数
将多个标量映射为概率分布:
性质:\(P(y=c \mid x) \in (0, 1)\),\(\sum_{c=1}^C P(y=c \mid x) = 1\)。当 \(C = 2\) 时退化为对率回归。
损失函数
使用 One-Hot 编码 \(y_c = \mathbb{I}(y = c)\),交叉熵损失:
梯度:\(\frac{\partial \mathcal{L}}{\partial w_c} = -\frac{1}{m}\sum_i [y_c^{(i)} - P(y=c \mid x^{(i)})] x^{(i)}\)
Log-Sum-Exp Trick:计算 \(\log\sum e^{z_c}\) 时,先减去最大值 \(M = \max_c z_c\) 避免数值溢出:\(\log\sum e^{z_c} = M + \log\sum e^{z_c - M}\)。
三、线性判别分析 (LDA)
核心思想
LDA 寻找一个投影方向 \(w\),使得投影后不同类别的样本尽可能分开。既是分类方法,也是监督降维技术。
目标函数
两类数据:\(D_0\)(均值 \(\mu_0\),协方差 \(\Sigma_0\)),\(D_1\)(均值 \(\mu_1\),协方差 \(\Sigma_1\))。
投影到方向 \(w\) 上: - 类间距离:\(\|w^T\mu_0 - w^T\mu_1\|^2 = w^T S_b w\) - 类内散度:\(w^T\Sigma_0 w + w^T\Sigma_1 w = w^T S_w w\)
其中 \(S_b = (\mu_0 - \mu_1)(\mu_0 - \mu_1)^T\)(类间散度矩阵),\(S_w = \Sigma_0 + \Sigma_1\)(类内散度矩阵)。
最大化广义瑞利商:
求解
\(w\) 成倍缩放不影响 \(J(w)\),只需关心方向。令 \(w^T S_w w = 1\),用拉格朗日乘子法:
这是广义特征值问题。由于 \(S_b w = (\mu_0 - \mu_1) \cdot [(\mu_0 - \mu_1)^T w]\)(标量),方向已知:
多分类 LDA
推广到 \(N\) 个类别:\(S_t = S_w + S_b\)。投影维度 \(d' = N - 1\)。
LDA 降维维度为什么是 \(N-1\)?因为 \(\text{rank}(S_b) \leq \min(d, N-1)\)。
四、多分类学习
一对一 (OvO)
\(N\) 个类别,训练 \(N(N-1)/2\) 个分类器,每个只区分两个类别。投票法决定。
- 优点:每个分类器只用两类数据,训练时间短
- 缺点:分类器数量 \(O(N^2)\)
一对其余 (OvR)
训练 \(N\) 个分类器,每个区分"第 \(k\) 类"与"其他"。
- 优点:分类器数量 \(O(N)\)
- 缺点:每个分类器用全部数据,训练时间长
纠错输出码 (ECOC)
多对多 (MvM):将若干类作为正类,若干类作为反类。编码矩阵每列对应一个二分类器。
预测时,计算预测码与各类编码的汉明距离,取最小的。
纠错能力:编码越长、类别间距离越远,纠错能力越强。即使某些分类器出错,仍可能得到正确结果。
2026.06