7.1 KiB
title, draft, tags
| title | draft | tags | |
|---|---|---|---|
| 4 第四章 分类的线性方法 | false |
|
[逻辑架构图]
分类线性方法的逻辑演进并非随机,而是关于“假设强度”与“参数效率”的权衡:
-
线性回归代理 (The Indicator Matrix Trap):最廉价的方案。将离散标签强行投影到连续空间,代价是忽视了概率分布的边界特征,产生“掩盖效应”。
-
生成式建模 (LDA/QDA):建模的是 $P(X|G)$。通过描述每一类数据“长什么样”(高斯分布),利用贝叶斯法则反推分类边界。
-
判别式建模 (Logistic Regression):建模的是 $P(G|X)$。直接对分类边界(Log-odds)进行线性建模,不关心数据本身的分布,只关心“那一刀”怎么切。
-
计算实现层:从 OLS 的正规方程解,演进到 Logistic 的 IRLS (迭代重加权最小二乘) 优化。
[深度整理正文]
A. 指示矩阵线性回归:期望投影
-
原本内容:用 One-Hot 编码拟合条件期望。
-
深度整理:
对
K个类别建立N \times K的指示矩阵 $\mathbf{Y}$。回归模型为 $\hat{\mathbf{Y}} = \mathbf{X}(\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{Y}$。 -
{扩充部分}:
期望等价性推导:
最小二乘法在指示矩阵上的预测值
\hat{y}_k(x)实际上是对E[Y_k | X=x]的估计,而 $E[Y_k | X=x] = P(G=k | X=x)$。掩盖效应的底层数学解释:
当类别
K \ge 3时,中间类别的回归超平面可能被两侧类别的超平面“夹死”,导致该类别的预测概率在整个特征空间内都无法占优。这是因为线性回归试图在整个实数域上拟合0/1响应,这是一种刚性过强的投影,不像 Logistic 回归那样有 Sigmoid 函数提供的“容错缓冲”。
B. LDA:建模 P(X|G) 的生成式策略
-
原本内容:通过建模 $P(X|G)$,间接得到 $P(G|X)$。假设协方差
\Sigma相同。 -
深度整理:
LDA 究竟建模了什么? 它建模的是每一类数据的概率密度函数。
假设第
k类数据服从多元高斯分布:f_k(x) = \frac{1}{(2\pi)^{p/2}|\Sigma|^{1/2}} e^{-\frac{1}{2}(x-\mu_k)^T\Sigma^{-1}(x-\mu_k)} -
{扩充部分}:
判别函数
\delta_k(x)的推导:我们根据贝叶斯后验概率最大化进行分类。比较两类
k和l时,对比的是 $\log \frac{P(G=k|X=x)}{P(G=l|X=x)}$。代入高斯分布公式,展开二次项:
-\frac{1}{2}(x-\mu_k)^T\Sigma^{-1}(x-\mu_k) = -\frac{1}{2} [x^T\Sigma^{-1}x - 2x^T\Sigma^{-1}\mu_k + \mu_k^T\Sigma^{-1}\mu_k]核心逻辑:因为 LDA 强制所有类共享同一个 $\Sigma$,二次项
x^T\Sigma^{-1}x在做差时会被精准抵消。最终剩下的线性判别函数为:
\delta_k(x) = x^T\Sigma^{-1}\mu_k - \frac{1}{2}\mu_k^T\Sigma^{-1}\mu_k + \log\pi_k这就是为什么边界是平直的超平面。
系统视角下的计算开销:
预测时,我们不需要每次都计算复杂的对数概率,只需要保存
\mathbf{w}_k = \Sigma^{-1}\mu_k这个向量。一次预测仅需一个向量点积($x^T\mathbf{w}_k$)加一个常数偏移。这在硬件层面是极易通过 SIMD (单指令多数据) 加速的。
C. Logistic 回归:建模对数几率 (Log-odds)
-
原本内容:建模 $P(G|X)$。用 Sigmoid 把线性回归压缩到 $(0, 1)$。
-
深度整理:
Logistic 回归的核心假设是两个类别的后验概率之比的对数是线性的:
\log \frac{P(G=1|X=x)}{P(G=0|X=x)} = \beta_0 + \beta^T x -
{扩充部分}:
Logit 函数的本质:
定义 $p(x) = P(G=1|X=x)$,上述公式即为 $\text{logit}(p(x)) = \beta^T x$。
反解出 $p(x)$,得到 Sigmoid 形式:
p(x) = \frac{e^{\beta^T x}}{1 + e^{\beta^T x}} = \frac{1}{1 + e^{-\beta^T x}}极大似然估计 (MLE) 与 Hessian 矩阵:
为了求解 $\beta$,我们要最大化对数似然 $\ell(\beta)$。
其梯度(Score Function)为:$\frac{\partial \ell}{\partial \beta} = \sum_{i=1}^N x_i (y_i - p(x_i))$。
其二阶导(Hessian 矩阵)为:$\frac{\partial^2 \ell}{\partial \beta \partial \beta^T} = -\sum_{i=1}^N x_i x_i^T p(x_i)(1-p(x_i))$。
底层算法实现:IRLS:
求解
\beta的 Newton 迭代步可以写成一个加权最小二乘问题:\beta_{new} \leftarrow \arg\min_{\beta} (\mathbf{z} - \mathbf{X}\beta)^T \mathbf{W} (\mathbf{z} - \mathbf{X}\beta)这里的权重矩阵
\mathbf{W}是对角阵,元素为 $p_i(1-p_i)$。这意味着预测概率越接近 0.5 的样本(即位于决策边界附近的样本),对参数更新的权重贡献越大。这在系统资源分配上体现了“关注困难样本”的策略。
D. 分离超平面:感知机与距离优化
-
原本内容:直接分离。
-
{扩充部分}:
Rosenblatt 感知机算法:
它的目标是最小化误分类点到超平面的距离。只要数据线性可分,算法一定收敛。
随机梯度下降 (SGD) 的原型:
感知机的更新规则
\beta \leftarrow \beta + y_i x_i是典型的流式处理(Stream Processing)。它不需要像 LDA 那样存储全局协方差矩阵,也不需要像 Logistic 那样迭代整个数据集计算 Hessian。这使得它非常适合嵌入式或实时系统。
[边界知识联动]
-
LDA 与内存布局 (Memory Layout):
计算
\Sigma^{-1}\mu_k时,若\Sigma是稠密矩阵,计算量大。在实际系统中,如果特征具有强局部相关性(如像素),\Sigma往往呈现带状矩阵 (Banded Matrix) 特性,利用这一特性可以显著减少 Cache Miss。 -
Logistic 的数值稳定性 (Safe Softmax):
在计算
e^{\beta^Tx}时,极大的\beta^Tx会导致溢出。工业级实现(如 Rust 的ndarray或 C++ 的Eigen)会使用 Log-Sum-Exp Trick:$\log \sum e^{z_i} = a + \log \sum e^{z_i - a}$,其中 $a = \max(z_i)$。
这保证了在有限位宽的浮点数运算中,概率值永远不会变为
inf或NaN。 -
多线程与并行优化:
IRLS 算法中的矩阵乘法
\mathbf{X}^T \mathbf{W} \mathbf{X}是计算密集型的。通过将数据分块(Tiling),可以利用多核 CPU 的并行能力。由于\mathbf{W}是对角阵,这种并行化在底层可以通过 OpenMP 或类似的线程池模型轻松实现。 -
信号处理关联:
Logistic 函数在信号处理中常被视为一个非线性限幅器 (Limiter),它将无限范围的输入映射到有限的动态范围。这与你感兴趣的机器人传感器数据融合(如将原始电压映射为逻辑状态)在底层逻辑上是贯通的。