机器学习 03:线性可分支持向量机

本文详细介绍了支持向量机(SVM)的主要思想,强调其作为间隔最大化的线性分类器特性。通过讨论距离和间隔的概念,展示了如何找到最大间隔,并通过优化目标函数、拉格朗日乘子法及对偶问题解决复杂的约束问题。同时,解释了凸优化问题和KKT条件在SVM中的应用,以及支持向量在模型中的关键作用。




一、主要思想:

支持向量机(SVM)的基本模型线性支持支持向量机是定义在特征空间上的间隔最大的线性分类器,这使它有别于感知机。适用于高维小样本,且线性可分的数据。



二、找最大间隔:


2.1 距离:

距离是一种映射关系,满足:
{ D ( x , y ) ≥ 0 ,   D ( x , y ) = 0 ⇔ x = y D ( x , y ) = D ( y , x ) D ( x , z ) ≠ D ( x , y ) + D ( y , z ) \begin{cases}D(x,y)\ge0,\ D(x,y)=0\Leftrightarrow x=y\\D(x,y)=D(y,x)\\D(x,z)\ne D(x,y)+D(y,z)\end{cases} D(x,y)0, D(x,y)=0x=yD(x,y)=D(y,x)D(x,z)=D(x,y)+D(y,z)

这里我们使用 2 范数来计算距离



2.2 间隔:

距超平面最近的点到平面的距离的两倍。由此我们可以推出间隔的计算公式:
γ i = 2 w ⃗ ⋅ x ⃗ i + b ∥ w ⃗ ∥ \gamma_i=2\frac{\vec w\cdot\vec x_i+b}{\parallel \vec w\parallel} γi=2w w x i+b

而其中距超平面最近的点的间隔是 γ = min ⁡ i = 1 , 2 , 3 ⋯ γ i \gamma = \min\limits_{i=1,2,3\cdots}\gamma_i γ=i=1,2,3minγi

我们要寻找合适的 ( w ⃗ , b ) (\vec w,b) (w ,b),使得间隔最大,也就是
max ⁡ w ⃗ ,   b γ s . t .   ∀ i   ( w ⃗ x ⃗ i + b ) y i > 0 \max\limits_{\vec w,\ b}\gamma\\s.t.\ \forall i\ (\vec w\vec x_i+b)y_i>0 w , bmaxγs.t. i (w x i+b)yi>0

但是寻找的过程非常的麻烦,所以我们要对此进行优化。


2.2.1 优化目标函数

支持向量机的缩放引理:假设找到一组 ( w ⃗ , b ) (\vec w,b) (w ,b),对于 ∀ r > 0 \forall r>0 r>0 ( r w ⃗ , r b ) (r\vec {w},rb) (rw ,rb) 仍是解

令引理中的 r = γ r=\gamma r=γ

y i r i = y i ( w ⃗ ∥ w ⃗ ∥ ⋅ x i + b ∥ w ⃗ ∥ ) ≥ γ y i ( w ⃗ ∥ w ⃗ ∥ γ ⋅ x i + b ∥ w ⃗ ∥ γ ) ≥ 1 \begin{aligned}y_ir_i=y_i(\frac{\vec w}{\parallel\vec w\parallel}\cdot x_i+\frac{b}{\parallel\vec w\parallel})&\ge\gamma\\y_i(\frac{\vec w}{\parallel\vec w\parallel\gamma}\cdot x_i+\frac{b}{\parallel\vec w\parallel\gamma})&\ge1\end{aligned} yiri=yi(w w xi+w b)yi(w γw xi+w γb)γ1

其中 ∥ w ⃗ ∥ \parallel\vec w\parallel w γ \gamma γ 都是标量,所以令:

w ⃗ ∗ = w ⃗ ∥ w ⃗ ∥ γ b ∗ = b ∥ w ⃗ ∥ γ \vec w^*=\frac{\vec w}{\parallel\vec w\parallel\gamma}\\b^*=\frac{b}{\parallel\vec w\parallel\gamma} w =w γw b=w γb

于是有:

y i ( w ⃗ ∗ x ⃗ i + b ∗ ) ≥ 1 y_i(\vec w^*\vec x_i+b^*)\ge1 yi(w x i+b)1

也就是说,我们总能通过放缩使得间隔为 1 并且解为 ( w ⃗ ∗ , b ∗ ) (\vec w^*,b^*) (w ,b)

由于 ( w ⃗ ∗ , b ∗ ) (\vec w^*,b^*) (w ,b) ( w ⃗ , b ) (\vec w,b) (w ,b) 是倍数关系,于是我们的目标就变成了:
max ⁡ w ⃗ ∗ , b ∗ γ = max ⁡ w ⃗ ∗ , b ∗ 2 ∥ w ⃗ ∗ ∥ min ⁡ i ( w ⃗ ∗ ⋅ x i + b ∗ ) = max ⁡ w ⃗ ∗ , b ∗ 2 ∥ w ⃗ ∗ ∥ \max\limits_{\vec w^*,b^*}\gamma=\max\limits_{\vec w^*,b^*}\frac{2}{\parallel\vec w^*\parallel}\min\limits_i(\vec w^*\cdot x_i+b^*)=\max\limits_{\vec w^*,b^*}\frac{2}{\parallel\vec w^*\parallel} w ,bmaxγ=w ,bmaxw 2imin(w xi+b)=w ,bmaxw 2

取倒数使得求最大值变成求最小值,方便起见,我们把 ( w ⃗ ∗ , b ∗ ) (\vec w^*,b^*) (w ,b) 写为 ( w ⃗ , b ) (\vec w,b) (w ,b),此时,目标函数变成了:

min ⁡ w ⃗ , b 1 2 ∥ w ⃗ ∥ s . t .   y i ( w ⃗ ⋅ x ⃗ i + b ) ≥ 1 \min\limits_{\vec w,b}\frac{1}{2}\parallel\vec w\parallel\\s.t.\ y_i(\vec w\cdot\vec x_i+b)\ge1 w ,bmin21w s.t. yi(w x i+b)1

带有约束的最值问题,可以想到使用拉格朗日乘子法来求目标函数。


2.2.2 拉格朗日乘子法

L ( w ⃗ , b , α ⃗ ) = 1 2 ∥ w ⃗ ∥ − ∑ i = 1 N α i ( y i ( w ⃗ ⋅ x ⃗ i + b ) − 1 ) s . t .   α i ≥ 0 L(\vec w,b,\vec\alpha)=\frac{1}{2}\parallel\vec w\parallel-\sum\limits_{i=1}^N\alpha_i(y_i(\vec w\cdot\vec x_i+b)-1)\\s.t.\ \alpha_i\ge0 L(w ,b,α )=21w i=1Nαi(yi(w x i+b)1)s.t. αi0

θ ( w ⃗ ) = max ⁡ α i ≥ 0 L ( w ⃗ , b , α ⃗ ) \theta(\vec w)=\max\limits_{\alpha_i\ge0}L(\vec w,b,\vec\alpha) θ(w )=αi0maxL(w ,b,α )

θ ( w ⃗ ) = { 1 2 ∥ w ⃗ ∥ 2 w ⃗ , b   满 足 约 束 ∞ w ⃗ , b   不 满 足 约 束 \theta(\vec w)=\begin{cases}\frac{1}{2}\parallel\vec w\parallel^2&\vec w,b\ 满足约束\\\infty&\vec w,b\ 不满足约束\end{cases} θ(w )={21w 2w ,b w ,b 

于是原约束问题就等价于:
min ⁡ w ⃗ , b θ ( w ⃗ ) = min ⁡ w ⃗ , b max ⁡ α i ≥ 0 L ( w ⃗ , b , α ⃗ ) \min\limits_{\vec w,b}\theta(\vec w)=\min\limits_{\vec w,b}\max\limits_{\alpha_i\ge0}L(\vec w,b,\vec\alpha) w ,bminθ(w )=w ,bminαi0maxL(w ,b,α )

这样我们就把一个带有约束的最值问题转化成了无约束最值问题。但是求解这个新的约束问题过程非常复杂,所以我们需要使用拉格朗日函数的对偶性。


2.2.3 拉格朗日函数的对偶性

设:
min ⁡ w ⃗ , b max ⁡ α i ≥ 0 L ( w ⃗ , b , α ⃗ ) = p ∗ \min\limits_{\vec w,b}\max\limits_{\alpha_i\ge0}L(\vec w,b,\vec\alpha)=p^* w ,bminαi0maxL(w ,b,α )=p

min ⁡ \min min max ⁡ \max max 互换一下:
max ⁡ α i ≥ 0 min ⁡ w ⃗ , b L ( w ⃗ , b , α ⃗ ) = d ∗ \max\limits_{\alpha_i\ge0}\min\limits_{\vec w,b}L(\vec w,b,\vec\alpha)=d^* αi0maxw ,bminL(w ,b,α )=d

通常情况下, p ∗ ≥ d ∗ p^*\ge d^* pd,要使等号成立,需要满足两个条件:

  1. 优化问题是凸优化问题

  2. 满足 K K T KKT KKT 条件



凸优化问题

凸优化问题 (Convex optimization problem) 要求目标函数为凸函数,而且定义域为凸集

凸函数:

f ′ ′ ( x ) ≥ 0 f^{\prime\prime}(x)\ge0 f(x)0,则 f ( x ) f(x) f(x) 为凸函数。

显然 θ ( w ⃗ ) \theta(\vec w) θ(w ) 是凸函数

凸集:

当集合 C C C 中任意两点之间的线段上的点也在 C C C 内,则这个集合是凸集。

所以 θ ( w ⃗ ) \theta(\vec w) θ(w ) 的定义域是一个凸集。


K K T KKT KKT 条件
  1. 主问题可行: y i ( w ⃗ ⋅ x ⃗ i + b ) − 1 ≥ 0 y_i(\vec w\cdot\vec x_i+b)-1\ge0 yi(w x i+b)10

  2. 对偶问题可行: α i ≥ 0 \alpha_i\ge0 αi0

  3. 互补松弛: α i ( y i ( w ⃗ ⋅ x ⃗ i + b ) − 1 ) = 0 \alpha_i(y_i(\vec w\cdot\vec x_i+b)-1)=0 αi(yi(w x i+b)1)=0


等号成立,所以可以计算 d ∗ d^* d,令 L ( w ⃗ , b , α ⃗ ) L(\vec w,b,\vec\alpha) L(w ,b,α ) w ⃗ \vec w w b b b 的偏导为 0 可得:
w ⃗ = ∑ i = 1 N α i y i x ⃗ i ∑ i = 1 N α i y i = 0 \vec w=\sum\limits_{i=1}^N\alpha_iy_i\vec x_i\\\sum\limits_{i=1}^N\alpha_iy_i=0 w =i=1Nαiyix ii=1Nαiyi=0

带回 L ( w ⃗ , b , α ⃗ ) L(\vec w,b,\vec\alpha) L(w ,b,α )
min ⁡ w ⃗ , b L ( w ⃗ , b , α ⃗ ) = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x ⃗ i ⋅ x ⃗ j ) + ∑ i = 1 N α i \min\limits_{\vec w,b}L(\vec w,b,\vec\alpha)=-\frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N\alpha_i\alpha_jy_iy_j(\vec x_i\cdot\vec x_j)+\sum\limits_{i=1}^N\alpha_i w ,bminL(w ,b,α )=21i=1Nj=1Nαiαjyiyj(x ix j)+i=1Nαi

对上式求最大值,即:
min ⁡ α i ≥ 0 ( 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x ⃗ i ⋅ x ⃗ j ) − ∑ i = 1 N α i ) s . t . ∑ i = 1 N α i y i = 0 \min\limits_{\alpha_i\ge0}\left(\frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N\alpha_i\alpha_jy_iy_j(\vec x_i\cdot\vec x_j)-\sum\limits_{i=1}^N\alpha_i\right)\\s.t. \sum\limits_{i=1}^N\alpha_iy_i=0 αi0min(21i=1Nj=1Nαiαjyiyj(x ix j)i=1Nαi)s.t.i=1Nαiyi=0

对于上式,可以使用序列最小最优化算法(SMO)求解 α ⃗ ∗ \vec\alpha^* α ,进而求出 w ⃗ , b \vec w,b w ,b

通过以下条件:
{ K K T   条 件 w ⃗ = ∑ i = 1 N α i y i x ⃗ i ∑ i = 1 N α i y i = 0 \begin{cases}KKT\ 条件\\\vec w=\sum\limits_{i=1}^N\alpha_iy_i\vec x_i\\\sum\limits_{i=1}^N\alpha_iy_i=0\end{cases} KKT w =i=1Nαiyix ii=1Nαiyi=0

由于 w ⃗ ≠ 0 \vec w\ne0 w =0,可以推知至少存在一个 α i ∗ > 0 \alpha_i^*>0 αi>0 且对于此 i i i
y i ( w ⃗ ∗ ⋅ x ⃗ i + b ∗ ) = 1 y_i(\vec w^*\cdot\vec x_i+b^*)=1 yi(w x i+b)=1

也就是说,对于任意训练样本 ( x ⃗ i , y i ) (\vec x_i,y_i) (x i,yi),总有 α i = 0 \alpha_i=0 αi=0 或者 y i ( w ⃗ ⋅ x ⃗ i + b ) = 1 y_i(\vec w\cdot\vec x_i+b)=1 yi(w x i+b)=1 。而 y i ( w ⃗ ⋅ x ⃗ i + b ) = 1 y_i(\vec w\cdot\vec x_i+b)=1 yi(w x i+b)=1 表示该点位于最 大间隔边界上,也就是说它是一个支持向量。

这显示出了支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关





同步更新于:SP-FA 的博客


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SP FA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值