【机器学习导引】ch6-支持向量机

参考链接

【数之道】支持向量机SVM是什么,八分钟直觉理解其本质

间隔与支持向量

**问题引入:**在样本空间中寻找一个超平面,将不同类别的样本分类

  1. 超平面 :在支持向量机中,模型的目标是找到一个能够分开不同类别的平面,这个平面称为超平面 。**超平面的方程为 w T x + b = 0 w^T x + b = 0 wTx+b=0 ,**其中:
    • w w w 是权重向量,决定了超平面的方向;
    • b b b 是偏置,决定了超平面的位置。
    • 由式: w 1 x 1 + w 2 x 2 + b = 0 w_1x_1+w_2x_2+b=0 w1x1+w2x2+b=0,变形而得
      • w = ( w 1 w 2 ) w = \left (\begin{array}{c} w_1 \\ w_2 \end{array}\right) w=(w1w2)
      • x = ( x 1 x 2 ) x = \left(\begin{array}{c} x_1 \\ x_2 \end{array} \right) x=(x1x2)
  2. 支持向量 :图中标注的带圆圈的点就是支持向量 。支持向量是离超平面最近的点 ,也就是距离超平面最小的点。 S V M SVM SVM 通过这些支持向量来决定超平面的位置和方向。
  3. 间隔(Margin) :间隔是指从超平面到支持向量的距离,用 γ = 2 ∥ w ∥ \gamma = \frac{2}{\|w\|} γ=∥w∥2 表示。在 S V M SVM SVM 中,我们希望最大化这个间隔,使不同类别的样本尽可能地被分开,达到更好的分类效果。
  4. 距离公式 :对于超平面上任意一点 x x x ,其到超平面的距离 r = ∣ w T x + b ∣ ∥ w ∥ r = \frac{|w^T x + b|}{\|w\|} r=∥w∥∣wTx+b∣ 。通过这个公式,我们可以计算每个点到超平面的距离。
  5. 支持向量机的目标:SVM 的核心思想就是找到一个最大间隔的超平面(即"间隔最大化")。这样可以增强模型对新数据的泛化能力,减少分类错误的可能性。

w T x + b = 1 w^T x + b = 1 wTx+b=1 和 w T x + b = − 1 w^T x + b = -1 wTx+b=−1 表示的是距离超平面单位间隔的两条平行线。这两条线之间的距离就是间隔的大小,SVM 通过调节 w w w 和 b b b 来使得这两条线尽可能远离超平面。

  • 间隔(Margin)是如何计算的?

    w T x 1 + b = 1 (1) w^Tx_1 + b = 1 \tag{1} wTx1+b=1(1)

    w T x 2 + b = − 1 (2) w^Tx_2+b=-1 \tag{2} wTx2+b=−1(2)

    由:1 式减 2 式,可得:

    \\Rightarrow w\^T(x_1 - x_2) = 2 \\tag{3} \\ \\Rightarrow \|w\|_2 \*\|x_1-x_2\|_2 \* \\cos{\\theta} = 2

    L \\ \* \|w\|_2 = 2 \\tag{4} \\ \\Rightarrow L = \\frac{2}{\|w\|}_2

最大间隔优化问题

  1. 最大化间隔的目标 :支持向量机的核心目标是找到一个超平面,使得分类间隔最大化。这个间隔 γ \gamma γ 为 2 ∥ w ∥ \frac{2}{\|w\|} ∥w∥2,所以间隔最大化可以表述为:

    max ⁡ w ∈ R d 2 ∥ w ∥ 2 \max_{w \in \mathbb{R}^d} \frac{2}{\|w\|_2} w∈Rdmax∥w∥22

    其中 ∥ w ∥ 2 \|w\|_2 ∥w∥2 表示 w w w 的欧几里得范数。

  2. 将最大化转换为最小化 :为了方便优化,我们可以把这个目标函数转换成一个等价的最小化问题。由于 2 ∥ w ∥ 2 \frac{2}{\|w\|_2} ∥w∥22 随着 ∥ w ∥ \|w\| ∥w∥ 的减小而增大,因此最大化间隔等价于最小化 ∥ w ∥ 2 2 \|w\|_2^2 ∥w∥22。

    • 进一步地,为了便于计算(求导),我们常常在目标函数前乘上 1 2 \frac{1}{2} 21,即:

      min ⁡ w ∈ R d 1 2 ∥ w ∥ 2 2 \min_{w \in \mathbb{R}^d} \frac{1}{2} \|w\|_2^2 w∈Rdmin21∥w∥22

  3. 约束条件 :约束条件 y i ( w T x i + b ) ≥ 1 y_i(w^T x_i + b) \geq 1 yi(wTxi+b)≥1 确保所有样本点位于间隔的正确一侧,即保证每个点 x i x_i xi 都被正确分类,其中 y i y_i yi 是样本的标签( + 1 +1 +1 或 − 1 -1 −1)。这个约束条件表示:

    • 对于正类样本( y i = + 1 y_i = +1 yi=+1),需要满足 w T x i + b ≥ 1 w^T x_i + b \geq 1 wTxi+b≥1 。
    • 对于负类样本( y i = − 1 y_i = -1 yi=−1),需要满足 w T x i + b ≤ − 1 w^T x_i + b \leq -1 wTxi+b≤−1 。
  4. 总结 :因此,支持向量机的优化问题可以表示为在满足样本分类正确的约束条件下,最小化 1 2 ∥ w ∥ 2 2 \frac{1}{2} \|w\|_2^2 21∥w∥22 的凸二次规划问题。这个问题可以通过优化算法来求解。

对偶问题

KKT 条件

K K T KKT KKT 条件用于求解含有 不等式约束 的优化问题,是对拉格朗日乘子法的推广。

  • 优化问题的基本形式:最小化目标函数 f ( x ) f(x) f(x) ,约束条件 g ( x ) ≤ 0 g(x) \leq 0 g(x)≤0 。

    min ⁡ x ∈ R d f ( x ) , s . t . g ( x ) ≤ 0 (1) \min_{x \in \mathbb{R}^d} f(x),\ s.t. \ g(x) \leq 0 \tag{1} x∈Rdminf(x), s.t. g(x)≤0(1)

  • 拉格朗日函数的定义: L ( x , α ) = f ( x ) + α g ( x ) L(x, \alpha) = f(x) + \alpha g(x) L(x,α)=f(x)+αg(x) ,其中 α ≥ 0 \alpha \geq 0 α≥0 。

原始问题的转化。主要内容如下:

  • 原始问题:定义为

    min ⁡ x ∈ R d max ⁡ α ≥ 0 L ( x , α ) (3) \min_{\mathbf{x} \in \mathbb{R}^d} \max_{\alpha \geq 0} L(\mathbf{x}, \alpha) \tag{3} x∈Rdminα≥0maxL(x,α)(3)

  • 等价性 :可以证明问题 ( 1 ) (1) (1) 和 ( 3 ) (3) (3) 是等价的。

  • 问题转换:定义

    L p ( x ) = max ⁡ α ≥ 0 L ( x , α ) L_p(\mathbf{x}) = \max_{\alpha \geq 0} L(\mathbf{x}, \alpha) Lp(x)=α≥0maxL(x,α)

    则问题 (3) 可以转化为一个新的问题:

    min ⁡ x ∈ R d L p ( x ) \min_{\mathbf{x} \in \mathbb{R}^d} L_p(\mathbf{x}) x∈RdminLp(x)

这一步的转换将复杂的对偶问题简化为更易于处理的形式,便于求解最优解。

  • 为什么原始问题可以这样定义?

    原始问题可以这样定义的原因是通过 拉格朗日对偶理论 ,我们可以将一个带有不等式约束的优化问题转化为一个无约束的极值问题,这种转换方法非常重要。

    具体来说,考虑如下的优化问题:

    min ⁡ x ∈ R d f ( x ) s.t. g ( x ) ≤ 0 \min_{\mathbf{x} \in \mathbb{R}^d} f(\mathbf{x}) \quad \text{s.t.} \quad g(\mathbf{x}) \leq 0 x∈Rdminf(x)s.t.g(x)≤0

    为了处理约束 g ( x ) ≤ 0 g(\mathbf{x}) \leq 0 g(x)≤0 ,我们引入了 拉格朗日函数

    L ( x , α ) = f ( x ) + α g ( x ) , L(\mathbf{x}, \alpha) = f(\mathbf{x}) + \alpha g(\mathbf{x}), L(x,α)=f(x)+αg(x),

    其中 α ≥ 0 \alpha \geq 0 α≥0 是拉格朗日乘子,用于量化约束条件的影响。原始优化问题因此可以等价地表达为一个 极小-极大问题

    min ⁡ x ∈ R d max ⁡ α ≥ 0 L ( x , α ) . \min_{\mathbf{x} \in \mathbb{R}^d} \max_{\alpha \geq 0} L(\mathbf{x}, \alpha). x∈Rdminα≥0maxL(x,α).

    这个定义背后的原因是:通过引入对偶变量(拉格朗日乘子),我们可以确保在满足约束条件的同时最小化目标函数。这种方式的关键在于:如果存在某些 α \alpha α 值使得 g ( x ) > 0 g(\mathbf{x}) > 0 g(x)>0,则在极大化过程中,这些值将被过滤掉,因为会导致拉格朗日函数 L ( x , α ) L(\mathbf{x}, \alpha) L(x,α) 的值增加。

    转换为等价无约束问题

    通过定义 L p ( x ) = max ⁡ α ≥ 0 L ( x , α ) L_p(\mathbf{x}) = \max_{\alpha \geq 0} L(\mathbf{x}, \alpha) Lp(x)=maxα≥0L(x,α),我们可以将原始的极小-极大 问题简化为一个单独的极小化问题

    min ⁡ x ∈ R d L p ( x ) . \min_{\mathbf{x} \in \mathbb{R}^d} L_p(\mathbf{x}). x∈RdminLp(x).

    这种方法的好处是将一个含约束的优化问题转化为一个无约束的优化问题(通过极大化步骤"消化"了约束),从而使问题变得更易处理。这种定义方式利用了对偶理论的优势,是求解不等式约束优化问题的重要工具。

  • **对偶问题:**定义为

    max ⁡ α ≥ 0 min ⁡ x ∈ R d L ( x , α ) (4) \max_{\alpha \geq 0}\min_{x \in \mathbb{R}^d} L(x,\alpha) \tag{4} α≥0maxx∈RdminL(x,α)(4)

    L D ( α ) = min ⁡ x ∈ R d L ( x , α ) , L_D(\alpha) = \min_{x \in \mathbb{R}^d} L(x,\alpha), LD(α)=x∈RdminL(x,α),

    则问题转换为:

    max ⁡ α ≥ 0 L D ( α ) , (4-1) \max_{\alpha \geq0} L_D(\alpha),\tag{4-1} α≥0maxLD(α),(4-1)

KKT 条件(Karush-Kuhn-Tucker conditions) 总结

  1. 平稳性(Stationarity)

    ∇ f ( x ∗ ) + α ∗ ∇ g ( x ∗ ) = 0 \nabla f(\mathbf{x}^*) + \alpha^* \nabla g(\mathbf{x}^*) = 0 ∇f(x∗)+α∗∇g(x∗)=0

    这个条件说明,在最优解处,目标函数的梯度约束的梯度 通过拉格朗日乘子 α ∗ \alpha^* α∗ 的加权和为零。

  2. 原始问题可行性(Primal feasibility)

    g ( x ∗ ) ≤ 0 g(\mathbf{x}^*) \leq 0 g(x∗)≤0

    该条件要求解 x ∗ \mathbf{x}^* x∗ 必须满足原始问题的约束条件。

  3. 对偶问题可行性(Dual feasibility)

    α ∗ ≥ 0 \alpha^* \geq 0 α∗≥0

    对偶变量 α ∗ \alpha^* α∗ 必须是非负的,这是对偶问题的基本要求。

  4. 互补松弛性(Complementary slackness)

    α ∗ g ( x ∗ ) = 0 \alpha^* g(\mathbf{x}^*) = 0 α∗g(x∗)=0

    这个条件表示如果 α ∗ > 0 \alpha^* > 0 α∗>0,则 g ( x ∗ ) = 0 g(\mathbf{x}^*) = 0 g(x∗)=0;反之*,*如果 g ( x ∗ ) < 0 g(\mathbf{x}^*) < 0 g(x∗)<0 ,则 α ∗ = 0 \alpha^* = 0 α∗=0。它确保了约束的"有效性"。

    这四个条件共同构成了 KKT 条件,是优化问题在最优解处必须满足的条件。它们广泛应用于支持向量机等机器学习模型的优化问题中。

样例

这个例子展示了如何通过 KKT 条件求解一个具体的优化问题,步骤如下:

问题描述

  • 优化目标:

min ⁡ x ∈ R 2 x 1 2 + x 2 2 \min_{\mathbf{x} \in \mathbb{R}^2} x_1^2 + x_2^2 x∈R2minx12+x22

  • 约束条件: x 1 + x 2 ≥ 0.5 x_1 + x_2 \geq 0.5 x1+x2≥0.5

问题转换

将原问题转化为向量形式:

min ⁡ x ∈ R 2 ∥ x ∥ 2 2 , s.t. 0.5 − 1 T x ≤ 0 \min_{\mathbf{x} \in \mathbb{R}^2} \|\mathbf{x}\|_2^2, \quad \text{s.t.} \quad 0.5 - \mathbf{1}^T \mathbf{x} \leq 0 x∈R2min∥x∥22,s.t.0.5−1Tx≤0

拉格朗日函数

定义拉格朗日函数:

L(\\mathbf{x}, \\alpha) = \|\\mathbf{x}\|_2\^2 + \\alpha (0.5 - \\mathbf{1}\^T \\mathbf{x}) \\ = \|\\mathbf{x}\|_2\^2 + 0.5\\alpha - \\alpha1\^T\\mathbf{x}

求解步骤

  1. 平稳性条件

    根据平稳性条件,对 x \mathbf{x} x 求导并设为零,可以得到:

    2 x − α 1 = 0 2\mathbf{x} - \alpha 1= 0 2x−α1=0

    x = 0.5 α 1 \mathbf{x} = 0.5 \alpha \mathbf{1} x=0.5α1

  2. 互补松弛性条件

    根据互补松弛性条件,有 α ( 0.5 − 1 T x ) = 0 \alpha (0.5 - \mathbf{1}^T \mathbf{x}) = 0 α(0.5−1Tx)=0。

  3. 最终解

    通过以上条件推导,可以得到:

    x = ( 1 / 4 1 / 4 ) \mathbf{x} = \begin{pmatrix} 1/4 \\ 1/4 \end{pmatrix} x=(1/41/4)

这个例子展示了利用 KKT 条件求解带约束的优化问题的过程,最终得到了最优解 x = ( 1 / 4 , 1 / 4 ) T \mathbf{x} = (1/4, 1/4)^T x=(1/4,1/4)T。

支持向量机(SVM)优化问题的转换过程

初始优化问题

min ⁡ ∥ w ⃗ ∥ s . t y i ⋅ ( w ⃗ ⋅ x ⃗ i + b ) ≥ 1 , i = 1 , 2 , 3 , ... \min{\| \vec{w} \|} \ s.t \\ y_i \cdot (\vec{w} \cdot \vec{x}_i + b) \geq 1, \quad i = 1, 2, 3, \dots min∥w ∥ s.tyi⋅(w ⋅x i+b)≥1,i=1,2,3,...

其中, y i y_i yi 表示数据点 i i i 的标签, x ⃗ i \vec{x}_i x i 是输入向量, w ⃗ \vec{w} w 是权重向量, b b b 是偏置, s s s 是样本总数。


重新表述

min ⁡ f ( w ) = ∥ w ⃗ ∥ 2 2 s . t g i ( w , b ) = y i ⋅ ( w ⃗ ⋅ x ⃗ i + b ) − 1 ≥ 0 , i = 1 , 2 , 3 , ... \min{f(w) = \frac{\| \vec{w} \|^2}{2} }\ s.t \\ g_i(w, b) = y_i \cdot (\vec{w} \cdot \vec{x}_i + b) - 1 \geq 0, \quad i = 1, 2, 3, \dots minf(w)=2∥w ∥2 s.tgi(w,b)=yi⋅(w ⋅x i+b)−1≥0,i=1,2,3,...


引入松弛变量

g i ( w , b ) = y i ⋅ ( w ⃗ ⋅ x ⃗ i + b ) − 1 = p i 2 , i = 1 , 2 , 3 , ... g_i(w, b) = y_i \cdot (\vec{w} \cdot \vec{x}_i + b) - 1 = p_i^2, \quad i = 1, 2, 3, \dots gi(w,b)=yi⋅(w ⋅x i+b)−1=pi2,i=1,2,3,...


拉格朗日函数

定义拉格朗日函数 L ( w , b , λ i , p i ) L(w, b, \lambda_i, p_i) L(w,b,λi,pi) 为:

L ( w , b , λ i , p i ) = ∥ w ⃗ ∥ 2 2 − ∑ i = 1 s λ i ⋅ ( y i ⋅ ( w ⃗ ⋅ x ⃗ i + b ) − 1 − p i 2 ) L(w, b, \lambda_i, p_i) = \frac{\| \vec{w} \|^2}{2} - \sum_{i=1}^s \lambda_i \cdot (y_i \cdot (\vec{w} \cdot \vec{x}_i + b) - 1 - p_i^2) L(w,b,λi,pi)=2∥w ∥2−i=1∑sλi⋅(yi⋅(w ⋅x i+b)−1−pi2)

其中, λ i \lambda_i λi 表示与约束相关的拉格朗日乘子, p i p_i pi 表示松弛变量(可能用于处理在SVM中不可线性分割的数据点)。


解释

这组公式展示了从原始的硬间隔 SVM 问题软间隔 SVM 的转换过程,通过引入松弛变量 p i 2 p_i^2 pi2 来允许一定的误分类或间隔的违约。最后一步是拉格朗日函数的定义,包含了拉格朗日乘子 λ i \lambda_i λi 来处理约束条件。


通过对各变量 ( w 、 b 、 λ i 、 p i ) ( w 、 b 、 \lambda_i 、 p_i ) (w、b、λi、pi)求偏导并设为零,得到一组 KKT(Karush-Kuhn-Tucker)条件,用于支持向量机的优化求解。

KKT条件的偏导数

  1. 对 w w w 求导 : ∂ L ∂ w = 0 \frac{\partial L}{\partial w} = 0 ∂w∂L=0
  2. 对 b 求导 : ∂ L ∂ b = 0 \frac{\partial L}{\partial b} = 0 ∂b∂L=0
  3. 对 λ i \lambda_i λi 求导 : ∂ L ∂ λ i = 0 \frac{\partial L}{\partial \lambda_i} = 0 ∂λi∂L=0
  4. 对 p i p_i pi 求导 : ∂ L ∂ p i = 0 \frac{\partial L}{\partial p_i} = 0 ∂pi∂L=0

由此得到的KKT条件

  1. 条件 1 :关于 w w w 的方程

    w ⃗ − ∑ i = 1 s λ i y i x ⃗ i = 0 \vec{w} - \sum_{i=1}^s \lambda_i y_i \vec{x}_i = 0 w −i=1∑sλiyix i=0

  2. 条件 2 :关于 b b b 的方程

    ∑ i = 1 s λ i y i = 0 \sum_{i=1}^s \lambda_i y_i = 0 i=1∑sλiyi=0

  3. 条件 3:关于约束的等式

    y i ⋅ ( w ⃗ ⋅ x ⃗ i + b ) − 1 − p i 2 = 0 y_i \cdot (\vec{w} \cdot \vec{x}_i + b) - 1 - p_i^2 = 0 yi⋅(w ⋅x i+b)−1−pi2=0

  4. 条件 4:关于松弛变量的条件

    2 λ i p i = 0 2 \lambda_i p_i = 0 2λipi=0

    该条件进一步得出:

    • 如果 λ i ≠ 0 \lambda_i \neq 0 λi=0 ,则 p i = 0 p_i = 0 pi=0 。
    • 如果 p i ≠ 0 p_i \neq 0 pi=0 ,则 λ i = 0 \lambda_i = 0 λi=0 。

最终的决策条件

  • 如果 y i ⋅ ( w ⃗ ⋅ x ⃗ i + b ) − 1 > 0 y_i \cdot (\vec{w} \cdot \vec{x}_i + b) - 1 > 0 yi⋅(w ⋅x i+b)−1>0 ,则 λ i = 0 \lambda_i = 0 λi=0 ,表示该点不在间隔边界上。
  • 如果 y i ⋅ ( w ⃗ ⋅ x ⃗ i + b ) − 1 = 0 y_i \cdot (\vec{w} \cdot \vec{x}_i + b) - 1 = 0 yi⋅(w ⋅x i+b)−1=0 ,则 λ i ≠ 0 \lambda_i \neq 0 λi=0 ,表示该点在间隔边界上(支持向量)。

相关推荐
tinker在coding22 分钟前
Coding Caprice - Linked-List 1
算法·leetcode
迅易科技1 小时前
借助腾讯云质检平台的新范式,做工业制造企业质检的“AI慧眼”
人工智能·视觉检测·制造
古希腊掌管学习的神2 小时前
[机器学习]XGBoost(3)——确定树的结构
人工智能·机器学习
ZHOU_WUYI3 小时前
4.metagpt中的软件公司智能体 (ProjectManager 角色)
人工智能·metagpt
靴子学长3 小时前
基于字节大模型的论文翻译(含免费源码)
人工智能·深度学习·nlp
AI_NEW_COME4 小时前
知识库管理系统可扩展性深度测评
人工智能
海棠AI实验室5 小时前
AI的进阶之路:从机器学习到深度学习的演变(一)
人工智能·深度学习·机器学习
hunteritself5 小时前
AI Weekly『12月16-22日』:OpenAI公布o3,谷歌发布首个推理模型,GitHub Copilot免费版上线!
人工智能·gpt·chatgpt·github·openai·copilot
XH华5 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生5 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论