首页 > 其他分享 >支持向量机SVM原理详解

支持向量机SVM原理详解

时间:2024-10-18 11:20:49浏览次数:3  
标签:yi xi 详解 sum SVM 超平面 alpha 向量

SVM原理详解

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 w1​x1​+w2​x2​+⋯+wn​xn​+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,bmin​21​∥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,bmin​21​∥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​αi​yi​xi​=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​αi​yi​xi​

这表明,最终的法向量 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​αi​yi​=0

因此,我们得到一个约束条件:

∑ i = 1 n α i y i = 0 \sum_{i=1}^n \alpha_i y_i = 0 i=1∑n​αi​yi​=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​αi​yi​xi​) 代入到拉格朗日函数中,消去 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​αi​yi​xi​) 代入到 ( 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​αi​yi​xi​)T(j=1∑n​αj​yj​xj​)=21​i=1∑n​j=1∑n​αi​αj​yi​yj​xiT​xj​

然后,我们将 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​αi​yi​(j=1∑n​αj​yj​xjT​xi​)+i=1∑n​αi​yi​b+i=1∑n​αi​

由上述约束条件:
∑ i = 1 n α i y i = 0 \sum_{i=1}^n \alpha_i y_i = 0 i=1∑n​αi​yi​=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 αmax​i=1∑n​αi​−21​i=1∑n​j=1∑n​αi​αj​yi​yj​xiT​xj​

对偶问题的约束条件:

  1. ( α i ≥ 0 ( \alpha_i \geq 0 (αi​≥0)
  2. ( ∑ i = 1 n α i y i = 0 ( \sum_{i=1}^n \alpha_i y_i = 0 (∑i=1n​αi​yi​=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​αj​yj​xj​ 代入上式(别忘了,我们有 ( 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​αj​yj​xjT​xi​+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​αj​yj​xjT​xi​+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​αj​yj​xjT​xi​

要计算 b b b,我们只需要找到一个支持向量 x i x_i xi​,然后将其代入上述公式即可。更一般地,我们也可以使用多个支持向量的平均值来求解 b b b,以提高计算的稳定性。具体步骤如下:

  1. 选择多个支持向量:这些支持向量是满足 α i > 0 \alpha_i > 0 αi​>0 的样本点。
  2. 代入求 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​αj​yj​xjT​xi​
    • 若选择多个支持向量,可以取它们对应的 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=m1​i∈SV∑​(yi​−j=1∑n​αj​yj​xjT​xi​)
      其中, S V SV SV表示支持向量的集合, m m m 是支持向量的个数。

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​αi​yi​xi​

代入 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​αi​yi​xiT​x+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​)=xiT​xj​
这个核函数表示在原始空间中不进行任何映射,直接应用线性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​)=(xiT​xj​+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(κxiT​xj​+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) αmax​i=1∑n​αi​−21​i=1∑n​j=1∑n​αi​αj​yi​yj​K(xi​,xj​)

约束条件:
  1. α i ≥ 0 \alpha_i \geq 0 αi​≥0
  2. ∑ i = 1 n α i y i = 0 \sum_{i=1}^n \alpha_i y_i = 0 ∑i=1n​αi​yi​=0

在这里,内积 x i T x j x_i^T x_j xiT​xj​ 被核函数 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​αi​yi​K(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) αmax​i=1∑n​αi​−21​i=1∑n​j=1∑n​αi​αj​yi​yj​K(xi​,xj​)

约束条件

  1. 0 ≤ α i ≤ C 0 \leq \alpha_i \leq C 0≤αi​≤C
  2. ∑ i = 1 n α i y i = 0 \sum_{i=1}^n \alpha_i y_i = 0 ∑i=1n​αi​yi​=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 ) 的影响。

标签:yi,xi,详解,sum,SVM,超平面,alpha,向量
From: https://blog.csdn.net/handsomeboysk/article/details/143034399

相关文章

  • 计量经济学(九)——向量自回归VAR模型检验
    向量自回归(VAR,VectorAutoregression)模型是一种广泛用于时间序列分析的统计工具,特别是在经济学和金融学领域中。VAR模型的关键优势在于其可以捕捉多个变量之间的相互依赖关系,而无需预设变量之间的因果顺序。这使得VAR模型在处理复杂动态系统时极具灵活性。VAR模型的基本结构是将......
  • 超全!一文详解大型语言模型的11种微调方法
    导读:大型预训练模型是一种在大规模语料库上预先训练的深度学习模型,它们可以通过在大量无标注数据上进行训练来学习通用语言表示,并在各种下游任务中进行微调和迁移。随着模型参数规模的扩大,微调和推理阶段的资源消耗也在增加。针对这一挑战,可以通过优化模型结构和训练策略来......
  • RS485通信详解
    1.RS485介绍RS485是串行通信标准,使用差分信号传输,抗干扰能力强,常用于工控领域。RS485具有强大的组网功能,在串口基础协议之上还制定MODBUS协议。串口基础协议:仅指封装了基本数据包格式的协议(基于数据位)MODBUS协议:使用基本数据包组合成通讯帧格式的高层应用协议(基于数据包或......
  • 鸿蒙ArkTS中的资源管理详解
    在鸿蒙应用开发中,资源管理是一个非常重要的话题。ArkTS作为鸿蒙原生开发语言,提供了强大的资源管理功能。本文将深入探讨ArkTS中的资源管理,特别是$r语法的使用注意事项,以及其他实用的资源管理技巧。1.$r语法简介在ArkTS中,$r是一个用于引用资源的特殊语法。它允许开发者......
  • Linux驱动开发 platform设备注册详解
    常用的与平台设备注册相关的函数及其作用:1.platform_device_register()功能:用于注册平台设备到内核设备模型中。注册后,设备与相应的驱动程序绑定,驱动的probe函数被调用以进行初始化。函数原型:intplatform_device_register(structplatform_device*pdev);参数:pde......
  • 预科02》:Markdown语法详解
    Markdown学习标题三级标题四级标题标题语法:#空格标题名回车(几极标题就用几个#号)字体hello,word!hello,word!hello,word!hello,word!(前面后面加*号鼠标点一下可以看见)引用选择狂神说学java走向人生巅峰!(语法:>空格描述)分割线语法---或者***......
  • Java之Lambda表达式详解
    一、Lambda表达式的概念与特点Lambda表达式是Java8引入的一个重要特性,它提供了一种简洁、优雅的方式来处理集合、过滤、映射等操作。Lambda表达式可以看做是匿名函数,它允许开发者以更简洁的方式声明匿名函数。Lambda表达式的基本语法由箭头指示符“->”表示,它将参数与函数......
  • 【数据结构】之链表详解
    链表是一种常用的数据结构,它是一种线性数据结构,但与数组不同,它并非连续存储数据,而是通过指针将数据节点连接起来。每个节点都包含数据域和指向下一个节点的指针域。这种结构赋予链表独特的优势和局限性,使其在某些场景下优于数组,在另一些场景下则相对逊色。本文将深入探讨链表,包......
  • 【数据结构】之数组详解
    数组是数据结构中最基础的概念之一,它在编程中被广泛应用。理解数组的工作原理、操作方式以及底层实现,对于我们构建更复杂的数据结构和算法至关重要。本文将从多个角度深入剖析数组,并以Java语言示例进行讲解,帮助你建立对数组的深刻理解。一、什么是数组?数组是一种线性数据结构......
  • Java数据结构二叉树面试题精华(画图详解)
    前言:    针对二叉树,因为涉及到递归,需要跟多的练习强化递归的思想,其中也包括需要画图理解一些想不通的问题来提升自己!    一下面这些题为例,一起来提升自己的逻辑思维能力!(可能其中一些题已经写过,但是希望能再写一遍有助于提高代码能力)相同的树:      ......