机器学习复习之支持向量机SVM
机器学习复习之支持向量机SVM
[toc]
一、线性SVM
1. 核心原理
假定有一个二分类数据集 $D={X_i, Y_i}_{i=1}^N$ ,线性是一种用于线性可分数据的分类算法,其核心思想是找到一个最优的线性决策边界(超平面),能够最大程度地将不同类别的样本分开。
超平面:$w^Tx+b=0$ ,其中 $w$ 为法向量,该公式可以由法向量正交于该超平面推导得出。
点 $x_i$ 到超平面的距离
$$
d = \frac{|w^Tx_i+b|}{||w||}
$$线性可分性:若存在 $w$ 和 $b$,使得
$$
\begin{aligned}
&w^Tx_i+b>0,\text{if}\ y_i = +1 \&w^Tx_i+b < 0, \text{if}\ y_i = -1 \
\rightarrow \quad&y_i(w^Tx_i+b)>0
\end{aligned}
$$间隔Margin: 是指超平面到最近数据点的距离
所以linear SVM的决定函数为
$$
f(x)= Sign(w^Tx+b)
$$
优化方法为最大化间隔法
$$
\begin{aligned}
\max_{w,b}\quad&\frac{1}{||w||}\min|w^Tx_i+b|\ \
\text{s.t.}\quad &y_i(w^Tx_i+b)>0 \ \text{for all} \ i=1,2,\dots,N
\end{aligned}
$$
2. 优化问题
可以看出$|w^Tx_i+b|= y_i(w^Tx_i+b)$ ,并且同时放大缩小 $w$ 和 $b$不影响margin的大小,我们可以取 $\min\ y_i(w^Tx_i+b) = 1$
原式就会变成:
$$
\begin{aligned}
&\max_{w,b} \quad\frac{1}{||w||}\ \text{s.t.} \quad y_i(w^Tx_i+b)\geq 1 \ \text{for all} \ i=1,2,\dots,N \
= &\min_{w,b}\quad \frac{||w||^2}{2}\ \text{s.t.}\quad y_i(w^Tx_i+b)\geq 1 \ \text{for all} \ i=1,2,\dots,N
\end{aligned}
$$
3. 拉格朗日乘数法与KKT条件
3.1 等式约束优化问题
考虑等式约束优化问题:
$$
\begin{aligned}
\min_{x} \quad & f(x) \
\text{s.t.} \quad & h_i(x) = 0, \quad i = 1, \ldots, m
\end{aligned}
$$
拉格朗日函数:
$$
\mathcal{L}(x, \lambda) = f(x) + \sum_{i=1}^m \lambda_i h_i(x)
$$
其中 $\lambda_i$ 为拉格朗日乘子。
在局部最优解 $x^*$ 处,存在乘子 $\lambda^*$ 使得:
$$
\begin{aligned}
\nabla_x \mathcal{L}(x^*, \lambda^*) &= 0 \
\nabla_\lambda \mathcal{L}(x^*, \lambda^*) &= 0
\end{aligned}
$$
即:
$$
\begin{aligned}
&\nabla f(x^*) + \sum_{i=1}^m \lambda_i^* \nabla h_i(x^*) = 0 \
&h_i(x^*) = 0, \quad i = 1, \ldots, m
\end{aligned}
$$
几何解释:
在最优解处,目标函数的梯度与约束函数的梯度共线:
$$
\nabla f(x^*) = -\sum_{i=1}^m \lambda_i^* \nabla h_i(x^*)
$$
3.2 KKT条件(不等式约束)
考虑不等式约束优化问题:
$$
\begin{aligned}
\min_{x} \quad & f(x) \
\text{s.t.} \quad & g_i(x) \leq 0, \quad i = 1, \ldots, p \
& h_j(x) = 0, \quad j = 1, \ldots, q
\end{aligned}
$$
拉格朗日函数:
$$
\mathcal{L}(x, \lambda, \mu) = f(x) + \sum_{i=1}^p \lambda_i g_i(x) + \sum_{j=1}^q \mu_j h_j(x)
$$
其中 $\lambda_i \geq 0$ 为不等式约束乘子,$\mu_j$ 为等式约束乘子。
在满足某些约束规格(如Slater条件)下,局部最优解 $x^*$ 处存在乘子 $\lambda^* \geq 0$, $\mu^*$ 使得:
(1) 平稳性条件(Stationarity)
$$
\nabla f(x^*) + \sum_{i=1}^p \lambda_i^* \nabla g_i(x^*) + \sum_{j=1}^q \mu_j^* \nabla h_j(x^*) = 0
$$
(2) 原始可行性条件(Primal Feasibility)
$$
\begin{aligned}
g_i(x^*) &\leq 0, \quad i = 1, \ldots, p \
h_j(x^*) &= 0, \quad j = 1, \ldots, q
\end{aligned}
$$
(3) 对偶可行性条件(Dual Feasibility)
$$
\lambda_i^* \geq 0, \quad i = 1, \ldots, p
$$
(4) 互补松弛条件(Complementary Slackness)
$$
\lambda_i^* g_i(x^*) = 0, \quad i = 1, \ldots, p
$$
$g_i(x) \leq 0$ 时,有两种情况
- $g_i(x) < 0, \text{那么约束条件时松弛的},\lambda^*_i = 0$
- $g_i(x) = 0, 那么就是等式约束$
4. 求解线性SVM优化问题
4.1 SVM的原始问题
$$
\begin{aligned}
\min_{w,b,\xi} \quad & \frac{1}{2}|w|^2 \
\text{s.t.} \quad & y_i(w^T x_i + b) \geq 1 , \quad i = 1, \ldots, n \
\end{aligned}
$$
4.2 拉格朗日函数
$$
\mathcal{L}(w,b,\alpha) = \frac{1}{2}|w|^2 - \sum_{i=1}^n \alpha_i[y_i(w^T x_i + b) - 1]
$$
4.3 KKT条件
平稳性条件:
$$
\begin{aligned}
\frac{\partial \mathcal{L}}{\partial w} &= w - \sum_{i=1}^n \alpha_i y_i x_i = 0 \
\frac{\partial \mathcal{L}}{\partial b} &= -\sum_{i=1}^n \alpha_i y_i = 0 \
\end{aligned}
$$
原始可行性:
$$
\begin{aligned}
y_i(w^T x_i + b) &\geq 1\
\end{aligned}
$$
对偶可行性:
$$
\alpha_i \geq 0
$$
互补松弛性:
$$
\begin{aligned}
\alpha_i[y_i(w^T x_i + b) - 1] &= 0 \
\end{aligned}
$$
要求解这个问题,要把原问题转化成对偶问题,对偶函数定义为原始变量最小化拉格朗日函数:
$$
\theta(\alpha) = \min_{w,b} \mathcal{L}(w,b,\alpha)
$$
第一项:
$$
\frac{1}{2}|w|^2 = \frac{1}{2} \left|\sum_{i=1}^n \alpha_i y_i x_i\right|^2 = \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j x_i^T x_j
$$
第二项:
$$
-\sum_{i=1}^n \alpha_i[y_i(w^T x_i + b) - 1] = -\sum_{i=1}^n \alpha_i y_i w^T x_i - b\sum_{i=1}^n \alpha_i y_i + \sum_{i=1}^n \alpha_i
$$
由于 $\sum_{i=1}^n \alpha_i y_i = 0$,且:
$$
\sum_{i=1}^n \alpha_i y_i w^T x_i = \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j x_i^T x_j
$$
合并所有项:
$$
\theta(\alpha) = \sum_{i=1}^n \alpha_i - \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j x_i^T x_j
$$
4.4 最终对偶问题
$$
\begin{aligned}
\max_{\alpha} \quad & \sum_{i=1}^n \alpha_i - \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j x_i^T x_j \
\text{s.t.} \quad & \sum_{i=1}^n \alpha_i y_i = 0 \
& 0 \leq \alpha_i, \quad i = 1, \ldots, n
\end{aligned}
$$
4.5 从对偶解 $\alpha_i$ 恢复原始解
- 权重向量 $w$
$$
w = \sum_{i=1}^n \alpha_i y_i x_i
$$
- 偏置项 $b$
$$
b = 1 - \sum_{i=1}^n \alpha_i y_i x_i^T x_j
$$
- 决策函数
$$
f(x) = \text{sign}\left(\sum_{i=1}^n \alpha_i y_i x_i^T x + b\right)
$$
5. 对偶问题的优势
5.1 核技巧应用
对偶问题只依赖内积 $x_i^T x_j$,$x$可替换为 $\Phi(x)$ 核函数就可以处理非线性数据:
$$
\max_{\alpha} \sum_{i=1}^n \alpha_i - \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j K(x_i, x_j)
$$
5.2 支持向量识别
最优解中:
$\alpha_i = 0$:对应非支持向量
$0 < \alpha_i$:对应边界支持向量
二、软间隔(Soft Margin)SVM
1. 硬间隔的局限性
硬间隔SVM假设数据是线性可分的:
实际问题:
- 现实数据通常有噪声和异常值
- 数据可能不是完美线性可分的,可能会有交叉
- 硬间隔容易过拟合噪声,缺少泛化能力
2. 软间隔的直观理解
软间隔允许一些样本违反间隔条件,我们需要引入 $\xi$
$$
y_i(w^T x_i + b) ≥ 1 - ξ_i\ ξ_i ≥ 0
$$
$ξ_i $ 称为”松弛变量”(slack variable),表示第i个样本的违反程度
$\xi_i = \max[0, 1-y_i(w^Tx_i+b)]$
$ξ_i = 0$: 样本正确分类且在间隔外
$0 < ξ_i < 1$: 样本正确分类但在间隔内
$ξ_i ≥ 1$: 样本被误分类
3. 软间隔SVM的数学形式
3.1 原始优化问题
$$
\begin{aligned}
\min_{w,b,\xi} \quad & \frac{1}{2}|w|^2 + C\sum_{i=1}^n \xi_i \
\text{s.t.} \quad & y_i(w^T x_i + b) \geq 1 - \xi_i, \quad i = 1, \ldots, n \
& \xi_i \geq 0, \quad i = 1, \ldots, n
\end{aligned}
$$
- $C$: 正则化参数,控制间隔宽度与误分类的权衡,$C$越大,惩罚力度就越大,如果$C = \infty$,那么就是硬间隔问题。
- $\xi_i$: 松弛变量,度量第i个样本的间隔违反程度
3.2 软间隔的对偶问题
- 拉格朗日函数
$$
\mathcal{L}(w,b,\xi,\alpha,\beta) = \frac{1}{2}|w|^2 + C\sum_{i=1}^n \xi_i - \sum_{i=1}^n \alpha_i[y_i(w^T x_i + b) - 1 + \xi_i] - \sum_{i=1}^n \beta_i \xi_i
$$
- KKT条件
$$
\frac{\partial L}{\partial \mathbf{w}} = \mathbf{w} - \sum_{i=1}^{n} \alpha_i y_i \mathbf{x}i = 0 \quad \Rightarrow \quad \mathbf{w} = \sum{i=1}^{n} \alpha_i y_i \mathbf{x}_i
$$
这个结果与硬间隔SVM一致,说明最优超平面的法向量仍然是支持向量的线性组合。
$$
\frac{\partial L}{\partial b} = - \sum_{i=1}^{n} \alpha_i y_i = 0 \quad \Rightarrow \quad \sum_{i=1}^{n} \alpha_i y_i = 0
$$
这个约束也与硬间隔SVM一致。
$$
\frac{\partial L}{\partial \xi_i} = C - \alpha_i - \mu_i = 0 \quad \Rightarrow \quad \alpha_i + \mu_i = C
$$
这是一个新的重要关系式。由于 $\alpha_i \geq 0$ 和 $\mu_i \geq 0$,我们可以得到:
$$
0 \leq \alpha_i \leq C
$$
这个条件收紧了对 (\alpha_i) 的限制。
我们将上面三个求导结果代入拉格朗日函数 (L),以消去原变量 $\mathbf{w}, b, \boldsymbol{\xi}$ 和 $\boldsymbol{\mu}$。
$$
\begin{aligned}
L(\mathbf{w}, b, \boldsymbol{\xi}, \boldsymbol{\alpha}, \boldsymbol{\mu}) &= \frac{1}{2} |\mathbf{w}|^2 + C \sum_{i=1}^{n} \xi_i - \sum_{i=1}^{n} \alpha_i \big[ y_i(\mathbf{w}^T \mathbf{x}i + b) - 1 + \xi_i \big] - \sum{i=1}^{n} \mu_i \xi_i \
&= \frac{1}{2} |\mathbf{w}|^2 - \sum_{i=1}^{n} \alpha_i y_i \mathbf{w}^T \mathbf{x}i - b \sum{i=1}^{n} \alpha_i y_i + \sum_{i=1}^{n} \alpha_i + \sum_{i=1}^{n} \xi_i (C - \alpha_i - \mu_i)
\end{aligned}
$$
代入上式:
$$
\begin{aligned}
L &= \frac{1}{2} \left( \sum_{i=1}^{n} \alpha_i y_i \mathbf{x}i \right)^T \left( \sum{j=1}^{n} \alpha_j y_j \mathbf{x}j \right) - \sum{i=1}^{n} \alpha_i y_i \left( \sum_{j=1}^{n} \alpha_j y_j \mathbf{x}j \right)^T \mathbf{x}i - 0 + \sum{i=1}^{n} \alpha_i + 0 \
&= \frac{1}{2} \sum{i=1}^{n} \sum_{j=1}^{n} \alpha_i \alpha_j y_i y_j \mathbf{x}i^T \mathbf{x}j - \sum{i=1}^{n} \sum{j=1}^{n} \alpha_i \alpha_j y_i y_j \mathbf{x}i^T \mathbf{x}j + \sum{i=1}^{n} \alpha_i \
&= -\frac{1}{2} \sum{i=1}^{n} \sum_{j=1}^{n} \alpha_i \alpha_j y_i y_j \mathbf{x}i^T \mathbf{x}j + \sum{i=1}^{n} \alpha_i
\end{aligned}
$$
因此,我们得到了对偶问题,即最大化:
$$
\begin{aligned}
\max{\boldsymbol{\alpha}}& \quad \sum_{i=1}^{n} \alpha_i - \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \alpha_i \alpha_j y_i y_j \mathbf{x}_i^T \mathbf{x}j \
\text{s.t.}&\sum{i=1}^{n} \alpha_i y_i = 0 \
& 0 \leq \alpha_i \leq C, \quad i = 1, \dots, n
\end{aligned}
$$
与硬间隔SVM的对偶问题相比,唯一的区别是约束条件 (\alpha_i \geq 0) 变成了 (0 \leq \alpha_i \leq C)。
3.3 KKT互补松弛条件与支持向量
KKT条件中的互补松弛条件为我们提供了关于支持向量的重要信息:
$$
\begin{aligned}
\alpha_i \big[ y_i(\mathbf{w}^T \mathbf{x}_i + b) - 1 + \xi_i \big] &= 0 \
\mu_i \xi_i &= 0
\end{aligned}
$$
结合关系式 $\alpha_i + \mu_i = C$,我们可以分析出样本点的类型:
$\alpha_i = 0$:
- 由条件1,这不对约束1产生影响。
- 此时 $\mu_i = C$,可得 $\xi_i = 0$。
- 这意味着 $ y_i(\mathbf{w}^T \mathbf{x}_i + b) \geq 1 $。该样本被正确分类且位于间隔之外,是非支持向量。
$0 < \alpha_i < C$:
由条件1,必须有 $y_i(\mathbf{w}^T \mathbf{x}_i + b) - 1 + \xi_i = 0$。
此时 $\mu_i = C - \alpha_i > 0$,可得 $\xi_i = 0$。
因此 $y_i(\mathbf{w}^T \mathbf{x}_i + b) = 1$。该样本恰好落在间隔边界上,是标准支持向量。我们可以利用这些样本来计算 $b$:
$$
b = y_i - \mathbf{w}^T \mathbf{x}i = y_i - \sum{j=1}^{n} \alpha_j y_j \mathbf{x}_j^T \mathbf{x}_i
$$
$\alpha_i = C$:
- 由条件1,必须有 $y_i(\mathbf{w}^T \mathbf{x}_i + b) - 1 + \xi_i = 0$。
- 此时 $\mu_i = C - C = 0$,条件2对 $\xi_i$ 没有约束。
- 因此 (y_i(\mathbf{w}^T \mathbf{x}_i + b) = 1 - \xi_i)。
- 由于 $\xi_i \geq 0$,所以 $y_i(\mathbf{w}^T \mathbf{x}_i + b) \leq 1$。
- 如果 $0 \leq \xi_i < 1$,样本位于间隔内部,但在正确的一侧。
- 如果 $\xi_i \geq 1$,样本被错误分类。
- 这些样本被称为边界支持向量。
最终,决策函数与硬间隔SVM形式相同:
$$
f(\mathbf{x}) = \text{sign}\left( \mathbf{w}^T \mathbf{x} + b \right) = \text{sign}\left( \sum_{i=1}^{n} \alpha_i y_i \mathbf{x}_i^T \mathbf{x} + b \right)
$$
其中,只有支持向量(即 $\alpha_i > 0$ 的样本)对求和有贡献。
三、SVM的优缺点
1. 优点
- 在高维空间中有效
- 原理:SVM的核心是寻找最大间隔超平面,其性能依赖于数据点之间的内积(或核函数计算),而不是空间的维度本身。
- 例子:在文本分类中,特征维度(词汇量)可能高达数万维,但SVM依然能很好地工作。
- 特征数大于样本数时仍然有效
- 适用场景:在生物信息学、基因表达数据分析中,通常有成千上万个基因(特征),但只有几十或几百个样本。
- 对比:其他算法(如决策树、基于距离的方法)在这种情况下容易过拟合,但SVM通过最大化间隔来控制模型复杂度。
- 内存高效(使用支持向量)
- 实际意义:训练完成后,只需要存储支持向量而不是全部训练数据,对于大规模应用非常节省内存。
- versatile(核函数灵活)
常用核函数:
- 线性核:
K(xi, xj) = xiᵀxj(适用于线性可分数据) - 多项式核:
K(xi, xj) = (γxiᵀxj + r)^d - RBF核:
K(xi, xj) = exp(-γ||xi - xj||²)(最常用) - Sigmoid核:
K(xi, xj) = tanh(γxiᵀxj + r)
2. 缺点
- 特征数远大于样本数时的过拟合风险
- 解决方案:
- 优先选择线性核
- 增加正则化强度(减小C值)
- 进行特征选择降维
- 概率估计需要额外计算
问题所在
内部实现原理:
- 对每个类别进行5折交叉验证
- 使用Platt缩放(sigmoid函数)将决策函数值转换为概率
- 这个过程相当于训练了多个模型,非常耗时
