机器学习实战三——步履维艰svm推导

本文详细介绍了支持向量机(SVM)的数学模型和推导过程,从分隔超平面、支持向量到拉格朗日对偶问题,以及简化版SMO算法的步骤。通过手动推导公式,帮助读者深入理解SVM的原理和算法流程。建议读者手动推导公式,以更好地掌握SVM。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:

清明过后,也快一周的时间了,毕设还在计划中进行。昨天晚上和一个考研到西安交通大学的朋友聊天,也互相交流了一下看法,因为他是做蚁群算法的,所以说也都算是算法类的毕设。能够感觉到他对自己的要求也很高,也都是自己独立推导数学公式,优化算法,哈哈,以后又多了一个能够交流的小伙伴。然后也跟哈深的基友交换了看法,都是感觉自己能够看懂别人的算法,但是自己独立实现还是有困难,enmmmmm还是自身底蕴不够,努力吧。
这几天一直在看svm 支持向量机的内容,整整推导了三天的公式,9张A4纸,还是挺骄傲的,毕竟自己以前很不务实。
在这里插入图片描述今天只有一个目的,就是讲清楚svm的数学推导以及简化版的smo算法。


支持向量机:

概述:

首先支持向量机是一种监督学习算法,无论训练集还是数据集都是需要标注标签的。那么什么是支持向量?在这之前需要先介绍“分隔超平面”的概念。

分隔超平面:

在这里插入图片描述借用AILearning社区的图片进行说明:
可以看到,在二维的图形中,可以用一条直线将线性可分的数据集分开。那么如果数据集由二维上升到三维呢?是的,可以用一个面,可以是平面,也可以是曲面进行分割。那么当维度上升到n维时,依照规律,则可以使用n-1维度的对象进行分割,那么我们用来分割的对象,便叫做“分割超平面”。
再看一张图:
在这里插入图片描述

支持向量:

支持向量实质是数据点,并且是离分割超平面距离最近的数据点,比如上图的苹果。

机:

机也不表示机器,表示的是一种算法。
那么字面意义的支持向量机,就很轻松的讲解完成了。接下来我们讲解支持向量机的数学推导和smo简化版算法。


数学建模及推导:

分割超平面:

西瓜书中直接给出了,分割超平面的线性方程:

W T x + b = 0 W^Tx+b=0 WTx+b=0

我觉得推导过程还是很有必要的,那么我的推导过程如下:

  1. 首先直线的情况下,方程为:

y = a x + b y=ax+b y=ax+b

  1. 微调一下:

x 1 = a x 2 + b x_1=ax_2+b x1=ax2+b

  1. 移项:

a x 2 − x 1 + b = 0 ax_2-x_1+b=0 ax2x1+b=0

  1. 向量化:

[ a , − 1 ] ∗ [ x 2 , x 1 ] T + b = 0 [a,-1]*[x_2,x_1]^T+b=0 [a,1][x2,x1]T+b=0

  1. 那么令向量

W T = [ a , − 1 ] W^T=[a,-1] WT=[a,1]

X = [ x 2 , x 1 ] T X=[x_2,x_1]^T X=[x2,x1]T

则最后便可得到公式:

W T x + b = 0 W^Tx+b=0 WTx+b=0

而维度便是由 W T W^T WT的维度来决定。那么由高等数学的知识可知:
向量 W T W^T WT便是分割超平面的法向量,也就决定了分割超平面的方向,那么b也就是分割超平面的截距,也就是位移项。


点到分割超平面的距离:

在高等数学中,我们学习过点到直线的距离:

d = ∣ A x 0 + B y 0 + C A 2 + B 2 ∣ d=|\frac{Ax_0+By_0+C}{\sqrt{A^2+B^2}}| d=A2+B2 Ax0+By0+C

那么将距离公式扩展到多维:

d = ∣ ∣ W T X + B ∣ ∣ ∣ W ∣ ∣ ∣ d=|\frac{|W^TX+B|}{||W||}| d=WWTX+B

分母即为向量W的模

好了,在理解了点到分割超平面的距离之后,我们来谈一下,对于图6-2来说,什么才是最好的分割方法呢?我们依靠什么来判断分割平面的好与坏呢?
分类器的好坏的评定依据是分类间隔W=2d的大小,即分类间隔W越大,我们认为这个超平面的分类效果越好。此时,求解超平面的问题就变成了求解分类间隔W最大化的问题。W的最大化也就是d最大化的。
而在周志华老师的西瓜书中,我们直接把“间隔”定义为:
两个异类支持向量到超平面的距离之和


问题转换:

请看下图:
在这里插入图片描述
可以看到,我们把左侧的五角星支持向量,还有右侧的圆球支持向量到分割超平面的距离为d,也就是支持向量对应:

∣ W T x + b ∣ = 1 |W^Tx+b|=1 WTx+b=1

那么:

γ = 2 ∣ ∣ W ∣ ∣ \gamma=\frac{2}{||W||} γ=W2

即为图中2d的值。那么现在我们所求的“最大间隔”问题,就被转换成了 γ \gamma γ的最大值问题,也就是 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} w1的最大值问题,也就是 ∣ ∣ w ∣ ∣ 2 ||w||^2 w2的最小值问题:
则可以将问题重新定义为:
满足 m i n ( 1 2 ∣ ∣ w ∣ ∣ 2 ) min(\frac{1}{2}||w||^2) min(21w2)时,求对应的w,b
注意:可能有些人会问为什么多了个系数,实则很简单,为了求导方便


约束条件:

在以上的论述中,已经顺利获得了目标函数的数学形式,我们重新整理一下。
求解最大间隔 -----(等价于)------ γ \gamma γ的最大值----(等价于) m i n ( 1 2 ∣ ∣ w ∣ ∣ 2 ) min(\frac{1}{2}||w||^2) min(21w2)
为了求解最大间隔,首先我们要找到支持向量点,那么又怎么在众多数据点中顺利找出支持向量点呢?
为了能够解决以上问题,我们以二维平面为例,对于二维平面上的两类点,我们依次做不同的标记:
如图所示:
在这里插入图片描述
做标记如下:
红球: y i = + 1 y_i=+1 yi=+1
蓝五角星: y i = − 1 y_i=-1 yi=1
那么根据图示我们知道,只有支持向量才满足:

∣ W T x + b ∣ = 1 |W^Tx+b|=1 WTx+b=1

所以,支持向量以外的点则满足:

∣ W T x + b ∣ > 1 |W^Tx+b|>1 WTx+b>1

那么我们进一步细分:

  1. 如果x属于红球,也就是 y i = + 1 y_i=+1 yi=+1

W T x + b > 1 W^Tx+b>1 WTx+b>1

  1. 如果x属于蓝球,也就是 y i = − 1 y_i=-1 yi=1

W T x + b &lt; − 1 W^Tx+b&lt;-1 WTx+b<1

那么综上所述,我能够得到一个关系式,也就是一个约束条件:

y i ∗ ( W T x + b ) &gt; 1 y_i*(W^Tx+b)&gt;1 yi(WTx+b)>1 对于任意的 x i x_i xi恒成立。


重写数学关系式:

求什么:

m i n ( 1 2 ∣ ∣ w ∣ ∣ 2 ) min(\frac{1}{2}||w||^2) min(21w2)

约束条件是什么:

y i ∗ ( W T x + b ) &gt; 1 y_i*(W^Tx+b)&gt;1 yi(WTx+b)>1 对于任意的 x i x_i xi恒成立。

以上便是支持向量机(svm)的基本型


拉格朗日对偶问题:

其实这个板块,在我们考研数学复习中出现过,也就是拉格朗日参数法,然后求极值或或者最值,如果不了解的话,请看一下考研相关数学资料,不过对偶问题我没有深入研究,毕竟我现在主要是应用,这个就按照西瓜书的公式直接运算啦。

  1. 那么我们使用拉格朗日乘子法,对上述数学关系式添加约束 α i ≥ 0 \alpha_i\geq0 αi0,得到对应的拉格朗日函数为:

L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 n α i ( 1 − y i ( w T x i + b ) ) L(w,b,\alpha)=\frac{1}{2}||w||^2+\sum_{i=1}^{n}\alpha_i(1-y_i(w^Tx_i+b)) L(w,b,α)=21w2+i=1nαi(1yi(wTxi+b)) (*)

那么下面依次求L对 w w w α \alpha α偏导数:
求导过程很简单,自己推导就可以了,得到结果:

w = ∑ i = 1 n α i y i x i w=\sum_{i=1}^{n}\alpha_iy_ix_i w=i=1nαiyixi

∑ i = 1 n α i y i = 0 \sum_{i=1}^{n}\alpha_iy_i=0 i=1nαiyi=0

好,我们将以上这两个式子代回 L ( w , b , α ) L(w,b,\alpha) L(w,b,α)中可知, w w w b b b就能够被消去,得到结果:

L ( w , b , α ) = ∑ i = 0 n α i − 1 2 ∑ i , j = 1 n α i α j y i y j x i T x j L(w,b,\alpha)=\sum_{i=0}^{n}\alpha_i-\frac{1}{2}\sum_{i,j=1}^{n}\alpha_i\alpha_jy_iy_jx_i^Tx_j L(w,b,α)=i=0nαi21i,j=1nαiαjyiyjxiTxj

那么这个便是*式的对偶问题数学表达式。于是问题变转化为:

m a x α i : ∑ i = 0 n α i − 1 2 ∑ i , j = 1 n α i α j y i y j x i T x j max_{\alpha_i}: \sum_{i=0}^{n}\alpha_i-\frac{1}{2}\sum_{i,j=1}^{n}\alpha_i\alpha_jy_iy_jx_i^Tx_j maxαi:i=0nαi21i,j=1nαiαjyiyjxiTxj

应该满足的条件为:

∑ i = 1 n α i y i = 0 \sum_{i=1}^{n}\alpha_iy_i=0 i=1nαiyi=0

α i ≥ 0 \alpha_i\geq0 αi0

那么现在的问题就变成了求解 α \alpha α的值,不过目前这个问题属于二次规划问题,在大数据、大样本下如果使用通法来解决则会造成很大的开销,由此我们使用著名的smo算法求解,那么接下来,我们将讲解smo算法的过程,也就是数学逻辑推导。


smo算法

SMO算法的工作原理是:每次循环中选择两个alpha进行优化处理。一旦找到了一对合适的alpha,那么就增大其中一个同时减小另一个。这里所谓的”合适”就是指两个alpha必须符合以下两个条件,条件之一就是两个alpha必须要在间隔边界之外,而且第二个条件则是这两个alpha还没有进进行过区间化处理或者不在边界上。

算法步骤:

  1. 计算误差:

E i = f ( x i ) − y i = ∑ i = 1 n a j y j x i T x j + b − y i E_i=f(x_i)-y_i=\sum_{i=1}^{n}a_jy_jx_i^Tx_j+b-y_i Ei=f(xi)yi=i=1najyjxiTxj+byi

  1. 计算上下界:

L = m a x ( 0 , a j o l d − a i o l d ) , H = m i n ( C , C + a j o l d − a i o l d ) L=max(0,a_j^{old}-a_i^{old}),H=min(C,C+a_j^{old}-a_i^old) L=max(0,ajoldaiold),H=min(C,C+ajoldaiold) if y i ! = y j {y_i} !={y_j} yi!=yj

L = m a x ( 0 , a j o l d + a i o l d ) , H = m i n ( C , a j o l d + a i o l d ) L=max(0,a_j^{old}+a_i^{old}),H=min(C,a_j^{old}+a_i^{old}) L=max(0,ajold+aiold),H=min(C,ajold+aiold) if y i = y j {y_i} ={y_j} yi=yj

  1. 计算 η \eta η

η = x i T x i + x j x j T − 2 x i T x j \eta=x_i^Tx_i+x_jx_j^T-2x_i^Tx_j η=xiTxi+xjxjT2xiTxj

  1. 更新 α j \alpha_j αj

α j n e w = α i o l d + y i ( E i − E j ) η \alpha_j^{new}=\alpha_i^{old}+\frac{y_i(E_i-E_j)}{\eta} αjnew=αiold+ηyi(EiEj)

  1. 修正 α j \alpha_j αj:

α n e w , c l i p p e d = H \alpha^{new,clipped}=H αnew,clipped=H,if α 2 n e w ≥ H \alpha_2^{new}\geq H α2newH

α n e w , c l i p p e d = α 2 n e w \alpha^{new,clipped}=\alpha_2^{new} αnew,clipped=α2new ,if L ≤ α 2 n e w ≤ H L\leq\alpha_2^{new}\leq H Lα2newH

α n e w , c l i p p e d = L \alpha^{new,clipped}=L αnew,clipped=L ,if α 2 n e w ≤ L \alpha_2^{new}\leq L α2newL

  1. 更新 α i \alpha_i αi

a i n e w = a i o l d + y i y j ( a j o l d − a j n e w , c l i p p e d ) a_i^{new}=a_i^{old}+y_iy_j(a_j^{old}-a_j^{new,clipped}) ainew=aiold+yiyj(ajoldajnew,clipped)

  1. 更新b1和b2:

b 1 n e w = b o l d − E i − y i ( α i n e w − α i o l d ) x i T x i − y j ( α j n e w − α j o l d ) x j T x i b_1^{new} = b^{old} -E_i-y_i(\alpha_i^{new}-\alpha_i^{old})x_i^Tx_i-y_j(\alpha_j^{new}-\alpha_j^{old})x_j^Tx_i b1new=boldEiyi(αinewαiold)xiTxiyj(αjnewαjold)xjTxi

b 2 n e w = b o l d − E i − y i ( α i n e w − α i o l d ) x i T x j − y j ( α j n e w − α j o l d ) x j T x j b_2^{new} = b^{old} -E_i-y_i(\alpha_i^{new}-\alpha_i^{old})x_i^Tx_j-y_j(\alpha_j^{new}-\alpha_j^{old})x_j^Tx_j b2new=boldEiyi(αinewαiold)xiTxjyj(αjnewαjold)xjTxj

  1. 根据b1、b2更新b:

b = b 1 b=b_1 b=b1 0 ≤ α i n e w ≤ C 0\leq\alpha_i^{new} \leq C 0αinewC

b = b 2 b=b_2 b=b2 0 ≤ α 2 n e w ≤ C 0\leq\alpha_2^{new}\leq C 0α2newC

b = b 1 + b 2 2 b=\frac{b_1+b_2}{2} b=2b1+b2 ,others


我在这里重申一下,我只是把推导公式后的smo算法的步骤全部罗列了下来,大家如果对推导感兴趣,有以下方式可以查看到:


  1. jack_cui机器学习专栏
  2. 南瓜书——专注于西瓜书的公式推导
  3. 可以关注我的公众号,回复“smo公式推导”,我会把我的手动推导过程呈献给大家。这里解释一下吧,主要是我推导的公式字迹太乱了,最近也没有太多的时间重新推导,所以只能是以这种方式,等重新手动推导结束,过一段时间上传至优快云、Coder引力(个人微信公众号)二维码如下:
    在这里插入图片描述

总结&计划:

  1. svm不是很好理解,一定要沉下心来手动推导公式,才能真正理解smo算法的整体流程
  2. 支持向量机这一块,我只学习了以上这些内容,例如核函数、核方法、软间隔等问题还没有深入学习,这个就留在研究生阶段好好攻克了,现在的首要任务还是做毕设。
  3. 要赶快动手写代码了,nlp处理还要做的更加精细,尝试在原有基础上使用word2Vec工具。

鸣谢:

  1. 毕设老师提供的学习思路
  2. Jack_cui机器学习专栏
  3. 西瓜书、南瓜书
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值