机器学习学习笔记 第十七章 支持向量机

支持向量机(Support Vector Machine)

以前非常厉害的一个算法,不过后来遇到了对手——神经网络
这个也是面试的时候经常会问到的非常重要的一个算法
  • SVM要解决的问题:什么样的决策边界才是最好的,如下图中两堆点怎么区分
    • 不过这里不是要区分这两堆点,而是举个例子,后面会进行支持向量机的推导
  • 那么我们来讨论一下决策边界

  • 这两个图分别用不同的决策边界
  • 可见,第二个图的决策边界更好,与两边的距离更宽,区分度越明显

为了更好理解边界的划分过程,我们先推导一下点到平面的距离公式

引用百度百科的一张图
3

  • 我们简化一下:这里我们设 w → \overrightarrow{w} w 是平面的法向量,则平面可以表示为 w → X + b = 0 \overrightarrow{w}X+b=0 w X+b=0,我们假设空间中一点坐标为 e = ( x , y , z ) e=(x,y,z) e=(x,y,z)我们推导出来
    d = 1 ∣ w → ∣ ∣ w → e + b ∣ d=\frac{1}{|\overrightarrow{w}|}|\overrightarrow{w}e+b| d=w 1w e+b

下面再来说说数据标签的定义,因为后面我们要利用支持向量机对数据进行分析,我们先来熟悉一下数据

  • 先假设数据集 ( X 1 , Y 1 ) ( X 2 , Y 2 ) ( X 3 , Y 3 ) . . . ( X n , Y n ) (X_1,Y_1)(X_2,Y_2)(X_3,Y_3)...(X_n,Y_n) (X1,Y1)(X2,Y2)(X3,Y3)...(Xn,Yn)
  • 其中 Y Y Y是数据的类别,定义如下:
    Y = { + 1 , X 为正例的时候 − 1 , X 为负例的时候 Y= \begin{cases} +1, & \text {$X$为正例的时候} \\ -1, & \text{$X$为负例的时候} \end{cases} Y={+1,1,X为正例的时候X为负例的时候
    • 注意设置的是 + 1 +1 +1 − 1 -1 1,而不是 1 1 1 0 0 0
  • 那么,我们利用上面定义好的数据后,就可以定义决策方程
  • 决策方程的定义:
    • 基于上面的距离公式,并且将 x x x转换为函数 Φ ( x ) \Phi(x) Φ(x),有如下公式:
      y ( x ) = w → ⋅ Φ ( x ) + b y(x)=\overrightarrow{w}\cdot \Phi(x)+b y(x)=w Φ(x)+b
      ⇓ \Downarrow
      y ( x i ) > 0 ⇔ y i = + 1 y(x_i)>0\Leftrightarrow y_i=+1 y(xi)>0yi=+1
      y ( x i ) &lt; 0 ⇔ y i = − 1 y(x_i)&lt;0\Leftrightarrow y_i=-1 y(xi)<0yi=1
      ⇓ \Downarrow
      y i ⋅ y ( x i ) &gt; 0 y_i\cdot y(x_i)&gt;0 yiy(xi)>0

有了以上的公式之后,我们就可以确立我们的优化目标了

  • 我们看回去第二个图,我们就是要找一条直线,离两边的点都足够远,越远越好,这样能最好地区分出两边的点
  • 我们先将点到直线的距离都化简一下:
    Y = y i ⋅ ( w → ⋅ Φ ( x i ) + b ) ∣ w → ∣ Y=\frac{y_i\cdot(\overrightarrow{w}\cdot \Phi(x_i)+b)}{|\overrightarrow{w}|} Y=w yi(w Φ(xi)+b)
  • 因为 y i ⋅ y ( x i ) &gt; 0 y_i\cdot y(x_i)&gt;0 yiy(xi)>0,因此这里将分子的绝对值去掉了,其实这个 y i y_i yi纯粹是因为加上去让后面好处理的

通过这个公式,我们可以得出我们的优化目标

a r g m a x w , b { 1 ∣ w → ∣ m i n i { y i ⋅ ( w → ⋅ Φ ( x i ) + b ) } argmax_{w,b}\{\frac{1}{|\overrightarrow{w}|}min_i\{y_i\cdot(\overrightarrow{w}\cdot \Phi(x_i)+b)\} argmaxw,b{w 1mini{yi(w Φ(xi)+b)}

  • 上式的意思是首先寻找最小距离,也即 m i n i { y i ⋅ ( w → ⋅ Φ ( x i ) + b ) } min_i\{y_i\cdot(\overrightarrow{w}\cdot \Phi(x_i)+b)\} mini{yi(w Φ(xi)+b)}即两边的点到你要求的那条分割线的最小距离,然后再给这个最小距离求最大值,也即外面的 a r g m a x w , b argmax_{w,b} argmaxw,b
  • 但其实我们还是不方便求解这个函数,那么我们换一个思路,先进行放缩变换试试:
    • 对于方程 Y = y i ⋅ ( w → ⋅ Φ ( x i ) + b ) Y=y_i\cdot(\overrightarrow{w}\cdot \Phi(x_i)+b) Y=yi(w Φ(xi)+b),我们可以尝试通过放缩使 ∣ Y ∣ &gt; = 1 |Y|&gt;=1 Y>=1,也即 y i ⋅ ( w → ⋅ Φ ( x i ) + b ) &gt; = 1 y_i\cdot(\overrightarrow{w}\cdot \Phi(x_i)+b)&gt;=1 yi(w Φ(xi)+b)>=1(注意,没通过放缩之前是 ∣ Y ∣ &gt; = 0 |Y|&gt;=0 Y>=0的)
    • 通过放缩之后,我们是不是就可以通过 y i ⋅ ( w → ⋅ Φ ( x i ) + b ) &gt; = 1 y_i\cdot(\overrightarrow{w}\cdot \Phi(x_i)+b)&gt;=1 yi(w Φ(xi)+b)>=1而认为 m i n i { y i ⋅ ( w → ⋅ Φ ( x i ) + b ) } = 1 min_i\{y_i\cdot(\overrightarrow{w}\cdot \Phi(x_i)+b)\}=1 mini{yi(w Φ(xi)+b)}=1了,因为我们放缩的目的就是想让最小值变成1,这样后面直接把 m i n i { y i ⋅ ( w → ⋅ Φ ( x i ) + b ) } min_i\{y_i\cdot(\overrightarrow{w}\cdot \Phi(x_i)+b)\} mini{yi(w Φ(xi)+b)}当做是1而忽略掉
    • 至此,原优化目标 a r g m a x w , b { 1 ∣ w → ∣ m i n i { y i ⋅ ( w → ⋅ Φ ( x i ) + b ) } argmax_{w,b}\{\frac{1}{|\overrightarrow{w}|}min_i\{y_i\cdot(\overrightarrow{w}\cdot \Phi(x_i)+b)\} argmaxw,b{w 1mini{yi(w Φ(xi)+b)}简化为 a r g m a x w , b 1 ∣ w → ∣ argmax_{w,b}\frac{1}{|\overrightarrow{w}|} argmaxw,bw 1

如何求解极大值呢

  • 在线性回归的时候我们试过求极小值,却没试过求极大值,那我们是不是可以取一个倒数变成求最小值的问题呢
    a r g m i n w , b ∣ w → ∣ argmin_{w,b}|\overrightarrow{w}| argminw,bw
  • 上式还带有绝对值,用着很不爽,那我们转换成求
    a r g m i n w , b 1 2 w → 2 argmin_{w,b}\frac{1}{2}\overrightarrow{w}^2 argminw,b21w 2
  • 之所以前面带一个 1 2 \frac{1}{2} 21是因为后面求导的时候正好能把 1 2 \frac{1}{2} 21约掉,也是方便计算用的
  • 求这个式子我们用到拉格朗日乘子法

  1. 对于带约束的优化问题,我们可以对式子进行转换,这里省去一万步,直接看结论:
    • 下面是利用拉格朗日乘子法化简完后的式子
      L ( w , b , α ) = 1 2 ∣ w → ∣ 2 − ∑ i = 1 w α i ( y i ( w → ⋅ Φ ( x i ) + b ) − 1 ) L(w,b,\alpha)=\frac{1}{2}|\overrightarrow{w}|^2-\sum_{i=1}^w \alpha_i(y_i(\overrightarrow{w}\cdot \Phi(x_i)+b)-1) L(w,b,α)=21w 2i=1wαi(yi(w Φ(xi)+b)1)
    • 记住约束条件不用忘了哦 y i ⋅ ( w → ⋅ Φ ( x i ) + b ) &gt; = 1 y_i\cdot(\overrightarrow{w}\cdot \Phi(x_i)+b)&gt;=1 yi(w Φ(xi)+b)>=1
    • 下面是我们要求解的内容
      m i n w , b m a x α L w , b , α min_{w,b}max_{\alpha}L{w,b,\alpha} minw,bmaxαLw,b,α
  2. 根据对偶性质,上式可以调换顺序
    m i n w , b m a x α L ( w , b , α ) − &gt; m a x α m i n w , b L ( w , b , α ) min_{w,b}max_{\alpha}L(w,b,\alpha)-&gt;max_{\alpha}min_{w,b}L(w,b,\alpha) minw,bmaxαL(w,b,α)>maxαminw,bL(w,b,α)
  3. 那么求最小值我们就应该想到求偏导(梯度下降的内容),极值点存在于偏导为0的时候
    • w w w求偏导
      ∂ L ∂ w = 0 = &gt; w = ∑ i = 1 n α i y i Φ ( x n ) \frac{\partial L}{\partial w}=0=&gt;w=\sum_{i=1}^{n}\alpha_iy_i\Phi(x_n) wL=0=>w=i=1nαiyiΦ(xn)
    • b b b求偏导
      ∂ L ∂ b = 0 = &gt; 0 = ∑ i = 1 n α i y i \frac{\partial L}{\partial b}=0=&gt;0=\sum_{i=1}^{n}\alpha_iy_i bL=0=>0=i=1nαiyi
  4. 将以上两个偏导带入原来式子中,进行简单化简(从略)可以得到:
    m i n w , b L ( w , b , α ) = ∑ i = 1 n α i − 1 2 ∑ i = 1 , j = 1 w α i α j y i y j Φ ( x i ) Φ ( x j ) min_{w,b}L(w,b,\alpha)=\sum_{i=1}^{n}\alpha_i-\frac{1}{2}\sum_{i=1,j=1}^{w}\alpha_i\alpha_jy_iy_j\Phi(x_i)\Phi(x_j) minw,bL(w,b,α)=i=1nαi21i=1,j=1wαiαjyiyjΦ(xi)Φ(xj)
    • 条件为 ∑ i = 1 n α i y i = 0 和 α i &gt; = 0 \sum_{i=1}^{n}\alpha_iy_i=0和\alpha_i&gt;=0 i=1nαiyi=0αi>=0
    • 已经完成第一步 m i n w , b L ( w , b , α ) min_{w,b}L(w,b,\alpha) minw,bL(w,b,α)的求解了
  5. 接下来对 α \alpha α求极大值
    • 遵循以前求极大值的思路,我们还是先将其转换成极小值的计算,这里直接取负号
      m i n α ( 1 2 ∑ i = 1 , j = 1 w α i α j y i y j Φ ( x i ) Φ ( x j ) − ∑ i = 1 n α i ) min_{\alpha}(\frac{1}{2}\sum_{i=1,j=1}^{w}\alpha_i\alpha_jy_iy_j\Phi(x_i)\Phi(x_j)-\sum_{i=1}^{n}\alpha_i) minα(21i=1,j=1wαiαjyiyjΦ(xi)Φ(xj)i=1nαi)
    • 条件为 ∑ i = 1 n α i y i = 0 和 α i &gt; = 0 \sum_{i=1}^{n}\alpha_iy_i=0和\alpha_i&gt;=0 i=1nαiyi=0αi>=0
  6. 尝试求解了哈,别眨眼了
    • 数据:3个点,其中正例 x 1 ( 3 , 3 ) , x 2 ( 4 , 3 ) x1(3,3) ,x2(4,3) x1(3,3)x2(4,3) ,负例 x 3 ( 1 , 1 ) x3(1,1) x3(1,1)
      4
    • 求解 m i n α ( 1 2 ∑ i = 1 , j = 1 w α i α j y i y j ( x i ⋅ x j ) ) − ∑ i = 1 n α i ) min_{\alpha}(\frac{1}{2}\sum_{i=1,j=1}^{w}\alpha_i\alpha_jy_iy_j(x_i\cdot x_j))-\sum_{i=1}^{n}\alpha_i) minα(21i=1,j=1wαiαjyiyj(xixj))i=1nαi)
      • 约束条件是: α 1 + α 2 − α 3 = 0 , α i &gt; = 0 ( i = 1 , 2 , 3 ) \alpha1+\alpha2-\alpha3=0, \alpha_i&gt;=0(i=1,2,3) α1+α2α3=0,αi>=0(i=1,2,3)
      • 将数据代入:
        1 2 ( 18 α 1 2 + 25 α 2 2 + 2 α 3 2 + 42 α 1 α 2 − 12 α 1 α 3 − 14 α 2 α 3 ) − α 1 − α 2 − α 3 \frac{1}{2}(18\alpha_1^2+25\alpha_2^2+2\alpha_3^2+42\alpha_1\alpha_2-12\alpha_1\alpha_3-14\alpha_2\alpha_3)-\alpha_1-\alpha_2-\alpha_3 21(18α12+25α22+2α32+42α1α212α1α314α2α3)α1α2α3
      • α 1 + α 2 = α 3 \alpha_1+\alpha_2=\alpha_3 α1+α2=α3可以化简:
        4 α 1 2 + 13 2 α 2 2 + 10 α 1 α 2 − 2 α 1 − 2 α 2 4\alpha_1^2+\frac{13}{2}\alpha_2^2+10\alpha_1\alpha_2-2\alpha_1-2\alpha_2 4α12+213α22+10α1α22α12α2
      • 约束条件是: α 1 + α 2 − α 3 = 0 , α i &gt; = 0 ( i = 1 , 2 , 3 ) \alpha1+\alpha2-\alpha3=0, \alpha_i&gt;=0(i=1,2,3) α1+α2α3=0,αi>=0(i=1,2,3)
    • 分别对 α 1 \alpha_1 α1 α 2 \alpha_2 α2求偏导,偏导等于0可以得到 α 1 = 1.5 , α 2 = − 1 \alpha_1=1.5,\alpha_2=-1 α1=1.5,α2=1,这是最一般的情况,但是并没能满足约束条件第二条
      • 那我们再考虑一下会不会在 α 1 = 0 \alpha_1=0 α1=0或者 α 2 = 0 \alpha_2=0 α2=0处满足条件呢?此处我们称之为边界点
      1. α 1 = 0 , α 2 = − 2 13 \alpha_1=0,\alpha_2=-\frac{2}{13} α1=0,α2=132不满足约束
      2. α 1 = 0.25 , α 2 = 0 \alpha_1=0.25,\alpha_2=0 α1=0.25,α2=0满足约束条件,代入原式 = − 0.25 =-0.25 =0.25
        根据等式,有 α 3 = 0.25 \alpha_3=0.25 α3=0.25
      • 因此最小值在 ( 0.25 , 0 , 0.25 ) (0.25,0,0.25) (0.25,0,0.25)处求得

    • 有了这些 α \alpha α,我们可以回代求出n和b了
      • 还记得这些饥渴难耐的式子吧
        w = ∑ i = 1 n α i y i Φ ( x n ) w=\sum_{i=1}^{n}\alpha_iy_i\Phi(x_n) w=i=1nαiyiΦ(xn)
        y ( x ) = w → ⋅ Φ ( x ) + b y(x)=\overrightarrow{w}\cdot \Phi(x)+b y(x)=w Φ(x)+b
      • 直接将上述 α \alpha α代入
        w = 1 4 × 1 × ( 3 , 3 ) + 1 4 × ( − 1 ) × ( 1 , 1 ) = ( 1 2 , 1 2 ) w=\frac{1}{4}\times1\times(3,3)+\frac{1}{4}\times(-1)\times(1,1)=(\frac{1}{2},\frac{1}{2}) w=41×1×(3,3)+41×(1)×(1,1)=(21,21)
        b = y i − ∑ i = 1 n a i y i ( x i ⋅ x j ) = 1 − ( 1 4 × 1 × 18 + 1 4 × ( − 1 ) × 6 ) = − 2 b=y_i-\sum_{i=1}^{n}a_iy_i(x_i\cdot x_j)=1-(\frac{1}{4}\times 1\times18+\frac{1}{4}\times(-1)\times6)=-2 b=yii=1naiyi(xixj)=1(41×1×18+41×(1)×6)=2
    • 因此可得平面方程为

    0.5 x 1 + 0.5 x 2 − 2 = 0 0.5x_1+0.5x_2-2=0 0.5x1+0.5x22=0

总结一下

  • 我们看出来,支持向量机中,真正其作用的点都在决策边界上的点,下图中圈起来的部分,包括我们刚刚的那个例子,只有位于边界上的x1和x3起到作用了( α ! = 0 \alpha!=0 α!=0),其他的都没有对边界起到任何作用
    5
  • 面试可能会出考题:支持向量是哪些?其实就是 α ̸ = 0 \alpha\not=0 α̸=0的那些, α = 0 \alpha=0 α=0的就不是支持向量了
  • 支持向量是真正发挥作用的数据点,其他的对结果都没有任何影响

软间隔(soft-margin)

  • 在数据中,经常会存在一些噪音点,在这些噪音点不存在的时候,支持向量机拟合出来的边界比较不错,但是一旦考虑到这个噪音点而用支持向量机必须考虑这个噪音点的时候,边界会变得相对较差,效果降低,如下图实线就是考虑那个噪音点之后的边界,明显不如虚线来得好
    6.png
  • 因此我们引入一个新的目标函数
    m i n 1 2 ∣ w ∣ 2 + C ∑ i = 1 n ξ i min\frac{1}{2}|w|^2+C\sum_{i=1}^{n}\xi_i min21w2+Ci=1nξi
  • 引入的这个C是我们需要指定的一个参数
    • 当C趋于很大时,意味着分类严格不能有错误
    • 当C趋于很小时,可以有更大的错误容忍
  • 再次引入拉格朗日乘子法来求解,这里我们不多说了,直接给出运算后的结果
    m i n α 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 n α i min_\alpha\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\sum_{i=1}^{n}\alpha_i minα21i=1nj=1nαiαjyiyj(xixj)i=1nαi
  • 约束条件为: ∑ i = 1 n α i y i = 0 , 0 ≤ α i ≤ C \sum_{i=1}^{n}\alpha_iy_i=0, 0\leq\alpha_i\leq C i=1nαiyi=0,0αiC
  • 以上遵循之前同样的解法,但是约束条件比之前更严格
  • 引入了C之后,我们要一步步把C试出来,找出最合适的参数,让边界划分的更好
    下一次更新SVM的示例代码吧

对唐宇迪老师的机器学习教程进行笔记整理
编辑日期:2018-10-7
小白一枚,请大家多多指教
转载请注明出处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值