简单明了的阐述SVM支持向量机以及做法步骤

本文深入浅出地解析了SVM向量机的工作原理,包括如何通过最大化边界距离来实现分类,以及如何计算支持向量和决策面。文章详细介绍了从距离公式的推导到拉格朗日函数的应用过程。

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

  • 一:什么是SVM向量机

    SVM向量机通俗来讲,是用于分类的一种算法。

    在这里插入图片描述
       举例来说,SVM要做的就是,1.将图中的黑点和白点分开 2.分割线要尽量离两边的样本点要远。

       图中的黑色实线即为分割线,黑色虚线即为俩边的样本到分割线最近的位置。我们假设白点样本到分割线的最近的距离为d1,黑色样本点到分割线的最近的距离为d2,我们必须保证d1=d2。若d1不等于d2,即分割线距离某个样本比另一个样本更近,这个分割线是不合适的,因为它会更偏袒某个样本。
       由于样本离分割线的最近距离相同,即某个样本点距离分割线的距离相同,黑色
    虚线是按照样本点来画的,所以在黑色虚线的样本点,即距离分割线最近的几个样本点,我们叫做支持向量,分割线叫做决策面,并且对于一组样本,通常有不同的决策面。
       并且d要大,即距离应当更宽,因为分割线距离样本越宽,这个分割线就越“安全”。越不容易分错。

       下面来看一下怎么计算:

       第一:我们可以从图像知道,决策面是一个直线函数,我们将其定义为 y = ax+b。

       第二:因为也许会有不同的多个决策面,所以我们要决定出哪个决策面最好,根据决策面的条件,我们知道,支持向量到决策面的距离越宽越好。所以这个距离我们用点到直线的距离公式。
    d=∣Ax+By+b∣⌋A2+B2‾d=\dfrac {\left| Ax+By+b\right| }{\rfloor \overline {A^{2}+B^{2}}}d=A2+B2Ax+By+b
       我们将公式向量化,A,B都是我们不知道的,x,y是样本点的坐标,是已知的,我们将已知的x,y和未知的A,B提出来,组成向量的形式,即xi=[xi,yi]x_{i} =[ x_{i},y_{i}]xi=[xi,yi] ,i为第几组样本,w =[Ai,Bi][ A_{i},B_{i}][Ai,Bi] ,所以Ax + By = WiTXiW^{T}_{i}X_{i}WiTXi,大家很熟悉的向量形式吧, A2+B2{A^{2}+B^{2}}A2+B2即为||w||,这里||w|| = WTWW^{T}WWTW
    所以距离公式为 d=∣wTxi+b∣∥w∥d = \dfrac {\left| w^{T}x_{i}+b\right| }{\left\| w\right\| }d=wwTxi+b
       第三:这里我们可以回想一下为什么距离公式的分子要加绝对值符号,因为会有正负(废话呀这是),但什么时候是正什么时候是负呢,当点在这条线下方的时候为负,在上面为正(不再解释),而我们SVM正号要对样本进行分类,我们可以把被决策面上方的一边的样本定义为+1,下面的定义为-1,我们可以定义一个标签向量y = {-1,1},我们便可以利用这个标签向量去掉绝对值符号。即
    d=(wTxi+b)∗yi∥w∥,yi=−1或1d = \dfrac {\left( w^{T}x_{i}+b\right)*y_{i} }{\left\| w\right\| } ,y_{i} = {-1或1}d=w(wTxi+b)yi,yi=11
      第四:我们想要计算d的最小值,我们先对分子进行处理:
    我们知道d是样本距离决策面的距离,且有正负,若大于d,则样本在决策面上面,被分到的标签是y =1 ,反之一样。则:
    (wTxi+b)∗yi∥w∥>=d,yi=1\dfrac {\left( w^{T}x_{i}+b\right)*y_{i} }{\left\| w\right\| }>=d ,y_{i} =1w(wTxi+b)yi>=d,yi=1
    (wTxi+b)∗yi∥w∥&lt;=−d,yi=−1\dfrac {\left( w^{T}x_{i}+b\right)*y_{i} }{\left\| w\right\| }&lt;=-d ,y_{i} =-1w(wTxi+b)yi<=d,yi=1
    同时处以d,得:
    (wTxi+b)∗yi∥w∥d&gt;=1,yi=1\dfrac {\left( w^{T}x_{i}+b\right)*y_{i} }{\left\| w\right\|d }&gt;=1 ,y_{i} =1wd(wTxi+b)yi>=1,yi=1
    (wTxi+b)∗yi∥w∥d&lt;=−1,yi=−1\dfrac {\left( w^{T}x_{i}+b\right)*y_{i} }{\left\| w\right\|d }&lt;=-1 ,y_{i} =-1wd(wTxi+b)yi<=1,yi=1
    Wd=w∥W∥dW_{d}=\dfrac {w}{\left\| W\right\| d}Wd=WdwBd=b∥W∥dB_{d}=\dfrac {b}{\left\| W\right\| d}Bd=Wdb
    可得:WdTxi+Bd&gt;=1,y=1W^{T}_{d}x_{i}+Bd&gt;= 1,y= 1WdTxi+Bd>=1y=1
    WdTxi+Bd&lt;=−1,y=−1W^{T}_{d}x_{i}+Bd&lt;= -1,y= -1WdTxi+Bd<=1y=1
    将两式合并(WTxi+Bd)yi≥1\left( W^{T}x_{i}+Bd\right) y_{i}\geq 1(WTxi+Bd)yi1
    min[(wTxi+Bd)yi]min[\left( w^{T}x_{i}+Bd\right) y_{i}]min[(wTxi+Bd)yi]的最小值为1
    这样距离公式转化成了求1∥W∥\dfrac {1}{\left\| W\right\| }W1的最大值
    即 max (d) = max1∥W∥\dfrac {1}{\left\| W\right\| }W1
    即求∥W∥\left\| W\right\|W的最小值
    求这么一个函数的最小值不一定好求,我们等效成求12∥W∥2\dfrac {1}{2}\left\| W\right\| ^{2}21W2的最小值,转换成这样是易于求极小值
       第五:我们这时候暂时总结一下(下面还有),判断求决策面是否合适转换成了求距离是否大,然后由距离公式不断推出,我们现在要求这个结果:min12∥W∥2min\dfrac {1}{2}\left\| W\right\| ^{2}min21W2
    但是,别忘了这个式子是不全面的,这个式子是在约束条件yi(wTxi+b)≥1y_{i}\left( w^{T}x_{i}+b\right) \geq 1yi(wTxi+b)1得到的,所以要加上这个约束条件
    max(d)=min12∥W∥2max(d)=min\dfrac {1}{2}\left\| W\right\| ^{2}maxd=min21W2
    s.t.yi(wTxi+b)≥1s.t. y_{i}\left( w^{T}x_{i}+b\right) \geq 1s.t.yi(wTxi+b)1或者 s.t.yi(wTxi+b)−1≥0s.t. y_{i}\left( w^{T}x_{i}+b\right) -1\geq 0s.t.yi(wTxi+b)10
       第六,看见这个式子,学过高数的朋友应该心里想到了怎么求,用拉格朗日函数求解,设:L(w,b,a)=12∥W∥2−∑i=1na[yi(wTxi+b)−1]L\left( w,b,a\right) =\dfrac {1}{2}\left\| W\right\| ^{2}-\sum ^{n}_{i=1}a[y_{i}\left( w^{T}x_{i}+b\right) -1]L(w,b,a)=21W2i=1na[yi(wTxi+b)1]
    分别求L对w,b的偏导,得:∂L∂w=w−∑i=1na⋅yixi\dfrac {\partial L}{\partial w}=w-\sum ^{n}_{i=1}a\cdot y_{i}x_{i}wL=wi=1nayixi∂L∂b=−∑i=1na⋅yi \dfrac {\partial L}{\partial b}=-\sum ^{n}_{i=1}a\cdot y_{i}bL=i=1nayi
      第七:令偏导等于0:w=∑i=1na⋅yixiw = \sum ^{n}_{i=1}a\cdot y_{i}x_{i}w=i=1nayixi0=∑i=1na⋅yi0=\sum ^{n}_{i=1}a\cdot y_{i}0=i=1nayi
    对原式L(w,b,a)进行代入化简运算:
    L(w,b,a)=∑i=1nai−12(∑i=1naixiyi)T∑i=1naixiyi L\left( w,b,a\right) =\sum ^{n}_{i=1}a_{i}-\dfrac {1}{2}\left( \sum ^{n}_{i=1}a_{i}x_{i}y_{i}\right) ^{T}\sum ^{n}_{i=1}a_{i}x_{i}y_{i}L(w,b,a)=i=1nai21(i=1naixiyi)Ti=1naixiyi=∑i=1nai−12∑ij=1naiajyiyjxiTxi=\sum ^{n}_{i=1}a_{i}-\dfrac {1}{2}\sum ^{n}_{ij=1}a_{i}a_{j}y_{i}y_{j}x_{i}^{T}x_{i}=i=1nai21ij=1naiajyiyjxiTxi
    别忘了约束条件s.t.∑i=1naiyi=0s.t.\sum ^{n}_{i=1}a_{i}y_{i}=0s.t.i=1naiyi=0ai&gt;0,i=1,2,..na_{i}&gt;0,i=1,2,..nai>0,i=1,2,..n
    基本上是完成了计算方式,下面还有优化
    (我不想写了腰好疼哇啊啊啊啊啊,剩下的明天写吧)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值