支持向量机

支持向量机(SVM)是一种二分类模型,其核心目标是在特征空间中找到一个超平面(Hyperplane),将不同类别的样本点尽可能分开,且最大化超平面到两类样本中最近点的距离之和,最大化间隔可以提升模型的泛化能力,减少过拟合。

  • 超平面定义:在 $ n $ 维空间中,超平面由 $ \mathbf{w}^T\mathbf{x} + b = 0 $ 表示,其中 $ \mathbf{w} $ 是法向量,决定超平面方向;$ b $ 是截距,决定超平面位置。

  • 样本到超平面的距离:样本点 $ (\mathbf{x}_i,y) $ 到超平面的距离为 $ \frac{|\mathbf{w}^T\mathbf{x}_i + b|}{|\mathbf{w}|} $,其中 $ y_i \in {-1, +1} $ 是类别标签。

  • 间隔最大化:两类样本中离超平面最近的点(称为“支持向量”)到超平面的距离之和为 $ \frac{1}{|\mathbf{w}|} $,最大化间隔即最小化 $ |\mathbf{w}|^2 $(等价于优化问题)。

线性模型

凸二次规划

凸函数:\(f[\frac{x_1+x_2}{2}]<\frac{[f(x_1)+f(x_2)]}{2}\)

仿射函数:最高次为 \(1\) 的多项式函数,如 \(f(\mathbf x)=w_1x_1+w_2x_2+\dots+w_nx_n+b\)。仿射函数也是凸函数,常数项为 \(0\) 时即线性函数。

\(f(\mathbf x)\) 为目标函数、\(g(\mathbf x)\) 为不等式约束、\(h(\mathbf x)\) 为等式约束。三者在定义域内是连续可微的,且目标函数 \(f\) 和不等式约束函数 \(g\) 是凸函数,等式约束 \(h\) 是仿射函数,则这种约束最优化问题称为凸优化问题。
\(f(\mathbf x)\) 为二次型函数,如:\(f(\mathbf w)=w_1^2+w_2^2+\dots+w_n^2\),且 \(g\) 为仿射函数时,即凸二次规划问题。

拉格朗日乘数法

在约束条件 $g(\mathbf{x}) \leq 0 $ 下最小化 $ f(\mathbf{x}) $,可转化成在如下三个约束下最小化拉格朗日函数。

\[L(\mathbf{x}, \alpha) = f(\mathbf{x}) + \alpha g(\mathbf{x}) , \left\{ \begin{array}{l} g(\mathbf{x}) \leq 0 \\ \alpha \geq 0 \\ \alpha g(\mathbf{x}) = 0 \end{array} \right. \]

算法实现

假设数据完全线性可分,目标是找到满足 $ y_i(\mathbf{w}^T\mathbf{x}_i + b) \geq 1 $(几何间隔归一化)的超平面,使间隔最大。转化为优化问题:

\[\min_{\mathbf{w}, b} \frac{1}{2}\|\mathbf{w}\|^2 \quad \text{s.t.} \quad y_i(\mathbf{w}^T\mathbf{x}_i + b) \geq 1, \forall i \]

这是一个凸二次规划问题,可用拉格朗日乘数法求解。引入拉格朗日乘子 $ \alpha_i \geq 0 $,构造拉格朗日函数:

\[L(\mathbf{w}, b, \mathbf{\alpha}) = \frac{1}{2}\|\mathbf{w}\|^2 - \sum_{i=1}^n \alpha_i \left( y_i(\mathbf{w}^T\mathbf{x}_i + b) - 1 \right) \]

\(\mathbf{w},b\) 的偏导等于 \(0\) 并带入回拉格朗日函数,我们得到:

\[\max_{\alpha} \left( \sum_{i=1}^n \alpha_i - \frac{1}{2}\sum_{i,j=1}^n \alpha_i \alpha_j y_i y_j x_i^\top x_j \right) \quad\text{s.t.} \quad \sum_{i=1}^n \alpha_i y_i = 0, \quad \alpha_i \geq 0, \quad \forall i \]

即变为一个对偶问题(是一个凸二次规划问题)。我们可以用 SMO(序列最小化)算法解决,每次选取两个变量 \(\alpha_i, \alpha_j\) 优化,利用解析解快速迭代。(省略晦涩难懂的数学过程,主包也看得一知半解)

最优解 \(\alpha^\ast\) 中,\(\alpha_i^\ast > 0\) 对应的样本为支持向量(决定超平面位置),其余样本的 \(\alpha_i^\ast = 0\)(非支持向量,不影响决策)。

最终得到:

\[\mathbf{w}^* = \sum_{i=1}^n \alpha_i^* y_i \mathbf{x}_i \]

对任意支持向量有:

\[b^\ast = y_s - (w^*)^\top x_s = y_s - \sum_{i=1}^n \alpha_i^\ast y_i x_i^\top x_s \]

我们取所有支持向量对应的 \(b^\ast\) 的平均值为参数 \(b^*\)

分类决策函数为 $ f(\mathbf{x}) = \text{sign}\left( \sum_{i=1}^n \alpha_i^* y_i \mathbf{x}_i^T\mathbf{x} + b^* \right) $,其中仅支持向量(对应 $ \alpha_i^* > 0 $ 的样本)影响决策。

损失函数

实际数据常存在噪声或轻微线性不可分,此时引入松弛变量 $ \xi_i \geq 0 $,允许部分样本违反约束 \(y_i(\mathbf{w}^T\mathbf{x}_i+b)\geq 1 - \xi_i\),同时增加惩罚项 $ C\sum_{i=1}^n\xi_i,C>0$,平衡间隔大小和分类错误。

优化问题变为:

\[\min_{\mathbf{w}, b, \xi} \frac{1}{2}\|\mathbf{w}\|^2 + C\sum_{i=1}^n \xi_i \quad \text{s.t.} \quad y_i(\mathbf{w}^T\mathbf{x}_i + b) \geq 1 - \xi_i, \xi_i \geq 0 \]

SVM的优化目标可等价于最小化损失函数加上正则项:

\[\min_{\mathbf{w}, b} \sum_{i=1}^n \max(0, 1 - y_i(\mathbf{w}^T\mathbf{x}_i + b)) + \frac{\lambda}{2}\|\mathbf{w}\|^2 \]

其中 $ \lambda = \frac1 C $ 是正则化参数。合页损失仅对分类错误或间隔内的样本(\(y_i f(\mathbf{x}_i)<1\))施加惩罚,对正确分类且在间隔外的样本(\(y_i f(\mathbf{x}_i)\geq 1\))不惩罚,体现了SVM“只关注支持向量”的特性。

非线性模型

当数据线性不可分时,SVM通过核函数将低维输入空间的数据映射到高维特征空间,使数据在高维空间线性可分。核函数 $ K(\mathbf{x}_i, \mathbf{x}_j) = \phi(\mathbf{x}_i)^T\phi(\mathbf{x}_j) $ 直接计算高维内积,避免显式映射带来的维度灾难。

常用核函数:

  1. 线性核:$ K(\mathbf{x}_i, \mathbf{x}_j) = \mathbf{x}_i^T\mathbf{x}_j $

    即线性SVM。

  2. 多项式核:$ K(\mathbf{x}_i,\mathbf{x}_j) = (\mathbf{x}_i^T \mathbf{x}_j+c)^d $

    $ c \geq 0 $ 为常数,$ d \geq 1 $ 为次数。

  3. 高斯核(RBF核)\(K(\mathbf{x}_i, \mathbf{x}_j) =\exp( -\frac{{\Vert\mathbf{x}_i -\mathbf{x}_j\Vert}^2}{2\sigma^2})\)

    $ \sigma > 0 $ 控制宽度。

  4. Sigmoid核:$ K(\mathbf{x}_i, \mathbf{x}_j) = \tanh(k\mathbf{x}_i^T\mathbf{x}_j + c) $

    近似神经网络。

核函数的选择直接影响模型复杂度和性能,需根据数据特性调整参数。

支持向量回归(SVR)

SVR目标是找到一个超平面,使样本点到超平面的距离不超过容忍误差 $ \epsilon $,超出部分视为损失。优化问题为:

\[\min_{\mathbf{w}, b} \frac{1}{2}\|\mathbf{w}\|^2 + C\sum_{i=1}^n \max(0, |f(\mathbf{x}_i) - y_i| - \epsilon) \]

通过引入松弛变量处理回归误差,核函数同样适用。

posted @ 2025-04-18 09:11  violetctl39  阅读(64)  评论(0)    收藏  举报