Files
Notes/机器学习/统计学习要素-ESL-v1/4 第四章 分类的线性方法.md
2026-05-16 17:16:51 +08:00

7.1 KiB
Raw Permalink Blame History

title, draft, tags
title draft tags
4 第四章 分类的线性方法 false
ESL

[逻辑架构图]

分类线性方法的逻辑演进并非随机,而是关于“假设强度”与“参数效率”的权衡:

  • 线性回归代理 (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) 的推导

    我们根据贝叶斯后验概率最大化进行分类。比较两类 kl 时,对比的是 $\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。这使得它非常适合嵌入式或实时系统。


[边界知识联动]

  1. LDA 与内存布局 (Memory Layout)

    计算 \Sigma^{-1}\mu_k 时,若 \Sigma 是稠密矩阵,计算量大。在实际系统中,如果特征具有强局部相关性(如像素),\Sigma 往往呈现带状矩阵 (Banded Matrix) 特性,利用这一特性可以显著减少 Cache Miss。

  2. 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)$。

    这保证了在有限位宽的浮点数运算中,概率值永远不会变为 infNaN

  3. 多线程与并行优化

    IRLS 算法中的矩阵乘法 \mathbf{X}^T \mathbf{W} \mathbf{X} 是计算密集型的。通过将数据分块Tiling可以利用多核 CPU 的并行能力。由于 \mathbf{W} 是对角阵,这种并行化在底层可以通过 OpenMP 或类似的线程池模型轻松实现。

  4. 信号处理关联

    Logistic 函数在信号处理中常被视为一个非线性限幅器 (Limiter),它将无限范围的输入映射到有限的动态范围。这与你感兴趣的机器人传感器数据融合(如将原始电压映射为逻辑状态)在底层逻辑上是贯通的。