手撕SVM(二)

0 概述

在正式推导SVM之前,我们先解释一下到底什么是SVM算法。SVM 是一种二类分类模型。它的基本思想是在特征空间中寻找间隔最大的分离超平面使数据得到高效的二分类,具体来讲,有三种情况:
SVM算法解决的问题可以分为三类:

  • 数据原本线性可分
    直接使用硬间隔的方法解决
  • 数据近似线性可分
    引入松弛变量,能容忍一定程度的错误
  • 数据线性不可分
    这部分就需要使用核技巧来解决
    在这里插入图片描述

1 SVM推导

1.1 问题描述

如下图所示,在一个多维平面上散落着正样本和负样本(我们这里画的是二维,你可以想象一下),如果能够找到一个超平面,恰好能够将正负样本分开,那么这个超平面就可以用来对样本进行分类。
在这里插入图片描述
如图,超平面 H 1 H_1 H1 H 2 H_2 H2不是我们要找的,我们要找的就是 H 3 H_3 H3。那么问题来了,如果 H 3 H_3 H3这种能将正负样本分开的超平面存在,那么我们如何找到它?

1.2 问题转化

我们需要将问题转化为数学的形式进行分析。如上图所示,我们使用超平面公式: y = ω T x + b y=\omega^Tx+b y=ωTx+b表示 H 3 H_3 H3。那么任意一个样本点 p ( x i , y i ) p(x_i,y_i) p(xi,yi)到超平面的几何距离为: ∣ ω T x i + b ∣ ∣ ∣ ω ∣ ∣ \frac{|\omega^Tx_i+b|}{||\omega||} ωωTxi+b假设 H 3 H_3 H3就是我们想要的那个超平面,即能够将正负样本分开,那么对于任意的 p ( x i , y i ) p(x_i,y_i) p(xi,yi)均有: d i s t a n c e ( x i , y i ) = y i ω T x i + b ∣ ∣ ω ∣ ∣ > 0 distance(x_i,y_i)=y_i\frac{\omega^Tx_i+b}{||\omega||}\gt0 distance(xi,yi)=yiωωTxi+b>0
因此有以下结论:

  • 正样本 y i = 1 y_i=1 yi=1,几何间隔大于0,有 ω T x i + b > 0 \omega^Tx_i+b\gt0 ωTxi+b>0,即正样本均在法向量指向的一侧(正的一侧);
  • 负样本 y i = − 1 y_i=-1 yi=1,几何间隔小于0,有 ω T x i + b < 0 \omega^Tx_i+b\lt0 ωTxi+b<0,即负样本均在法向量指向的相反一侧(负的一侧)。

这个问题等价于对于能将正负样本分开的超平面,存在以下结论: d i s t a n c e ( x i , y i ) > 0 , ∀ ( x i , y i ) distance(x_i,y_i)\gt0,\forall(x_i,y_i) distance(xi,yi)>0,(xi,yi)

可以想象,这种超平面肯定会有无数多个的,但我们希望最优的那个超平面不仅能将样本分开,且分得越开越好,即距离超平面最近的那个样本的距离最远,即最小的 d i s t a n c e distance distance最大,最小是对样本点而言的,最大是对超平面参数而言的。我们就将上述数学问题转化为最优化问题了。
进一步地,假设我们已经找到了这个最优的超平面 H 3 H_3 H3,其参数为 ( ω , b ) (\omega,b) (ω,b),并且也找到了使距离最小的样本点 ( x i , y i ) (x_i,y_i) (xi,yi),最后能够得到几何间隔: y i ω T x i + b ∣ ∣ ω ∣ ∣ y_i\frac{\omega^Tx_i+b}{||\omega||} yiωωTxi+b
本来我们即可对上述式子求最大化了,但是非常不巧的是,不同的超平面对应的距离最近的样本点 ( x i , y i ) (x_i,y_i) (xi,yi)又不一样,那就想想办法将上式分子部分消除掉。
回顾前文描述,我们假设了参数 ( ω , b ) (\omega,b) (ω,b)对应的超平面是我们要找的那个,那么就有 d i s t a n c e ( x i , y i ) = y i ω T x i + b ∣ ∣ ω ∣ ∣ > 0 distance(x_i,y_i)=y_i\frac{\omega^Tx_i+b}{||\omega||}\gt0 distance(xi,yi)=yiωωTxi+b>0,即 y i ( ω T x i + b ) > 0 y_i(\omega^Tx_i+b)\gt0 yi(ωTxi+b)>0,那么这个最优超平面的参数 ( ω , b ) (\omega,b) (ω,b)经过适当的等倍缩放之后一定存在 y i ( ω T x i + b ) = 1 y_i(\omega^Tx_i+b)=1 yi(ωTxi+b)=1,那么最小距离就变成了: 1 ∣ ∣ ω ∣ ∣ \frac{1}{||\omega||} ω1
最终问题变成了求解: m a x ω , b 1 ∣ ∣ ω ∣ ∣ , ∀ y i ( ω T x i + b ) ≥ 1 max_{\omega,b}\frac{1}{||\omega||},\forall y_i(\omega^Tx_i+b)\geq1 maxω,bω1,yi(ωTxi+b)1
转化一下: m i n ω , b 1 2 ∣ ∣ ω ∣ ∣ 2 , ∀ y i ( ω T x i + b ) ≥ 1 min_{\omega,b}\frac{1}{2}||\omega||^2,\forall y_i(\omega^Tx_i+b)\geq1 minω,b21ω2,yi(ωTxi+b)1
加上常数是为了求导方便。

1.3 拉格朗日函数求解

要求解最小化问题,最直观的想法是构建一个函数,使该函数在可行解区域内与原目标函数完全一致,而在可行解区域外的数值非常大,甚至无穷大。那么这个没有约束条件的新目标函数的优化问题就与原来有约束条件的原始目标函数的优化问题等价。这就是拉格朗日方程的目的,它将约束条件放到目标函数中,从而将有约束的优化问题转换为无约束的优化问题。
下式就是原问题转化为无约束的优化问题的公式: Γ ( ω , b , α ) = 1 2 ∣ ∣ ω ∣ ∣ 2 − ∑ i = 1 n α i ( y i ( ω T x i + b ) − 1 ) \Gamma(\omega,b,\alpha)=\frac{1}{2}||\omega||^2-\sum_{i=1}^{n}\alpha_i(y_i(\omega^Tx_i+b)-1) Γ(ω,b,α)=21ω2i=1nαi(yi(ωTxi+b)1)
其中 α i ≥ 0 \alpha_i\geq0 αi0为拉格朗日乘子,是构建新目标函数时引入的系数变量。现在我们令: Θ ( ω ) = m a x α i ≥ 0 Γ ( ω , b , α ) \Theta(\omega)=max_{\alpha_i\geq0}\Gamma(\omega,b,\alpha) Θ(ω)=maxαi0Γ(ω,b,α)
当样本点不满足约束条件,即在可行域外 y i ( ω T x i + b ) < 1 y_i(\omega^Tx_i+b)\lt1 yi(ωTxi+b)<1,此时 α i = + ∞ , Θ ( ω ) = + ∞ \alpha_i=+\infty,\Theta(\omega)=+\infty αi=+Θ(ω)=+
当样本点满足约束条件时,即在可行域内 y i ( ω T x i + b ) ≥ 1 y_i(\omega^Tx_i+b)\geq1 yi(ωTxi+b)1,此时 Θ ( ω ) = 1 2 ∣ ∣ ω ∣ ∣ 2 \Theta(\omega)=\frac{1}{2}||\omega||^2 Θ(ω)=21ω2
即:
Θ ( ω ) = { 1 2 ∣ ∣ ω ∣ ∣ 2 , x ∈ 可 行 域 + ∞ , x ∈ 非 可 行 域 \Theta(\omega)=\begin{cases}\frac{1}{2}||\omega||^2,x\in可行域 \\ +\infty,x\in非可行域\end{cases} Θ(ω)={21ω2,x+,x
现在问题变为求解新目标函数 Θ ( ω ) \Theta(\omega) Θ(ω)的最小值:
m i n ω , b Θ ( ω ) = m i n ω m a x α i ≥ 0 Γ ( ω , b , α ) = p ∗ min_{\omega,b}\Theta(\omega)=min_{\omega}max_{\alpha_i\geq0}\Gamma(\omega,b,\alpha)=p^* minω,bΘ(ω)=minωmaxαi0Γ(ω,b,α)=p
根据朗格朗日对偶性:
m i n ω , b Θ ( ω ) = m a x α i ≥ 0 m i n ω Γ ( ω , b , α ) = d ∗ min_{\omega,b}\Theta(\omega)=max_{\alpha_i\geq0}min_{\omega}\Gamma(\omega,b,\alpha)=d^* minω,bΘ(ω)=maxαi0minωΓ(ω,b,α)=d

1.4 对偶问题求解

求解的问题为:
m a x α i ≥ 0 m i n ω Γ ( ω , b , α ) = d ∗ Γ ( ω , b , α ) = 1 2 ∣ ∣ ω ∣ ∣ 2 − ∑ i = 1 n α i ( y i ( ω T x i + b ) − 1 ) max_{\alpha_i\geq0}min_{\omega}\Gamma(\omega,b,\alpha)=d^* \\ \Gamma(\omega,b,\alpha)=\frac{1}{2}||\omega||^2-\sum_{i=1}^{n}\alpha_i(y_i(\omega^Tx_i+b)-1) maxαi0minωΓ(ω,b,α)=dΓ(ω,b,α)=21ω2i=1nαi(yi(ωTxi+b)1)
先求里面的 m i n min min部分,首先固定 α \alpha α,分别对 ω , b \omega,b ω,b求导,并令导数为0,得到:
∂ Γ ∂ ω = 0 ⇒ ω = ∑ i = 1 n α i y i x i ∂ Γ ∂ b = 0 ⇒ ∑ i = 1 n α i y i = 0 \frac{\partial\Gamma}{\partial\omega}=0 \Rightarrow \omega=\sum_{i=1}^{n}\alpha_iy_ix_i \\ \frac{\partial\Gamma}{\partial b}=0 \Rightarrow \sum_{i=1}^{n}\alpha_iy_i=0 ωΓ=0ω=i=1nαiyixibΓ=0i=1nαiyi=0
又由 K K T KKT KKT条件:
α i ( y i ( ω T x i + b ) − 1 ) = 0 α i ≥ 0 \alpha_i(y_i(\omega^Tx_i+b)-1)=0 \\ \alpha_i \geq 0 αi(yi(ωTxi+b)1)=0αi0
得到要么 α i = 0 \alpha_i=0 αi=0,要么 y i ( ω T x i + b ) − 1 = 0 y_i(\omega^Tx_i+b)-1=0 yi(ωTxi+b)1=0,但是如果 α i = 0 \alpha_i=0 αi=0,明显不对,此时 ω = 0 \omega=0 ω=0,还求什么解?所以一定是 y i ( ω T x i + b ) − 1 = 0 y_i(\omega^Tx_i+b)-1=0 yi(ωTxi+b)1=0,进而求得:
b = 1 − y j ω T x j y j = 1 y j − ω T x j = y j − ∑ i = 1 , j = 1 n α i T y i x i T x j b = \frac{1-y_j\omega^Tx_j}{y_j} \\ = \frac{1}{y_j} - \omega^Tx_j \\ = y_j - \sum_{i=1,j=1}^{n}\alpha_{i}^{T}y_ix_{i}^{T}x_j b=yj1yjωTxj=yj1ωTxj=yji=1,j=1nαiTyixiTxj
变换一下符号,将 x j , y j x_j,y_j xj,yj看作训练集的数,进一步地得到那个超平面方程:
∑ i = 1 n α i T y i x i T y + 1 − ∑ i = 1 n α i T y i x i T x y = 0 \sum_{i=1}^{n}\alpha_i^Ty_ix_i^Ty+1-\sum_{i=1}^n\alpha_i^Ty_ix_i^Txy=0 i=1nαiTyixiTy+1i=1nαiTyixiTxy=0
y y y的取值是 ± 1 \pm1 ±1,所以整个超平面是只依赖于输入样本和训练样本的内积的

同时将 ω \omega ω b b b的结果带回 Γ ( ω , b , α ) \Gamma(\omega,b,\alpha) Γ(ω,b,α)
Γ ( ω , b , α ) = 1 2 ∣ ∣ ω ∣ ∣ 2 − ∑ i = 1 n α i ( y i ( ω T x i + b ) − 1 ) = 1 2 ω T ω − ω T ∑ i = 1 n α i y i x i − b ∑ i = 1 n α i y i + ∑ i = 1 n α i = 1 2 ω T ∑ i = 1 n α i y i x i − ω T ∑ i = 1 n α i y i x i − b × 0 + ∑ i = 1 n α i = ∑ i = 1 n α i − 1 2 { ∑ i = 1 n α i y i x i } T ∑ i = 1 n α i y i x i = ∑ i = 1 n α i − 1 2 ∑ i = 1 , j = 1 n α i α j y i y j x i T x j \Gamma(\omega,b,\alpha)=\frac{1}{2}||\omega||^2-\sum_{i=1}^{n}\alpha_i(y_i(\omega^Tx_i+b)-1) \\ =\frac{1}{2}\omega^T\omega-\omega^T\sum_{i=1}^{n}\alpha_iy_ix_i - b\sum_{i=1}^{n}\alpha_iy_i + \sum_{i=1}^{n}\alpha_i \\ =\frac{1}{2}\omega^T\sum_{i=1}^{n}\alpha_iy_ix_i - \omega^T\sum_{i=1}^{n}\alpha_iy_ix_i - b\times0+\sum_{i=1}^{n}\alpha_i \\ =\sum_{i=1}^{n}\alpha_i-\frac{1}{2}\lbrace \sum_{i=1}^{n}\alpha_iy_ix_i \rbrace ^T\sum_{i=1}^{n}\alpha_iy_ix_i \\ = \sum_{i=1}^{n}\alpha_i-\frac{1}{2} \sum_{i=1,j=1}^{n}\alpha_i\alpha_jy_iy_jx_i^Tx_j Γ(ω,b,α)=21ω2i=1nαi(yi(ωTxi+b)1)=21ωTωωTi=1nαiyixibi=1nαiyi+i=1nαi=21ωTi=1nαiyixiωTi=1nαiyixib×0+i=1nαi=i=1nαi21{i=1nαiyixi}Ti=1nαiyixi=i=1nαi21i=1,j=1nαiαjyiyjxiTxj
上式中只有一个变量 α \alpha α了,内侧的最小值已经求解完成,我们再求外侧的最大值:
m a x α i ≥ 0 ∑ i = 1 n α i − 1 2 ∑ i = 1 , j = 1 n α i α j y i y j x i T x j s . t . α ≥ 0 , i = 1 , 2 , . . . , n ∑ i = 1 n α i y i = 0 max_{\alpha_i\geq0}\sum_{i=1}^{n}\alpha_i-\frac{1}{2} \sum_{i=1,j=1}^{n}\alpha_i\alpha_jy_iy_jx_i^Tx_j \\ s.t.\alpha\geq0,i=1,2,...,n \\ \sum_{i=1}^{n}\alpha_iy_i=0 maxαi0i=1nαi21i=1,j=1nαiαjyiyjxiTxjs.t.α0,i=1,2,...,ni=1nαiyi=0
转化为等价问题:
m i n α i ≥ 0 1 2 ∑ i = 1 , j = 1 n α i α j y i y j x i T x j − ∑ i = 1 n α i s . t . α ≥ 0 , i = 1 , 2 , . . . , n ∑ i = 1 n α i y i = 0 min_{\alpha_i\geq0}\frac{1}{2} \sum_{i=1,j=1}^{n}\alpha_i\alpha_jy_iy_jx_i^Tx_j - \sum_{i=1}^{n}\alpha_i \\ s.t.\alpha\geq0,i=1,2,...,n \\ \sum_{i=1}^{n}\alpha_iy_i=0 minαi021i=1,j=1nαiαjyiyjxiTxji=1nαis.t.α0,i=1,2,...,ni=1nαiyi=0
接着我们可以使用序列最小优化(SMO)算法求得得到 α \alpha α,再根据 α \alpha α,我们就可以求解出 ω \omega ω b b b,进而求得 H 3 H_3 H3

感谢阅读。

如果觉得文章对你有所帮助,欢迎打赏哦~
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yougwypf1991

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

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

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

打赏作者

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

抵扣说明:

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

余额充值