从点与直线的距离到支持向量机(SVM)原理 附python demo(2)

前言

上一篇介绍了 一个点到直线距离的向量理解
知道这个点到超平面的距离公式:
d i s t a n c e = ∣ d ∣ = ∣ w T x + b ∣ ∥ w ∥ \begin{array}{c} distance = \left |d \right | = \frac{\left |w^Tx+b\right | }{\left \| w \right \| } \end{array} distance=d=wwTx+b
我们为什么要强调这个点的概念呢,很简单,因为这个点表示的就是数据点,也就是模型的特征。有多少个特征也就意味着这个 x 的长度大小 。
接下来将介绍SVM的原理以及详细的 拉格朗日对偶问题 推导过程。

一、SVM问题的基本形式

以二分类为例子
对于一组已经知道的数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . ( x N , y N ) } \begin{array}{c} D=\left \{(x_1,y_1),(x_2,y_2),...(x_N,y_N) \right \} \end{array} D={(x1,y1),(x2,y2),...(xN,yN)}其中

  • x 表示为特征向量 x = ( x 0 , x 1 , . . . , x k ) T \begin{array}{c} x = (x_0,x_1,...,x_k)^T \end{array} x=(x0,x1,...,xk)T表示有k个特征.
  • D 中有N 个数据样本。
  • y表示的是改数据集的标签 label , y i = + 1 \begin{array}{c} y_i = +1 \end{array} yi=+1 y i = − 1 \begin{array}{c} y_i = -1 \end{array} yi=1 分别标记为二分类的两个类。
    为什么一个是+1,一个是-1?
    前面我们推导过计算点到直线的距离的时候要再分子加个绝对值,这是因为一个超平面必然会划分出两个半空间,超平面是一个等于0 的方程。在超平面的上方的为正,则在下方的为负数。所以将一类标记为+1,一类标记为-1 时,可以化掉绝对值符号,用来表示距离:
    d i s t a n c e = ∣ w T x + b ∣ ∥ w ∥ = y i ( w T x + b ) ∥ w ∥ \begin{array}{c} distance = \frac{\left | \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b \right | }{\left \| w \right \| } = \frac{y_i(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b)}{\left \| w \right \|} \end{array} distance=wwTx+b=wyi(wTx+b)

在这里插入图片描述
由上图可知,要区分D中的两个类目标就是找出一个合理的超平面,图中的直线就是一个超平面。这个超平面必须具备两个功能。
1. 尽可能地让两个类别分在两个不同的半空间。
2. 两个类的点到超平面的距离越大越好。

超平面可以表示为:
w T x + b = 0 \begin{array}{c} \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b = 0 \end{array} wTx+b=0
显然两个半空间就是
w T x + b > 0 \begin{array}{c} \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b> 0 \end{array} wTx+b>0 w T x + b < 0 \begin{array}{c} \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b <0 \end{array} wTx+b<0
在SVM问题中,这由于标签 y 标记为+1 ,-1 ,在数学上这两个半空间需要做小小改动。也就是:
{ w T x + b ⩾ + 1 , y i = + 1 w T x + b ⩽ − 1 , y i = − 1 \begin{array}{c} \left\{\begin{array}{ll} \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b \geqslant+1, & y_{i}=+1 \\ \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b \leqslant-1, & y_{i}=-1 \end{array}\right. \end{array} {wTx+b+1,wTx+b1,yi=+1yi=1
为什么需要这样改动?/为什么是1?
这是因为要描述最优的超平面,最优在这里的含义就是尽可能地讲连个类别分开。在距离上定义上版空间要>1 ,下半空间<-1 是为了引出一个两个平行直线之间的 间隔 这一概念,然后“两个分类的数据点点到划分超平面的距离越远越好”问题就可以转换为 间隔越大越好。如图:
在这里插入图片描述
这样很容易得到这个间隔的大小为 γ = 2 ∥ w ∥ \begin{array}{c} \gamma = \frac{2}{\left \| w \right \| } \end{array} γ=w2,也就是优化的目标。
“尽可能地让两个类别分在两个不同的半空间。”则是优化的约束条件,不能让样本点落在间隔之内。
也就是样本点到超平面的距离大于1,也就是: y i ( w T x + b ) ≥ 1 \begin{array}{c} y_i(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b)\ge 1 \end{array} yi(wTx+b)1
为什么是1?不用纠结这个数值,他就是表示一个“间隔”的意义,后面我们知道只需要最小化分母即可,与分母无关,这是一种问题的等价思想。
将它表示为凸优化问题:
max ⁡ 2 ∥ w ∥ s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , … , N \begin{array}{c} \max\frac{2}{\|w\|} \\ s.t. \quad y_{i}\left(\boldsymbol{w}^{\boldsymbol{T}} \boldsymbol{x}_{\boldsymbol{i}}+b\right) \geq 1, \quad i=1,2, \ldots, N \end{array} maxw2s.t.yi(wTxi+b)1,i=1,2,,N

最大化 γ = 2 ∥ w ∥ \begin{array}{c} \gamma = \frac{2}{\left \| w \right \| } \end{array} γ=w2, 在凸优化问题上与最小化分母 ∥ w ∥ \begin{array}{c} \left \|w \right \| \end{array} w是等价的。因此就可以得出SVM 问题的基本形式:
min ⁡ 1 2 ∥ w ∥ 2 s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , … , N \begin{array}{c} \min \frac{1}{2}\|w\|^{2}\\ s.t. \quad y_{i}\left(\boldsymbol{w}^{\boldsymbol{T}} \boldsymbol{x}_{\boldsymbol{i}}+b\right) \geq 1, \quad i=1,2, \ldots, N \end{array} min21w2s.t.yi(wTxi+b)1,i=1,2,,N

二、拉格朗日对偶算法

这就是一个典型的条件最值问题 (凸优化问题,约束最优化问题)

  • 插上一句:如果你学过高数,求解一个条件最值问题的时候,通常用拉格朗日乘子法来解。
    1.构造拉格朗日函数,
    2.分别求各个参数的一阶偏导数=0,
    3.分情况讨论,求解最值。
  • 在最优化理论里面步骤3就是作为的KKT条件。

什么叫做对偶性?

  • 回顾语文:对偶的修辞手法。“海阔凭鱼跃,天高任鸟飞。”这就是对偶。
  • 那么拉格朗日的对偶性也是同样的含义:
    简单来说: 一个极小极大问题,它的对偶问题就是极大极小问题。
    以下latex 图片识别次数有限。手推了。
    在这里插入图片描述

在这里插入图片描述

用拉格朗日对偶算法求解SVM的问题

min ⁡ 1 2 ∥ w ∥ 2 s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , … , N \begin{array}{c} \min \frac{1}{2}\|w\|^{2}\\ s.t. \quad y_{i}\left(\boldsymbol{w}^{\boldsymbol{T}} \boldsymbol{x}_{\boldsymbol{i}}+b\right) \geq 1, \quad i=1,2, \ldots, N \end{array} min21w2s.t.yi(wTxi+b)1,i=1,2,,N
构造拉格朗日函数:
L ( x , λ , ν ) = f 0 ( x ) + ∑ i = 1 m λ i f i ( x ) + ∑ i = 1 p ν i h i ( x ) \begin{array}{c} L(x, \lambda , \nu )=f_0(x)+\sum_{i=1}^{m} \lambda _{i} f_{i}(x)+\sum_{i=1}^{p} \nu _{i} h_{i}(x) \end{array} L(x,λ,ν)=f0(x)+i=1mλifi(x)+i=1pνihi(x)
原问题是拉格朗日函数的极小极大,则其对偶问题是拉格朗日函数的极大极小。
在这里插入图片描述

因此SVM问题的对偶算法求解思路是:

  1. 构造拉格朗日函数 L ( x , λ , ν ) \begin{array}{c} L(x,\lambda ,\nu) \end{array} L(x,λ,ν)

  2. 求一阶偏导数=0的x,代入拉格朗日函数,目的是找到最小的 L ( x , λ , ν ) \begin{array}{c} L(x,\lambda ,\nu) \end{array} L(x,λ,ν)使得求出对偶函数:在这里插入图片描述

  3. 转化为通过优化拉格朗日乘子来优化出最大的对偶函数问题:
    在这里插入图片描述

具体步骤:

  1. 非等式约束一律化为左边<= 右边的形式
    min ⁡ 1 2 ∥ w ∥ 2 s . t . − y i ( w T x i + b ) + 1 ≤ 0 , i = 1 , 2 , … , N \begin{array}{c} \min \frac{1}{2}\|w\|^{2}\\ s.t. \quad -y_{i}\left(\boldsymbol{w}^{\boldsymbol{T}} \boldsymbol{x}_{\boldsymbol{i}}+b\right) +1\le0, \quad i=1,2, \ldots, N \end{array} min21w2s.t.yi(wTxi+b)+10,i=1,2,,N
  2. 构造拉格朗日函数:
    在这里插入图片描述

化简一下等价于:
g-blog.csdnimg.cn/db3bc2e62e8646f29238a0cfd7479441.png)

  • 求w,b 的一阶偏导数,并且令一阶偏导数为0 得到:
    在这里插入图片描述
    在这里插入图片描述
    即可得到:
    在这里插入图片描述
  • 将上面等式代入原拉格朗日函数即可得到对偶函数:
    在这里插入图片描述
    所以对 对偶函数 优化 λ \lambda λ 的极大 既得到原问题的对偶问题
    对偶问题描述:
    在这里插入图片描述

三、对偶性以及强对偶的成立条件

KKT条件

  • 先看下面的 【 对偶问题 , 拉格朗日函数 , 原问题的关系】
  • 原问题和对偶问题等价时,就是强对偶,即存在对偶最优解和原问题最优解等价,要先知道中间这个等号成立的条件是什么。

在这里插入图片描述
回顾下高数里面用拉格朗日乘子法求解条件约束问题的最值问题:

  • 对于约束问题,先构造拉格朗日函数,高数里考试一般是等式约束。

  • 对拉格朗日函数的所有参数都求偏导,然后令偏导为0.得出几个约束条件组。

  • 对符合条件的 解代入原函数,求取最值。
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/3890dbb418ca491d9e6c536b2f2aa6bc.p
    以上为拉格朗乘子法求解条件约束问题最值的步骤。为什么要说这个求解方法?因为这跟KKT条件极其相像。或者说步骤2 的三个约束条件 就是KKT条件。
    求的最值的解一定要符合KKT条件,这是充分条件。
    那么什么是KKT条件呢?KKT条件有三个结构

  • 1.原问题的约束条件

  • 2.对偶问题的约束条件----->非等式约束的拉个朗日乘子

  • 3.互补松弛条件 —>下面细说一下

  • 4.梯度条件 -->偏导为0
    ,对于一个拉格朗日函数来说,是怎么得出其KKT条件的呢?
    在这里插入图片描述
    KKT 条件:
    1.原问题的约束条件:
    在这里插入图片描述
    2.对偶问题的约束条件:
    这个就是拉格朗日乘子的非等式约束的乘子,要求是大于等于0.所以对偶约束为:
    在这里插入图片描述
    3.互补松弛条件与梯度条件
    这个互补松弛是什么概念呢?这是一个原目标函数的最优解与对偶函数最优解的相等。其中下面公式的 x ∗ , λ ∗ , ν ∗ \begin{array}{c} x^*,\lambda ^*,\nu ^* \end{array} x,λ,ν表示的是原问题和对偶问题的最优解,那么依照这样的可以得出以下推导:
    在这里插入图片描述

  • 从(1)到(2),不难推断出,优化x取最小值的解,必须是最优解
    显然这必要要求这个在最优解取值时一阶偏导数为0,这就是KKT梯度条件。也就是拉格朗日函数的原函数 参数x 的偏导必须为0。
    这就是KKT条件4,梯度条件。
    在这里插入图片描述

    这也是为什么拉格朗日乘子法需要求偏导取0 的做法。
    (可能你会问对拉格朗日乘子求偏导又是为何呢?)
    很简单,对拉格朗日乘子求导得到的其实就是KKT条件1 原问题的初始约束条件。

  • 再看(2),到(3),这个步骤成立的条件是什么?我们看其第二项,非等式约束项,拉格朗日乘子与非等式约束相乘,一个为大于等于0,一个为小于等于0,那么这一项必然是小于等于0,也就是:
    在这里插入图片描述
    要使(2)到(3)成立必须要上述不等式条件取等号! 这就是KKT互补松弛条件:
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/ac3b31a5108442ae85614dfad7169ea7.png

以上就是KKT条件,那么与强对偶:
在这里插入图片描述
成立的关系是符合KKT条件?
错,强对偶的解一定符合KKT条件,符合KKT条件的解不一定是原问题的最优解

四、强对偶的充要条件

存在可行解符合SCQ,Slater 条件
Slater条件定义:
对于一个凸问题,若存在 x ∈ relint ⁡ D \begin{array}{c} x \in \operatorname{relint} D \end{array} xrelintD ,使得 f i ( x ) < 0 , i = 1 , … , m , A x = b , \begin{array}{c} f_{i}(x)<0, i=1, \ldots, m, A x=b, \end{array} fi(x)<0,i=1,,m,Ax=b那么凸问题和它的对偶问题一定是强对偶。
(relint D 的含义就是既满足不等式约束,又满足等式约束的点集)
这就是强对偶的条件,SCQ 条件还可以用另一句经常听到的话“拉格朗日函数存在鞍点”,但是这也不是充要条件,因为没有鞍点也可以强对偶,拉格朗日函数有鞍点一定是强对偶。这里不在证明。
如果你不懂什么是鞍点,来看一下这个马鞍的形状,来脑补一下极大极小,和极小极大,留给大家思考。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值