支持向量机(SVM)

96 阅读2分钟

支持向量机(SVM)导论

支持向量机是一种监督学习模型,特别适用于分类任务。与受所有数据点影响的逻辑回归不同,SVM专注于寻找训练数据中分隔两类样本的"最优"超平面——即与任意类别最近数据点距离(称为间隔)最大的超平面。这些决定间隔的关键数据点称为支持向量


SVM理论发展路线图

本课程将按以下脉络展开SVM讲解:

  1. 最优间隔分类器:核心目标是寻找最大化类别间隔的超平面,奠定SVM理论基础
  2. 核方法:引入"核技巧",通过数据升维实现非线性决策边界

SVM数学符号调整

为简化推导,将输出变量 yy 的取值从{0,1}改为{-1,1}。该调整使分类问题与间隔的数学表达更优雅。


函数间隔

函数间隔用于衡量预测置信度。对于训练样本 (x(i),y(i))(x^{(i)}, y^{(i)}),参数为 wwbb 的分类器函数间隔定义为:
γ^(i)=y(i)(wTx(i)+b)\hat{\gamma}^{(i)} = y^{(i)}(w^T x^{(i)} + b)

  • y(i)=1y^{(i)} = 1 时,正确分类需 wTx(i)+b0w^T x^{(i)} + b \gg 0
  • y(i)=1y^{(i)} = -1 时,正确分类需 wTx(i)+b0w^T x^{(i)} + b \ll 0

函数间隔越大表明预测越准确且置信度越高。但其存在显著缺陷:通过缩放参数(如 w2w,b2bw \to 2w, b \to 2b)可任意增大间隔值,而超平面 wTx+b=0w^T x + b = 0 并未改变。


几何间隔

为解决函数间隔的缩放问题,引入几何间隔——数据点到决策边界的欧氏距离。

推导过程:
决策边界即超平面 wTx+b=0w^T x + b = 0,法向量 ww 与该平面垂直。点 x(i)x^{(i)} 到边界的距离可通过向量投影计算:将该点到超平面的投影向量映射至单位法向量 w/ww/||w|| 方向。

几何间隔公式为:
γ(i)=y(i)(wTx(i)+b)w\gamma^{(i)} = \frac{y^{(i)}(w^T x^{(i)} + b)}{||w||}

此本质是函数间隔除以 ww 的范数。归一化处理使几何间隔对参数缩放具有不变性。


最优间隔分类器

目标在于寻找最大化几何间隔的超平面,可表述为优化问题:
最大化 γ\gamma
约束条件
y(i)(wTx(i)+b)wγ,i=1,...,m\frac{y^{(i)}(w^T x^{(i)} + b)}{||w||} \geq \gamma, \quad \forall i=1,...,m

因约束条件非凸,直接求解困难。但利用参数可缩放特性,可施加函数间隔不小于1的约束:y(i)(wTx(i)+b)1y^{(i)}(w^T x^{(i)} + b) \geq 1。此时最大化几何间隔 γ=1/w\gamma = 1/||w|| 等价于最小化 w||w||(为计算便利改为最小化 12w2\frac{1}{2}||w||^2)。

由此得到SVM标准优化形式:
最小化 12w2\frac{1}{2}||w||^2
约束条件
y(i)(wTx(i)+b)1,i=1,...,my^{(i)}(w^T x^{(i)} + b) \geq 1, \quad \forall i=1,...,m

该问题为具有二次目标函数与线性约束的凸优化问题,可高效求解。

核技巧(Kernel Trick)

核技巧是一种强大的技术,使得支持向量机(SVM)能够学习复杂的非线性决策边界。其核心洞察在于:SVM的对偶优化问题和最终决策规则仅依赖于特征向量的内积,而非特征向量本身。

该技术的本质是将原始特征向量的内积替换为核函数。核函数 K(x,z)K(x, z) 能够在无需显式将数据映射到高维空间的情况下,直接计算特征向量在该空间的内积。

若存在特征映射 ϕ(x)\phi(x) 将输入特征 xx 映射到高维空间,则核函数定义为:
K(x,z)=ϕ(x)Tϕ(z)K(x, z) = \phi(x)^T \phi(z)

通过简单地将内积 x,z\langle x, z \rangle 替换为核函数 K(x,z)K(x, z),即可训练出在高维特征空间中有效运作的SVM——在该空间中线性决策边界可分离数据,从而在原始特征空间中实现非线性决策边界。

采用核技巧的SVM对偶问题转化为:
最大化 W(α)=i=1mαi12i,j=1my(i)y(j)αiαjK(x(i),x(j))W(\alpha) = \sum_{i=1}^{m} \alpha_i - \frac{1}{2} \sum_{i,j=1}^{m} y^{(i)}y^{(j)}\alpha_i \alpha_j K(x^{(i)}, x^{(j)})
约束条件

  1. αi0,i=1,...,m\alpha_i \geq 0, \quad i=1,...,m
  2. i=1mαiy(i)=0\sum_{i=1}^{m} \alpha_i y^{(i)} = 0

新样本 xx 的决策函数为:
i=1mαiy(i)K(x(i),x)+b\sum_{i=1}^{m} \alpha_i y^{(i)} K(x^{(i)}, x) + b


核函数实例:多项式核(Polynomial Kernel)

典型的核函数是多项式核,其 dd 次形式定义为:
K(x,z)=(xTz+c)dK(x, z) = (x^T z + c)^d
其中常数 cc 用于调节多项式高次项与低次项的权重。

以二次多项式核 (d=2,c=0d=2, c=0) 为例:
K(x,z)=(xTz)2K(x, z) = (x^T z)^2

设二维特征向量 x=(x1x2)x = \begin{pmatrix} x_1 \\ x_2 \end{pmatrix}, z=(z1z2)z = \begin{pmatrix} z_1 \\ z_2 \end{pmatrix},则:
K(x,z)=(x1z1+x2z2)2=x12z12+2x1z1x2z2+x22z22K(x, z) = (x_1 z_1 + x_2 z_2)^2 = x_1^2 z_1^2 + 2x_1 z_1 x_2 z_2 + x_2^2 z_2^2

现构造三维特征映射:
ϕ(x)=(x122x1x2x22)\phi(x) = \begin{pmatrix} x_1^2 \\ \sqrt{2}x_1 x_2 \\ x_2^2 \end{pmatrix}

映射向量的内积为:
ϕ(x)Tϕ(z)=(x122x1x2x22)(z122z1z2z22)=x12z12+2x1x2z1z2+x22z22\phi(x)^T \phi(z) = \begin{pmatrix} x_1^2 & \sqrt{2}x_1 x_2 & x_2^2 \end{pmatrix} \begin{pmatrix} z_1^2 \\ \sqrt{2}z_1 z_2 \\ z_2^2 \end{pmatrix} = x_1^2 z_1^2 + 2x_1 x_2 z_1 z_2 + x_2^2 z_2^2

此结果与 K(x,z)=(xTz)2K(x, z) = (x^T z)^2 完全一致。该实例证明:多项式核函数无需显式生成高维特征向量,即可计算高维空间的内积——这正是核技巧的精髓所在。

以下是支持向量机(SVM)相关章节的详细课程笔记:

核函数SVM的可视化理解

当我们在SVM中使用核函数时,本质上是在将数据映射到更高维的空间使其线性可分。SVM在这个高维特征空间中寻找最优线性决策边界。当把这个边界投影回原始特征空间时,就会呈现出复杂的非线性决策边界。核心要义在于:尽管原始空间中的决策边界可能是曲线状的复杂形态,但在核函数构建的高维空间中,它只是一个简单的超平面。


有效核函数与Mercer定理

关键问题在于:什么样的函数才能作为有效核函数?并非所有函数都能作为SVM的核函数。一个函数要成为有效核函数,必须对应于某个高维空间中的内积运算。

Mercer定理为此提供了严格的数学判定条件:当且仅当对于任意训练样本集,其对应的核矩阵 K半正定矩阵时,函数 K(x,z)K(x, z) 才是有效核函数。核矩阵是一个 m x m 矩阵,其中每个元素 Kij=K(x(i),x(j))K_{ij} = K(x^{(i)}, x^{(j)})

实践中我们无需每次都验证Mercer定理,可以直接使用以下几类经过验证的核函数,或者通过组合规则从现有有效核函数构建新核函数。


L1范数软间隔SVM(处理非线性可分数据)

现实数据集往往无法完全线性可分,即使使用核函数也是如此。为此我们引入L1范数软间隔SVM,通过放松约束条件允许一定程度的误分类。

通过在优化问题中引入松弛变量 ξi0\xi_i \geq 0 来实现这一目标。这些松弛变量允许数据点位于间隔错误的一侧,甚至完全位于决策边界的错误侧。

新的优化问题表述为:

最小化 12w2+Ci=1mξi\frac{1}{2} ||w||^2 + C \sum_{i=1}^{m} \xi_i

约束条件

  1. y(i)(wTx(i)+b)1ξiy^{(i)}(w^T x^{(i)} + b) \geq 1 - \xi_i, i=1,...,mi=1,...,m
  2. ξi0\xi_i \geq 0, i=1,...,mi=1,...,m

参数 C 是正则化参数,控制最大化间隔与最小化分类误差之间的权衡:

  • 较大的C值:对误分类施加高惩罚,导致间隔变小,可能产生过拟合
  • 较小的C值:允许更大间隔和更多误分类,可能提升泛化能力

软间隔SVM的对偶形式与原始形式非常相似,唯一变化是拉格朗日乘子的上界约束:

最大化 W(α)=i=1mαi12i,j=1my(i)y(j)αiαjK(x(i),x(j))W(\alpha) = \sum_{i=1}^{m} \alpha_i - \frac{1}{2} \sum_{i,j=1}^{m} y^{(i)}y^{(j)}\alpha_i \alpha_j K(x^{(i)}, x^{(j)})

约束条件

  1. 0αiC0 \leq \alpha_i \leq C, i=1,...,mi=1,...,m
  2. i=1mαiy(i)=0\sum_{i=1}^{m} \alpha_i y^{(i)} = 0

常用SVM核函数示例

以下是几种经典SVM核函数:

  • 线性核:最基础的核函数,即标准内积运算,适用于线性可分数据 K(x,z)=xTzK(x, z) = x^T z

  • 多项式核:计算多项式特征空间的内积 K(x,z)=(xTz+c)dK(x, z) = (x^T z + c)^d

  • 高斯核(径向基函数核/RBF核):能处理复杂非线性关系的强大核函数,可将数据映射到无限维空间 K(x,z)=exp(xz22σ2)K(x, z) = \exp \left( - \frac{||x - z||^2}{2\sigma^2} \right) 其中σ\sigma控制高斯函数的宽度

  • 专用核函数:还可以针对特定数据类型(如字符串、图像等结构化数据)设计专用核函数,这类核函数能捕捉特定领域内有意义的相似性度量

拉格朗日乘数法与SVM优化问题的转化过程

一、拉格朗日乘数法简介

拉格朗日乘数法是一种求解带约束优化问题的数学方法。对于原始优化问题:

minwf(w)s.t.gi(w)0 (i=1,...,m)\min_w f(w) \quad \text{s.t.} \quad g_i(w) \leq 0 \ (i=1,...,m)

通过引入拉格朗日乘子 αi0\alpha_i \geq 0,构造拉格朗日函数:

L(w,α)=f(w)+i=1mαigi(w)\mathcal{L}(w,\alpha) = f(w) + \sum_{i=1}^m \alpha_i g_i(w)

原始问题转化为对偶问题:

maxαminwL(w,α)\max_\alpha \min_w \mathcal{L}(w,\alpha)

二、线性SVM的原始优化问题

对于线性可分SVM,原始目标是最大化几何间隔 γ=1/w\gamma = 1/\|w\|,等价于:

minw,b12w2s.t.y(i)(wTx(i)+b)1 (i)\min_{w,b} \frac{1}{2}\|w\|^2 \quad \text{s.t.} \quad y^{(i)}(w^T x^{(i)} + b) \geq 1 \ (\forall i)

三、转化为拉格朗日函数

引入拉格朗日乘子 αi0\alpha_i \geq 0,得到:

L(w,b,α)=12w2i=1mαi[y(i)(wTx(i)+b)1]\mathcal{L}(w,b,\alpha) = \frac{1}{2}\|w\|^2 - \sum_{i=1}^m \alpha_i \left[y^{(i)}(w^T x^{(i)} + b) - 1\right]

四、推导对偶问题

  1. 求极小值:对 w,bw,b 求偏导并令为零

    wL=wi=1mαiy(i)x(i)=0  w=i=1mαiy(i)x(i)\nabla_w \mathcal{L} = w - \sum_{i=1}^m \alpha_i y^{(i)} x^{(i)} = 0 \ \Rightarrow \ w = \sum_{i=1}^m \alpha_i y^{(i)} x^{(i)}
    bL=i=1mαiy(i)=0\frac{\partial}{\partial b}\mathcal{L} = -\sum_{i=1}^m \alpha_i y^{(i)} = 0
  2. 代入消元:将 ww 表达式代回拉格朗日函数

    L=i=1mαi12i,j=1mαiαjy(i)y(j)x(i),x(j)\mathcal{L} = \sum_{i=1}^m \alpha_i - \frac{1}{2}\sum_{i,j=1}^m \alpha_i \alpha_j y^{(i)} y^{(j)} \langle x^{(i)}, x^{(j)} \rangle
  3. 得到对偶问题

    maxαi=1mαi12i,j=1mαiαjy(i)y(j)x(i),x(j)\max_\alpha \sum_{i=1}^m \alpha_i - \frac{1}{2}\sum_{i,j=1}^m \alpha_i \alpha_j y^{(i)} y^{(j)} \langle x^{(i)}, x^{(j)} \rangle
    s.t. αi0, i=1mαiy(i)=0\text{s.t.} \ \alpha_i \geq 0, \ \sum_{i=1}^m \alpha_i y^{(i)} = 0

五、KKT条件与支持向量

最优解需满足KKT条件:

  1. αi0\alpha_i \geq 0
  2. y(i)(wTx(i)+b)10y^{(i)}(w^T x^{(i)} + b) - 1 \geq 0
  3. αi[y(i)(wTx(i)+b)1]=0\alpha_i \left[y^{(i)}(w^T x^{(i)} + b) - 1\right] = 0

支持向量即对应 αi>0\alpha_i > 0 的样本点,它们满足 y(i)(wTx(i)+b)=1y^{(i)}(w^T x^{(i)} + b) = 1(位于间隔边界上)。

六、最终决策函数

w=αiy(i)x(i)w = \sum \alpha_i y^{(i)} x^{(i)} 代入:

f(x)=sign(i=1mαiy(i)x(i),x+b)f(x) = \text{sign}\left(\sum_{i=1}^m \alpha_i y^{(i)} \langle x^{(i)}, x \rangle + b\right)

其中 bb 可通过支持向量计算得到:

b=y(k)i=1mαiy(i)x(i),x(k)(任选一个支持向量 x(k))b = y^{(k)} - \sum_{i=1}^m \alpha_i y^{(i)} \langle x^{(i)}, x^{(k)} \rangle \quad (\text{任选一个支持向量 } x^{(k)})

关键结论

  1. 只有支持向量的 αi>0\alpha_i > 0,其他样本的 αi=0\alpha_i = 0
  2. 决策函数仅依赖于支持向量与测试样本的内积
  3. 该形式自然延伸出核函数方法(将内积替换为核函数 K(x,z)K(x,z)