SVM原理详解
- 1、超平面
- 2、SVM原理
-
- [1. 问题定义](#1. 问题定义)
- [2. 分类决策](#2. 分类决策)
- [3. 最大化间隔](#3. 最大化间隔)
- [4. 优化目标](#4. 优化目标)
- 3、凸优化问题
-
- [1. 原始优化问题](#1. 原始优化问题)
- [2. 拉格朗日乘子法](#2. 拉格朗日乘子法)
- [3. 拉格朗日函数分析](#3. 拉格朗日函数分析)
- [4. 求解对 w w w 和 b b b 的极值](#4. 求解对 w w w 和 b b b 的极值)
- [5. 构造对偶问题](#5. 构造对偶问题)
- [6、通过支持向量求解 b b b](#6、通过支持向量求解 b b b)
- [7. 对偶问题的解法](#7. 对偶问题的解法)
- 4、非线性如何划分
-
- [1. 非线性数据问题](#1. 非线性数据问题)
- [2. 核技巧的核心思想](#2. 核技巧的核心思想)
- [3. 常见的核函数](#3. 常见的核函数)
-
- [1. 线性核(Linear Kernel)](#1. 线性核(Linear Kernel))
- [2. 多项式核(Polynomial Kernel)](#2. 多项式核(Polynomial Kernel))
- [3. 高斯径向基核(RBF Kernel)/ 高斯核](#3. 高斯径向基核(RBF Kernel)/ 高斯核)
- [4. Sigmoid 核(类似于神经网络的激活函数)](#4. Sigmoid 核(类似于神经网络的激活函数))
- [4. 使用核技巧的 SVM 优化问题](#4. 使用核技巧的 SVM 优化问题)
- [5. SVM 的决策函数](#5. SVM 的决策函数)
- [6. 核函数的选择](#6. 核函数的选择)
- 5、软间隔
- 6、正则化:控制模型的复杂度
-
- [C C C 的影响:](#C C C 的影响:)
- 7、软间隔和核函数结合
1、超平面
在数学和几何中,超平面 (Hyperplane)是一个通用化的几何概念。它是用来描述高维空间中的某个维度少一维的子空间。例如:
- 在二维空间(平面)中,超平面就是一条直线,它将平面分成两个部分。
- 在三维空间(我们通常理解的三维世界)中,超平面是一个平面,它将空间分成两个部分。
- 在更高的维度中,例如四维或更高维空间,超平面则是比空间维数低一维的几何对象,它同样将高维空间分成两个部分。
从数学表达上,超平面通常可以用一个线性方程来表示,如:
w 1 x 1 + w 2 x 2 + ⋯ + w n x n + b = 0 w_1 x_1 + w_2 x_2 + \cdots + w_n x_n + b = 0 w1x1+w2x2+⋯+wnxn+b=0
其中 w 1 , w 2 , ... , w n w_1, w_2, \dots, w_n w1,w2,...,wn 是权重, b b b 是偏差项,而 x 1 , x 2 , ... , x n x_1, x_2, \dots, x_n x1,x2,...,xn 是 n 维空间中的坐标。这个方程的解就是超平面在该空间中的位置。
在机器学习(尤其是支持向量机)中,超平面用于将数据点分成不同的类别。
2、SVM原理
支持向量机(Support Vector Machine, SVM)是一种监督学习算法,广泛用于分类问题。它的核心思想是通过一个超平面来最大化不同类别之间的间隔,从而实现分类。下面我们从数学的角度来详细说明支持向量机的原理。
1. 问题定义
假设我们有一个线性可分的二分类问题,训练数据集表示为 ( { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ... , ( x n , y n ) } ( \{(x_1, y_1), (x_2, y_2), \dots, (x_n, y_n)\} ({(x1,y1),(x2,y2),...,(xn,yn)}),其中 ( x i ∈ R d ( x_i \in \mathbb{R}^d (xi∈Rd) 是特征向量, ( y i ∈ { − 1 , 1 } ( y_i \in \{-1, 1\} (yi∈{−1,1}) 是类标签。
SVM 的目标是找到一个超平面将不同类别的数据点分开,这个超平面的方程可以表示为:
w T x + b = 0 w^T x + b = 0 wTx+b=0
其中:
- ( w ( w (w) 是法向量,决定超平面的方向。
- ( b ( b (b) 是偏置项,决定超平面与原点的距离。
2. 分类决策
对于给定的样本点 ( x ),分类决策依据超平面的方程进行:
- 如果 ( w T x + b > 0 ( w^T x + b > 0 (wTx+b>0),则分类为 ( 1 ) 类。
- 如果 ( w T x + b < 0 ( w^T x + b < 0 (wTx+b<0),则分类为 ( -1 ) 类。
对于给定的训练样本 ( ( x i , y i ) ( (x_i, y_i) ((xi,yi)),其中 ( y i ∈ { 1 , − 1 } ( y_i \in \{1, -1\} (yi∈{1,−1}) 表示分类标签,支持向量机的目标是确保这些样本点能够被正确分类。
- 如果 ( y i = 1 ( y_i = 1 (yi=1)(正类),我们希望该点在超平面的正侧,即满足:
w T x i + b > 0 w^T x_i + b > 0 wTxi+b>0
- 如果 ( y i = − 1 ( y_i = -1 (yi=−1)(负类),我们希望该点在超平面的负侧,即满足:
w T x i + b < 0 w^T x_i + b < 0 wTxi+b<0
可以将这两个条件合并为一个不等式:
y i ( w T x i + b ) > 0 y_i (w^T x_i + b) > 0 yi(wTxi+b)>0
这个条件确保了所有样本点都被正确分类。对于 ( y i = 1 ( y_i = 1 (yi=1)的样本,如果 ( w T x i + b > 0 ( w^T x_i + b > 0 (wTxi+b>0),则 y i ( w T x i + b ) = 1 ⋅ ( w T x i + b ) > 0 y_i (w^T x_i + b) = 1 \cdot (w^T x_i + b) > 0 yi(wTxi+b)=1⋅(wTxi+b)>0;对于 ( y i = − 1 ( y_i = -1 (yi=−1) 的样本,如果 ( w T x i + b < 0 ( w^T x_i + b < 0 (wTxi+b<0),则 y i ( w T x i + b ) = − 1 ⋅ ( w T x i + b ) > 0 y_i (w^T x_i + b) = -1 \cdot (w^T x_i + b) > 0 yi(wTxi+b)=−1⋅(wTxi+b)>0。
得到约束条件
在支持向量之外的样本,应该位于超平面外更远的地方,因此我们可以将分类条件拓展为所有样本都必须至少满足 ( y i ( w T x i + b ) ≥ 1 ( y_i (w^T x_i + b) \geq 1 (yi(wTxi+b)≥1),即:
y i ( w T x i + b ) ≥ 1 ∀ i y_i (w^T x_i + b) \geq 1 \quad \forall i yi(wTxi+b)≥1∀i
这个条件表示所有样本点必须被正确分类 ,并且支持向量与超平面的距离为 1。
3. 最大化间隔
SVM 的关键在于找到能够最大化间隔 (margin)的超平面。间隔指的是超平面到距离它最近的点的距离。
- 支持向量:离超平面最近的那些点称为支持向量。SVM 试图使得支持向量到超平面的距离最大化。
- 间隔的计算 :对于一个点 ( x i ( x_i (xi),它到超平面的距离是:
Distance = ∣ w T x i + b ∣ ∥ w ∥ \text{Distance} = \frac{|w^T x_i + b|}{\|w\|} Distance=∥w∥∣wTxi+b∣
为了使得间隔最大化,支持向量机引入了支持向量的概念。支持向量是最靠近超平面的点,其几何上距离超平面的距离为 ( 1 ∥ w ∥ \frac{1}{\|w\|} ∥w∥1)。我们希望通过约束条件,将最靠近超平面的点(支持向量)的几何距离标准化为 1。
因此,对于支持向量,我们约定满足刚好分类正确的条件:
y i ( w T x i + b ) = 1 y_i (w^T x_i + b) = 1 yi(wTxi+b)=1
这意味着支持向量到超平面的距离刚好为 1。
最终,间隔变成:
Distance = 1 ∥ w ∥ \text{Distance} =\frac{1}{\|w\|} Distance=∥w∥1
4. 优化目标
SVM 的目标是最大化间隔,即最小化 ( ∥ w ∥ ( \|w\| (∥w∥)。因此,我们的优化问题可以写为:
min w , b 1 2 ∥ w ∥ 2 \min_{w, b} \frac{1}{2} \|w\|^2 w,bmin21∥w∥2
同时,约束条件是所有样本点要被正确分类,即:
y i ( w T x i + b ) ≥ 1 ∀ i y_i (w^T x_i + b) \geq 1 \quad \forall i yi(wTxi+b)≥1∀i
这是一个凸二次优化问题,能够通过拉格朗日乘子法和对偶问题来求解。
3、凸优化问题
将支持向量机(SVM)的优化问题转换为对偶问题,主要是通过拉格朗日乘子法来处理约束条件。下面是详细步骤:
1. 原始优化问题
我们从 SVM 的原始优化问题开始。SVM 的目的是找到一个超平面 ( w T x + b = 0 ( w^T x + b = 0 (wTx+b=0) 来分隔两个类别,同时最大化间隔。原始问题为:
优化目标
min w , b 1 2 ∥ w ∥ 2 \min_{w, b} \frac{1}{2} \|w\|^2 w,bmin21∥w∥2
约束条件
y i ( w T x i + b ) ≥ 1 ∀ i y_i (w^T x_i + b) \geq 1 \quad \forall i yi(wTxi+b)≥1∀i
2. 拉格朗日乘子法
为了将此问题转换为对偶问题,我们引入拉格朗日乘子 ( α i ≥ 0 ( \alpha_i \geq 0 (αi≥0),为每个约束 ( y i ( w T x i + b ) − 1 ≥ 0 ( y_i (w^T x_i + b) - 1 \geq 0 (yi(wTxi+b)−1≥0) 对应一个拉格朗日乘子。原始的拉格朗日函数 ( L ( w , b , α ) ( L(w, b, \alpha) (L(w,b,α)) 为:
L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 n α i [ y i ( w T x i + b ) − 1 ] L(w, b, \alpha) = \frac{1}{2} \|w\|^2 - \sum_{i=1}^n \alpha_i \left[ y_i (w^T x_i + b) - 1 \right] L(w,b,α)=21∥w∥2−i=1∑nαi[yi(wTxi+b)−1]
其中:
- ( α i ≥ 0 ( \alpha_i \geq 0 (αi≥0) 是拉格朗日乘子,对应于每个约束。
3. 拉格朗日函数分析
拉格朗日函数 ( L ( w , b , α ) ( L(w, b, \alpha) (L(w,b,α)) 包含两个部分:
- 第一部分是目标函数 ( 1 2 ∥ w ∥ 2 ( \frac{1}{2} \|w\|^2 (21∥w∥2),它希望最小化法向量的模,等价于最大化间隔。
- 第二部分包含所有约束的乘积,确保分类正确。
为了求解这个优化问题,我们需要同时最小化 w w w 和 b b b(主问题),并且最大化 α \alpha α(对偶问题)。
4. 求解对 w w w 和 b b b 的极值
接下来,我们对 w w w 和 b b b 进行最小化。首先对 w w w 求偏导数,并令其等于 0:
∂ L ( w , b , α ) ∂ w = w − ∑ i = 1 n α i y i x i = 0 \frac{\partial L(w, b, \alpha)}{\partial w} = w - \sum_{i=1}^n \alpha_i y_i x_i = 0 ∂w∂L(w,b,α)=w−i=1∑nαiyixi=0
得到:
w = ∑ i = 1 n α i y i x i w = \sum_{i=1}^n \alpha_i y_i x_i w=i=1∑nαiyixi
这表明,最终的法向量 w w w 是支持向量的线性组合。
然后对 b b b 求偏导数,并令其等于 0:
∂ L ( w , b , α ) ∂ b = ∑ i = 1 n α i y i = 0 \frac{\partial L(w, b, \alpha)}{\partial b} = \sum_{i=1}^n \alpha_i y_i = 0 ∂b∂L(w,b,α)=i=1∑nαiyi=0
因此,我们得到一个约束条件:
∑ i = 1 n α i y i = 0 \sum_{i=1}^n \alpha_i y_i = 0 i=1∑nαiyi=0
5. 构造对偶问题
现在,我们将 w w w的表达式 ( w = ∑ i = 1 n α i y i x i ( w = \sum_{i=1}^n \alpha_i y_i x_i (w=∑i=1nαiyixi) 代入到拉格朗日函数中,消去 w w w:
将 ( w = ∑ i = 1 n α i y i x i ( w = \sum_{i=1}^n \alpha_i y_i x_i (w=∑i=1nαiyixi) 代入到 ( 1 2 ∥ w ∥ 2 ( \frac{1}{2} \|w\|^2 (21∥w∥2) 中:
1 2 ∥ w ∥ 2 = 1 2 ( ∑ i = 1 n α i y i x i ) T ( ∑ j = 1 n α j y j x j ) = 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i T x j \frac{1}{2} \|w\|^2 = \frac{1}{2} \left( \sum_{i=1}^n \alpha_i y_i x_i \right)^T \left( \sum_{j=1}^n \alpha_j y_j x_j \right) = \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j x_i^T x_j 21∥w∥2=21(i=1∑nαiyixi)T(j=1∑nαjyjxj)=21i=1∑nj=1∑nαiαjyiyjxiTxj
然后,我们将 w w w的表达式代入拉格朗日函数的第二项:
− ∑ i = 1 n α i [ y i ( w T x i + b ) − 1 ] = − ∑ i = 1 n α i y i ( ∑ j = 1 n α j y j x j T x i ) + ∑ i = 1 n α i y i b + ∑ i = 1 n α i -\sum_{i=1}^n \alpha_i \left[ y_i (w^T x_i + b) - 1 \right] = - \sum_{i=1}^n \alpha_i y_i \left( \sum_{j=1}^n \alpha_j y_j x_j^T x_i \right)+\sum_{i=1}^n \alpha_i y_i b+\sum_{i=1}^n \alpha_i −i=1∑nαi[yi(wTxi+b)−1]=−i=1∑nαiyi(j=1∑nαjyjxjTxi)+i=1∑nαiyib+i=1∑nαi
由上述约束条件:
∑ i = 1 n α i y i = 0 \sum_{i=1}^n \alpha_i y_i = 0 i=1∑nαiyi=0
得到对偶问题的优化目标:
max α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i T x j \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 x_i^T x_j αmaxi=1∑nαi−21i=1∑nj=1∑nαiαjyiyjxiTxj
对偶问题的约束条件:
- ( α i ≥ 0 ( \alpha_i \geq 0 (αi≥0)
- ( ∑ i = 1 n α i y i = 0 ( \sum_{i=1}^n \alpha_i y_i = 0 (∑i=1nαiyi=0)
通过求解这个对偶问题,我们可以得到每个样本对应的拉格朗日乘子 ( α i ( \alpha_i (αi)。再根据 ( α i ( \alpha_i (αi) 的值,求得 w w w 和 b b b,从而得到最终的分类决策函数。
在支持向量机(SVM)的对偶问题求解完成后,拉格朗日乘子 α i \alpha_i αi 的解已经找到。通过这些解,我们可以计算出权重向量 w w w。不过,我们仍需要求解偏置项 b b b,它是决策边界的偏移量。
6、通过支持向量求解 b b b
由于 b b b出现在 SVM 的决策函数 g ( x ) = w T x + b g(x) = w^T x + b g(x)=wTx+b中,求解 b b b 时我们需要利用支持向量 。支持向量是那些位于边界上 的训练样本,即它们满足 y i ( w T x i + b ) = 1 y_i (w^T x_i + b) = 1 yi(wTxi+b)=1。支持向量对应的拉格朗日乘子 α i > 0 \alpha_i > 0 αi>0,而其他样本的 α i = 0 \alpha_i = 0 αi=0。
我们可以通过任意一个支持向量的公式来求解 b b b。
支持向量的条件
对于支持向量 x i x_i xi,有:
y i ( w T x i + b ) = 1 y_i (w^T x_i + b) = 1 yi(wTxi+b)=1
将 w w w 的表达式 w = ∑ j = 1 n α j y j x j w = \sum_{j=1}^n \alpha_j y_j x_j w=∑j=1nαjyjxj 代入上式(别忘了,我们有 ( y i ∈ { − 1 , 1 } ( y_i \in \{-1, 1\} (yi∈{−1,1})):
y i ( ∑ j = 1 n α j y j x j T x i + b ) = 1 y_i \left( \sum_{j=1}^n \alpha_j y_j x_j^T x_i + b \right) = 1 yi(j=1∑nαjyjxjTxi+b)=1
化简得:
∑ j = 1 n α j y j x j T x i + b = y i \sum_{j=1}^n \alpha_j y_j x_j^T x_i + b = y_i j=1∑nαjyjxjTxi+b=yi
从这里我们可以解出 b b b:
b = y i − ∑ j = 1 n α j y j x j T x i b = y_i - \sum_{j=1}^n \alpha_j y_j x_j^T x_i b=yi−j=1∑nαjyjxjTxi
要计算 b b b,我们只需要找到一个支持向量 x i x_i xi,然后将其代入上述公式即可。更一般地,我们也可以使用多个支持向量的平均值来求解 b b b,以提高计算的稳定性。具体步骤如下:
- 选择多个支持向量 :这些支持向量是满足 α i > 0 \alpha_i > 0 αi>0 的样本点。
- 代入求 b b b 的公式 :
- 对每一个支持向量 x i x_i xi,我们可以使用公式:
b = y i − ∑ j = 1 n α j y j x j T x i b = y_i - \sum_{j=1}^n \alpha_j y_j x_j^T x_i b=yi−j=1∑nαjyjxjTxi - 若选择多个支持向量,可以取它们对应的 b b b 的平均值:
b = 1 m ∑ i ∈ S V ( y i − ∑ j = 1 n α j y j x j T x i ) b = \frac{1}{m} \sum_{i \in SV} \left( y_i - \sum_{j=1}^n \alpha_j y_j x_j^T x_i \right) b=m1i∈SV∑(yi−j=1∑nαjyjxjTxi)
其中, S V SV SV表示支持向量的集合, m m m 是支持向量的个数。
- 对每一个支持向量 x i x_i xi,我们可以使用公式:
7. 对偶问题的解法
通过求解上述的对偶优化问题,我们可以得到拉格朗日乘子 ( α i ( \alpha_i (αi)。找到最优解后,法向量 w w w可以由支持向量(那些 ( α i > 0 ( \alpha_i > 0 (αi>0))的线性组合表示为:
w = ∑ i = 1 n α i y i x i w = \sum_{i=1}^n \alpha_i y_i x_i w=i=1∑nαiyixi
代入 g ( x ) = w T x + b g(x)=w^T x + b g(x)=wTx+b,最终用于分类的决策函数为:
f ( x ) = sign ( ∑ i = 1 n α i y i x i T x + b ) f(x) = \text{sign}\left(\sum_{i=1}^n \alpha_i y_i x_i^T x + b \right) f(x)=sign(i=1∑nαiyixiTx+b)
其中 b b b可以通过支持向量求得。
4、非线性如何划分
支持向量机(SVM)通过一种称为核技巧(Kernel Trick)的方法来处理非线性数据。基本思想是:将原始的输入数据从低维的非线性可分空间 映射到高维空间,在这个高维空间中,数据变得线性可分,然后再使用线性SVM进行分类。具体步骤和方法如下:
1. 非线性数据问题
在原始空间中,SVM只能找到一个线性超平面来分割数据。然而,很多数据集是非线性可分的,线性分类器在这些情况下无法取得好的效果。例如:
- 数据在二维平面中是非线性分布的,例如以圆形或螺旋形方式分布。
- 线性SVM无法找到一个直线或平面来正确分类这些数据。
为了解决这个问题,SVM需要将原始数据映射到一个更高的维度,在这个高维空间中,数据可能就变得线性可分了。
2. 核技巧的核心思想
SVM 并不直接将数据映射到高维空间,而是通过使用一种称为核函数(Kernel Function)的方法,避免实际地进行高维计算。核函数能够计算两个样本在高维空间中的内积,而无需显式地进行高维映射。
SVM 的优化问题依赖于样本之间的内积 (即 ( x i ⋅ x j ( x_i \cdot x_j (xi⋅xj)),我们可以通过核函数来计算这个内积:
K ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) K(x_i, x_j) = \phi(x_i)^T \phi(x_j) K(xi,xj)=ϕ(xi)Tϕ(xj)
其中:
- x i x_i xi 和 x j x_j xj 是原始空间中的样本。
- ϕ ( x ) \phi(x) ϕ(x) 是将 x x x 从原始空间映射到高维空间的映射函数。
- K ( x i , x j ) K(x_i, x_j) K(xi,xj) 是核函数,它计算了 x i x_i xi 和 x j x_j xj 在高维空间中的内积。
通过使用核函数,我们可以在不显式进行高维映射的情况下,计算出在高维空间中样本之间的内积,从而利用线性SVM进行分类。
3. 常见的核函数
SVM 使用核函数来替代直接的内积计算,不同的核函数对应于不同的高维映射。常见的核函数有:
1. 线性核(Linear Kernel)
K ( x i , x j ) = x i T x j K(x_i, x_j) = x_i^T x_j K(xi,xj)=xiTxj
这个核函数表示在原始空间中不进行任何映射,直接应用线性SVM。适用于数据已经线性可分的情况。
2. 多项式核(Polynomial Kernel)
K ( x i , x j ) = ( x i T x j + c ) d K(x_i, x_j) = (x_i^T x_j + c)^d K(xi,xj)=(xiTxj+c)d
这个核函数将数据映射到高维多项式空间,适用于非线性关系可以用多项式模型表示的情况。
- c c c 是常数(通常 c ≥ 0 c \geq 0 c≥0)。
- d d d 是多项式的阶数,控制映射的维度。
3. 高斯径向基核(RBF Kernel)/ 高斯核
K ( x i , x j ) = exp ( − ∥ x i − x j ∥ 2 2 σ 2 ) K(x_i, x_j) = \exp\left( -\frac{\|x_i - x_j\|^2}{2\sigma^2} \right) K(xi,xj)=exp(−2σ2∥xi−xj∥2)
RBF 核将数据映射到无限维的空间,适用于各种非线性数据。它非常灵活且常用于实际问题中。 σ \sigma σ 控制高斯函数的宽度,决定了每个数据点的"影响范围"。
4. Sigmoid 核(类似于神经网络的激活函数)
K ( x i , x j ) = tanh ( κ x i T x j + c ) K(x_i, x_j) = \tanh(\kappa x_i^T x_j + c) K(xi,xj)=tanh(κxiTxj+c)
Sigmoid 核在某些情况下类似于神经网络中的一个激活函数,适用于神经网络相关的任务。
4. 使用核技巧的 SVM 优化问题
使用核函数后,SVM 的优化目标和对偶问题发生了一些变化。原始的对偶优化问题依赖于样本之间的内积 ( x i ⋅ x j ( x_i \cdot x_j (xi⋅xj),现在变为依赖于核函数:
对偶优化目标:
max α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j K ( x i , x j ) \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) αmaxi=1∑nαi−21i=1∑nj=1∑nαiαjyiyjK(xi,xj)
约束条件:
- α i ≥ 0 \alpha_i \geq 0 αi≥0
- ∑ i = 1 n α i y i = 0 \sum_{i=1}^n \alpha_i y_i = 0 ∑i=1nαiyi=0
在这里,内积 x i T x j x_i^T x_j xiTxj 被核函数 K ( x i , x j ) K(x_i, x_j) K(xi,xj) 替代。因此,在高维空间中的优化依然是线性问题,但是通过核函数的作用,解决了原始空间中的非线性问题。
5. SVM 的决策函数
训练完成后,SVM 的分类决策函数也依赖于核函数,表示为:
f ( x ) = ∑ i = 1 n α i y i K ( x i , x ) + b f(x) = \sum_{i=1}^n \alpha_i y_i K(x_i, x) + b f(x)=i=1∑nαiyiK(xi,x)+b
其中, α i \alpha_i αi 是拉格朗日乘子, K ( x i , x ) K(x_i, x) K(xi,x) 是核函数,它计算新样本 x x x 与训练样本 x i x_i xi 的相似度。
- 如果使用线性核,这个决策函数就等价于线性SVM。
- 如果使用非线性核(例如 RBF 核),决策函数将是一种非线性分类器。
6. 核函数的选择
选择合适的核函数对于非线性问题的解决至关重要:
- 线性核适用于线性可分或接近线性可分的数据。
- 多项式核 适用于多项式关系较强的数据,但阶数 d d d 需要调节。
- RBF 核是最常用的核函数之一,它可以很好地处理复杂的非线性数据。
- Sigmoid 核与神经网络类似,在特定应用中有时会使用,但不如 RBF 核普遍。
即使有了核函数,支持向量机(SVM)仍需要引入软间隔 和正则化,以增强对噪声和不可分数据的鲁棒性。以下是引入软间隔和正则化的原因及其对应的数学推导和原理。
5、软间隔
虽然通过核函数可以将非线性数据映射到高维空间,并且使其在高维空间中线性可分,但在实际数据集中,有噪声的样本或错误标注的样本可能无法被完全正确分类。因此,直接使用一个完全的线性可分分类器(硬间隔SVM)可能会导致以下问题:
- 过拟合:当分类器过于严格地尝试将所有样本分类正确时,它可能会对数据中的噪声过于敏感,从而对训练数据过拟合,无法很好地泛化到新的数据。
- 无法处理不可分数据:某些数据集中,数据点在高维空间中依然不是完全线性可分的,硬间隔SVM无法找到一个有效的超平面来区分这些数据。
因此,引入软间隔(Soft Margin)是为了允许某些样本可以违反分类间隔要求,以提高模型的鲁棒性,并控制模型的复杂度,避免过拟合。
1、允许部分错误分类
为了应对上述问题,SVM 引入了软间隔的概念。软间隔允许一些样本违反间隔条件,即允许它们出现在错误的一侧,或者没有完全位于正确的边界上。为此,我们引入松弛变量(slack variables) ξ i \xi_i ξi 来表示每个样本违反间隔的程度。
软间隔 SVM 的目标函数和约束条件
在软间隔 SVM 中,优化问题变为在保持最大间隔的同时,允许一定的分类错误。引入松弛变量后的优化问题可以表示为:
目标函数:
min w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 n ξ i \min_{w, b, \xi} \ \frac{1}{2} \|w\|^2 + C \sum_{i=1}^n \xi_i w,b,ξmin 21∥w∥2+Ci=1∑nξi
其中:
- 1 2 ∥ w ∥ 2 \frac{1}{2} \|w\|^2 21∥w∥2 是与硬间隔 SVM 一致的间隔最大化目标。
- C ∑ i = 1 n ξ i C \sum_{i=1}^n \xi_i C∑i=1nξi 是为了惩罚违反间隔的样本, ξ i ≥ 0 \xi_i \geq 0 ξi≥0 表示第 i i i 个样本的松弛程度。
- C C C 是一个正则化参数 ,用来控制模型在最大间隔和分类错误之间的权衡。较大的 C C C 倾向于减少分类错误,较小的 C C C 则允许更多分类错误,从而使间隔更大。
约束条件:
y i ( w T x i + b ) ≥ 1 − ξ i ∀ i y_i (w^T x_i + b) \geq 1 - \xi_i \quad \forall i yi(wTxi+b)≥1−ξi∀i
和
ξ i ≥ 0 ∀ i \xi_i \geq 0 \quad \forall i ξi≥0∀i
这里, y i ( w T x i + b ) ≥ 1 − ξ i y_i (w^T x_i + b) \geq 1 - \xi_i yi(wTxi+b)≥1−ξi 意味着每个样本的分类间隔必须至少为 1 − ξ i 1 - \xi_i 1−ξi,并且 ξ i \xi_i ξi 是允许间隔违背的程度。当 ξ i = 0 \xi_i = 0 ξi=0 时,样本严格满足分类间隔条件;当 ξ i > 0 \xi_i > 0 ξi>0 时,样本位于间隔内部或被错误分类。
6、正则化:控制模型的复杂度
在软间隔 SVM 中,正则化 通过引入参数 C C C 来控制模型的复杂度。它的作用是调整间隔最大化和分类错误之间的权衡。
C C C 的影响:
- 较大的 C C C:表示对分类错误的惩罚更大,因此模型会更严格地尝试将每个样本正确分类,但可能导致过拟合,因为它会对噪声样本过于敏感。
- 较小的 C C C:表示对分类错误的容忍度更高,因此模型会允许更多样本违反分类间隔,间隔可能更大,但泛化能力更强。
正则化在数学上通过目标函数中的 ( C ∑ i = 1 n ξ i ( C \sum_{i=1}^n \xi_i (C∑i=1nξi) 项来实现。此项增加了对违反分类间隔样本的惩罚,并且通过调节 ( C ) 的值来调整对错误分类的容忍度。
7、软间隔和核函数结合
即使引入了核函数来处理非线性数据,仍然有必要使用软间隔和正则化。原因是即便数据被映射到高维空间,有些数据仍可能不完全线性可分,或者存在噪声样本,这些噪声样本可能导致分类器出现过拟合。因此,结合核函数和软间隔可以增强分类器的泛化能力。
使用核函数的软间隔 SVM 优化目标
我们现在将核函数引入到软间隔 SVM 的对偶问题中。对偶问题的形式与原始 SVM 相似,但会包含惩罚项 C C C。
对偶优化问题
max α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j K ( x i , x j ) \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) αmaxi=1∑nαi−21i=1∑nj=1∑nαiαjyiyjK(xi,xj)
约束条件
- 0 ≤ α i ≤ C 0 \leq \alpha_i \leq C 0≤αi≤C
- ∑ i = 1 n α i y i = 0 \sum_{i=1}^n \alpha_i y_i = 0 ∑i=1nαiyi=0
这里的 α i \alpha_i αi 是拉格朗日乘子, K ( x i , x j ) K(x_i, x_j) K(xi,xj) 是核函数。 0 ≤ α i ≤ C 0 \leq \alpha_i \leq C 0≤αi≤C 这一约束表明拉格朗日乘子不再无限制,受正则化参数 ( C ) 的影响。