《从零到一:深入浅出解析支持向量机的对偶问题》

支持向量机是什么?

支持向量机是一种用于分类的机器学习算法。它的任务是根据一些已知的数据点,找到一个最佳的"分隔线",把不同类别的数据点分开。这个分隔线就像一条直线或一个平面,把数据空间分成两个部分,每个部分包含一种类别的数据点.

为什么叫"支持向量"?

在所有可能的分隔线中,有一些数据点离分隔线最近,这些点就是"支持向量"。它们决定了分隔线的位置和方向。如果这些点稍微移动一下,分隔线也会跟着移动。所以,这些点就像在"支持"着这条线,这就是"支持向量"的由来.

如何找到最佳分隔线?

为了找到最佳的分隔线,我们需要考虑两个因素:

  1. 正确分类:分隔线必须把不同类别的数据点正确分开。
  2. 最大间隔:分隔线两侧的间隔(即支持向量到分隔线的距离)要尽可能大,这样可以提高分类的准确性.

公式解释

假设我们有一些数据点 ( x_i ),每个点都有一个标签 ( y_i ),表示它是哪一类(比如红色为1,蓝色为-1).

我们用一个线性函数 (
f ( x ) = w ⋅ x + b f(x) = w \cdot x + b f(x)=w⋅x+b

) 来表示分隔线,其中 ( w ) 是一个向量,( b ) 是一个常数.

为了找到最佳的 ( w ) 和 ( b ),我们需要解决以下优化问题:

最大化 2 ∥ w ∥ \\text{最大化} \\quad \\frac{2}{\\\|w\\\|} 最大化∥w∥2

约束条件 y i ( w ⋅ x i + b ) ≥ 1 \\text{约束条件} \\quad y_i (w \\cdot x_i + b) \\geq 1 \\ 约束条件yi(w⋅xi+b)≥1

  • 最大化间隔 :(
    2 ∥ w ∥ \frac{2}{\|w\|} ∥w∥2

    ) 表示分隔线两侧的间隔,我们希望这个间隔尽可能大.

  • 约束条件 :(
    y i ( w ⋅ x i + b ) ≥ 1 y_i (w \cdot x_i + b) \geq 1 yi(w⋅xi+b)≥1

    ) 确保每个数据点 ( x_i ) 被正确分类,并且离分隔线的距离至少为1.

总结

支持向量机通过找到一个最佳的分隔线来区分不同类别的数据点。它利用支持向量来确定分隔线的位置和方向,并通过优化问题来最大化类别之间的间隔,从而提高分类的准确性。希望这个解释能帮助你更好地理解支持向量机!

支持向量机(SVM)的优化问题

为了求解支持向量机(SVM)的优化问题,我们使用拉格朗日乘子法。这个问题可以表示为:

最大化 2 ∥ w ∥ \\text{最大化} \\quad \\frac{2}{\\\|w\\\|} 最大化∥w∥2

约束条件 y i ( w ⋅ x i + b ) ≥ 1 \\text{约束条件} \\quad y_i (w \\cdot x_i + b) \\geq 1 约束条件yi(w⋅xi+b)≥1

首先,我们转换最大化问题为最小化问题,因为拉格朗日乘子法通常用于最小化问题。我们最小化 (
1 2 ∥ w ∥ 2 \frac{1}{2} \|w\|^2 21∥w∥2

) 而不是 (
2 ∥ w ∥ \frac{2}{\|w\|} ∥w∥2

),因为这两个问题在 ( w ) 上是等价的。

所以,我们的优化问题变为:

最小化 1 2 ∥ w ∥ 2 \\text{最小化} \\quad \\frac{1}{2} \\\|w\\\|\^2 \\ 最小化21∥w∥2

约束条件 y i ( w ⋅ x i + b ) ≥ 1 \\text{约束条件} \\quad y_i (w \\cdot x_i + b) \\geq 1 约束条件yi(w⋅xi+b)≥1

接下来,我们引入拉格朗日乘子 (
α i \alpha_i αi

) 来处理约束条件。拉格朗日函数 ( L ) 定义为:

L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 n α i \[ y i ( w ⋅ x i + b ) − 1 \] L(w, b, \\alpha) = \\frac{1}{2} \\\|w\\\|\^2 - \\sum_{i=1}\^n \\alpha_i \[y_i (w \\cdot x_i + b) - 1\] L(w,b,α)=21∥w∥2−i=1∑nαi\[yi(w⋅xi+b)−1

]

其中 (
α i ≥ 0 \alpha_i \geq 0 αi≥0

) 是拉格朗日乘子。

为了找到 ( w ) 和 ( b ) 的最优值,我们需要对 ( L ) 关于 ( w ) 和 ( b ) 求偏导数,并令其等于零:

∂ L ∂ w = w − ∑ i = 1 n α i y i x i = 0 \\frac{\\partial L}{\\partial w} = w - \\sum_{i=1}\^n \\alpha_i y_i x_i = 0 \\ ∂w∂L=w−i=1∑nαiyixi=0

∂ L ∂ b = − ∑ i = 1 n α i y i = 0 \\frac{\\partial L}{\\partial b} = -\\sum_{i=1}\^n \\alpha_i y_i = 0 ∂b∂L=−i=1∑nαiyi=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

从第二个方程中,我们得到:

∑ i = 1 n α i y i = 0 \\sum_{i=1}\^n \\alpha_i y_i = 0 \\ i=1∑nαiyi=0

现在,我们将 ( w ) 的表达式代入拉格朗日函数 ( L ),得到关于 ( \alpha ) 的对偶问题:

L ( α ) = 1 2 ( ∑ i = 1 n α i y i x i ) ⋅ ( ∑ j = 1 n α j y j x j ) − ∑ i = 1 n α i \[ y i ( w ⋅ x i + b ) − 1 \] L(\\alpha) = \\frac{1}{2} \\left( \\sum_{i=1}\^n \\alpha_i y_i x_i \\right) \\cdot \\left( \\sum_{j=1}\^n \\alpha_j y_j x_j \\right) - \\sum_{i=1}\^n \\alpha_i \[y_i (w \\cdot x_i + b) - 1\] L(α)=21(i=1∑nαiyixi)⋅(j=1∑nαjyjxj)−i=1∑nαi\[yi(w⋅xi+b)−1

]

L ( α ) = 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 n α i \[ y i ( ∑ j = 1 n α j y j x j ⋅ x i + b ) − 1 \] L(\\alpha) = \\frac{1}{2} \\sum_{i=1}\^n \\sum_{j=1}\^n \\alpha_i \\alpha_j y_i y_j (x_i \\cdot x_j) - \\sum_{i=1}\^n \\alpha_i \[y_i (\\sum_{j=1}\^n \\alpha_j y_j x_j \\cdot x_i + b) - 1\] L(α)=21i=1∑nj=1∑nαiαjyiyj(xi⋅xj)−i=1∑nαi\[yi(j=1∑nαjyjxj⋅xi+b)−1

]

L ( α ) = 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 n α i y i ( ∑ j = 1 n α j y j x j ⋅ x i + b ) + ∑ i = 1 n α i L(\\alpha) = \\frac{1}{2} \\sum_{i=1}\^n \\sum_{j=1}\^n \\alpha_i \\alpha_j y_i y_j (x_i \\cdot x_j) - \\sum_{i=1}\^n \\alpha_i y_i (\\sum_{j=1}\^n \\alpha_j y_j x_j \\cdot x_i + b) + \\sum_{i=1}\^n \\alpha_i L(α)=21i=1∑nj=1∑nαiαjyiyj(xi⋅xj)−i=1∑nαiyi(j=1∑nαjyjxj⋅xi+b)+i=1∑nαi

L ( α ) = 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 n α i y i b + ∑ i = 1 n α i L(\\alpha) = \\frac{1}{2} \\sum_{i=1}\^n \\sum_{j=1}\^n \\alpha_i \\alpha_j y_i y_j (x_i \\cdot x_j) - \\sum_{i=1}\^n \\sum_{j=1}\^n \\alpha_i \\alpha_j y_i y_j (x_i \\cdot x_j) - \\sum_{i=1}\^n \\alpha_i y_i b + \\sum_{i=1}\^n \\alpha_i L(α)=21i=1∑nj=1∑nαiαjyiyj(xi⋅xj)−i=1∑nj=1∑nαiαjyiyj(xi⋅xj)−i=1∑nαiyib+i=1∑nαi

L ( α ) = − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 n α i L(\\alpha) = -\\frac{1}{2} \\sum_{i=1}\^n \\sum_{j=1}\^n \\alpha_i \\alpha_j y_i y_j (x_i \\cdot x_j) + \\sum_{i=1}\^n \\alpha_i \\ L(α)=−21i=1∑nj=1∑nαiαjyiyj(xi⋅xj)+i=1∑nαi

因此,对偶问题为:

最大化 L ( α ) = ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) \\text{最大化} \\quad L(\\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 \\cdot x_j) 最大化L(α)=i=1∑nαi−21i=1∑nj=1∑nαiαjyiyj(xi⋅xj)

约束条件 α i ≥ 0 \\text{约束条件} \\quad \\alpha_i \\geq 0 约束条件αi≥0

约束条件 ∑ i = 1 n α i y i = 0 \\text{约束条件} \\quad \\sum_{i=1}\^n \\alpha_i y_i = 0 约束条件i=1∑nαiyi=0

通过求解这个对偶问题,我们可以找到 (
α i \alpha_i αi

) 的值。然后,我们可以使用 (
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 ) 的值。最后,我们可以通过选择一个支持向量 ( x_i ) 并使用 (
y i ( w ⋅ x i + b ) = 1 y_i (w \cdot x_i + b) = 1 yi(w⋅xi+b)=1

) 来找到 ( b ) 的值。

这样,我们就找到了 ( w ) 和 ( b ) 的最优值,从而得到了 SVM 的分隔线 (
f ( x ) = w ⋅ x + b f(x) = w \cdot x + b f(x)=w⋅x+b

)。

相关推荐
Blossom.1183 小时前
使用Python和Scikit-Learn实现机器学习模型调优
开发语言·人工智能·python·深度学习·目标检测·机器学习·scikit-learn
郄堃Deep Traffic4 小时前
机器学习+城市规划第十四期:利用半参数地理加权回归来实现区域带宽不同的规划任务
人工智能·机器学习·回归·城市规划
int型码农4 小时前
数据结构第八章(一) 插入排序
c语言·数据结构·算法·排序算法·希尔排序
UFIT5 小时前
NoSQL之redis哨兵
java·前端·算法
喜欢吃燃面5 小时前
C++刷题:日期模拟(1)
c++·学习·算法
SHERlocked935 小时前
CPP 从 0 到 1 完成一个支持 future/promise 的 Windows 异步串口通信库
c++·算法·promise
怀旧,5 小时前
【数据结构】6. 时间与空间复杂度
java·数据结构·算法
积极向上的向日葵5 小时前
有效的括号题解
数据结构·算法·
GIS小天5 小时前
AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月7日第101弹
人工智能·算法·机器学习·彩票
_Itachi__5 小时前
LeetCode 热题 100 74. 搜索二维矩阵
算法·leetcode·矩阵