手撕SVM(一)

在正式手撕SVM之前,我们先介绍一些基础知识,主要包括函数间隔、几何间隔、核函数、软间隔等。

函数间隔

函数间隔其实就是类别标签乘上了 f ( x ) f(x) f(x)的值,该值永远是大于等于0的,正好符合了距离的概念。可以理解为支持向量所在边界平面与分隔超平面的截距之差,是一个常数。其定义为:
γ ^ = y ( w T x + b ) = y f ( x ) \hat\gamma=y(w^Tx+b)=yf(x) γ^=y(wTx+b)=yf(x)
可以这样去理解,假设 y = 1 y=1 y=1 f ( x ) = 1 f(x)=1 f(x)=1,其实就是将原来的分类超平面 f ( x ) f(x) f(x)向右平移了1个单位,而 y = 1 y=1 y=1 f ( x ) = 2 f(x)=2 f(x)=2是将原来的分类超平面 f ( x ) f(x) f(x) 向右平移了2个单位,所以 f ( x ) f(x) f(x)值越大的点到分类超平面的距离当然越远。
但还是存在问题,上述定义的函数间隔虽然可以表示分类预测的正确性和确信度,但在选择分类超平面时,只有函数间隔还远远不够,因为如果成比例的调整 ω \omega ω b b b,如将他们改变为 2 ω 2\omega 2ω 2 b 2b 2b,虽然此时超平面还是那个超平面,但函数间隔的值 y f ( x ) yf (x) yf(x)却变成了原来的4倍。所以在实际中,我们定义点到超平面的距离时,采用的是几何间隔。

几何间隔

其函数式定义为:
γ ~ = y γ = γ ^ ∣ ∣ ω ∣ ∣ \tilde{\gamma}=y\gamma=\frac{\hat\gamma}{||\omega||} γ~=yγ=ωγ^
那么它是如何计算出来的呢?我们看下面的证明:
Alt
如上图所示,有一超平面,超平面上的点 x 0 x_0 x0是平面外点 x x x的投影, ω \omega ω是垂直于超平面的某一向量, γ \gamma γ为点 x x x到超平面的距离,那么有:
x = x 0 + γ ω ∣ ∣ ω ∣ ∣ x = x_0+\gamma\frac{\omega}{||\omega||} x=x0+γωω
则有:
f ( x ) = f ( x 0 + γ ω ∣ ∣ ω ∣ ∣ ) f(x)=f(x_0+\gamma\frac{\omega}{||\omega||}) f(x)=f(x0+γωω)
有:
f ( x ) = f ( x 0 ) + f ( γ ω ∣ ∣ ω ∣ ∣ ) + C f(x)=f(x_0)+f(\gamma\frac{\omega}{||\omega||})+C f(x)=f(x0)+f(γωω)+C
这里注意多加上一个常数,进一步计算:
f ( x ) = 0 + ω T γ ω ∣ ∣ ω ∣ ∣ + b + C f(x)=0+\omega^T\gamma\frac{\omega}{||\omega||}+b+C f(x)=0+ωTγωω+b+C
可以找到一个 C C C将常数消去。得到:
f ( x ) = γ ∣ ∣ ω ∣ ∣ 2 ∣ ∣ ω ∣ ∣ = γ ∣ ∣ ω ∣ ∣ f(x)=\gamma\frac{||\omega||^2}{||\omega||}=\gamma||\omega|| f(x)=γωω2=γω
得到:
γ = f ( x ) ∣ ∣ ω ∣ ∣ \gamma=\frac{f(x)}{||\omega||} γ=ωf(x)
此处的 γ \gamma γ是带符号的,乘上类别信息,可将符号消去,得到几何距离,即:
γ ~ = y γ = y f ( x ) ∣ ∣ ω ∣ ∣ = γ ^ ∣ ∣ ω ∣ ∣ \tilde{\gamma}=y\gamma=\frac{yf(x)}{||\omega||}=\frac{\hat\gamma}{||\omega||} γ~=yγ=ωyf(x)=ωγ^
这里也就提现了几何间隔和函数间隔的关系了。

核函数

在SVM算法中,非常重要的就是核技巧,我们将介绍什么是核函数,以及它在实际的应用中带来的好处。
我们先介绍核函数。设 X X X是输入空间(欧式空间 R n R^n Rn的子集或离散集合)中的一个子集,如果存在一个 X X X到特征空间 H H H的映射,使得对任意的 x , y ∈ X x,y\in X x,yX K ( x , y ) = ( ϕ ( x ) , ϕ ( y ) ) = ϕ ( x ) T ϕ ( y ) K(x,y)=(\phi(x),\phi(y))=\phi(x)^T\phi(y) K(x,y)=(ϕ(x),ϕ(y))=ϕ(x)Tϕ(y)都成立,那么 K ( x , y ) K(x,y) K(x,y)就是核函数。
那么那些函数 K K K满足上述关系呢?Mercer定理证明如下两族函数都是核函数:

  • 多项式核
    K ( x i , y i ) = ( x i y i + 1 ) p K(x_i,y_i)=(x_iy_i+1)^p K(xi,yi)=(xiyi+1)p
  • 径向基函数(BRF)核
    K ( x i , y i ) = e − γ ∣ ∣ x i − y i ∣ ∣ 2 K(x_i,y_i)=e^{-\gamma||x_i-y_i||^2} K(xi,yi)=eγxiyi2

实际上,同一份数据,在越高维的空间就越有可能线性可分。因此要想解决数据原本在低维空间线性不可分的分类问题,就需要将其映射到高维,那么问题似乎转换为了去寻找合适的映射 ϕ \phi ϕ,但实际上先不论这种映射有很多种,单是找到这种映射的难度就远超解决问题本身。其次高维空间计算量巨大,容易造成维度灾难,而同样的,利用核函数在低维空间计算得到同样的结果计算量会更小。我们来举一个经典的例子:
假设 A = ( 1 , 2 ) T A=(1,2)^T A=(1,2)T B = ( 3 , 4 ) T B=(3,4)^T B=(3,4)T,构造一个映射: ϕ ( . ) = ( x 1 2 , 2 x 1 x 2 , x 2 2 ) T \phi(.)=(x_1^2,\sqrt{2}x_1x_2,x_2^2)^T ϕ(.)=(x12,2 x1x2,x22)T,进行计算分析。
高维空间计算
ϕ ( A ) = ( 1 , 2 2 , 4 ) \phi(A)=(1,2\sqrt{2},4) ϕ(A)=(1,22 ,4) ϕ ( B ) = ( 9 , 12 2 , 16 ) T \phi(B)=(9,12\sqrt{2},16)^T ϕ(B)=(9,122 ,16)T,其中 ϕ ( A ) \phi(A) ϕ(A) ϕ ( B ) \phi(B) ϕ(B)分别都进行了4次乘法运算。我们进一步计算 ϕ ( A ) T ϕ ( B ) \phi(A)^T\phi(B) ϕ(A)Tϕ(B):
ϕ ( A ) T ϕ ( B ) = 1 × 9 + 2 2 × 12 2 + 4 × 16 = 9 + 48 + 64 = 121 \phi(A)^T\phi(B)=1\times9+2\sqrt{2}\times12\sqrt{2}+4\times16=9+48+64=121 ϕ(A)Tϕ(B)=1×9+22 ×122 +4×16=9+48+64=121
计算 ϕ ( A ) T ϕ ( B ) \phi(A)^T\phi(B) ϕ(A)Tϕ(B)时进行了3次乘法和2次加法,所以整个计算流程总共进行了11次乘法和2次加法。
原空间计算
通过核函数的定义,得到核函数 k ( x , y ) = ( x T y ) 2 k(x,y)=(x^Ty)^2 k(x,y)=(xTy)2,那么:
k ( A , B ) = ( A T B ) 2 = ( 1 × 3 + 2 × 4 ) 2 = 121 k(A,B)=(A^TB)^2=(1\times3+2\times4)^2=121 k(A,B)=(ATB)2=(1×3+2×4)2=121
整个一共进行了3次乘法和1次加法。

这还仅仅是二维空间映射到三维空间的计算量分析,如果是更高维空间,那么对于计算来说,无疑是灾难性的。

下一节我们对SVM算法进行推导,感谢阅读。

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

  • 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、付费专栏及课程。

余额充值