CS229 SVM 推导和使用心得

这两天要用到SVR的几何解释,特地又翻了CS229 lecture3的笔记。特此记录一下我理解的思路。

  • 从logistic regression引入,说明我们应该更关注于离separating hyperplane近的点,进而引入了margin的概念。

 

  • 我们想让margin尽量的大,但最直接的functional margin可以通过缩放ω和b来任意控制。这里我们当然可以固定ω 2-norm=1,但暂时先不这样做。
  • 为此,我们引入了geometric margin。functional magrin就是直接的 ωT*x+b,geometric margin就不那么直接,大概有以下几点:
  1. 向量OA-向量BA=向量OB
  2. 向量OA=point A,向量BA=geometric_margin*ω的法向量。而ω的法向量=ω/ω 2-norm
  3. 1,2得到point B,又因为B在separating hyperplane上,所以 将point B带入ωT*x+b=0
  4. 将3带入的式子略加转换,就得到一个关于geometric margin的等式。
  5. 进一步还以发现,geometric margin = functional margin/ ω 2-norm

  • 下一步就是maximize minimum geometric margin,但由于约束条件2是非凸的。所以,将优化目标由maximize minimum geometric margin改变为maximize minimum functional margin/ω 2-norm。这里需要注意一点,第一个约束项的右式从geometric margin变成了functional margin,其原因在于约束项本来就该是functional margin,只是当ω 2-norm是1的时候,functional margin与geometric margin相等且优化目标是geometric margin,才在约束项中使用的geometric margin。所以当ω 2-norm不为1时,换回来才是对的。

 

  • 现在约束2被去掉了,但优化目标又成了非凸的。为此,我们直接指定优化目标中的functional margin=1。之前我们不固定ω 2-norm=1就是为了这里让functional margin=1
  • 同时呢,functional margin=1后,也可以把取1/ω 2-norm的最小倒一下,得到:

 

  • lagrange duality
  • 先说说lagrange:将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题

  • 然后是dual problem:这里的max是对α和β而言,min则是对ω而言。所谓dual,就是将求解ω和α,β的先后次序对换。一个预设的结论是max min<=min max。另外补充一点是,所谓maximize就是求α和β偏导带入式子。

  • KTT条件就是对约束项,对lagrange multipliers,对ω的相等或不等条件。

 

  • 将lagrange duality应用在SVM上。先构造lagrange,然后求对偶问题。先求minimize即ω,b的偏导=0,再求maximum即α的偏导=0,即可分别求得ω和b关于α的的等式,以及α的值。
  • αi只有当对应point为support vector时不为0,原因在解释lagrange duality已经说了。
  • 将α带入ω关于α的等式来求得ω,再根据下式计算出b。

将wTx+b转化为内积的表示。这种内积形式的计算量并不大,因为前面说了,只有support vector对应的α不为0.

 

  • feature mapping & kernel:

使用featuring mapping代替original feature来训练和预测SVM模型(最后加上的备注:当然这里的训练同样不是直接使用Φ(x)来计算,而是像上图这样,将<xi,x>替换成kernel<xi,x>)。但这样的计算复杂度太高了,先是算出Φ(x)和Φ(z),再计算 Φ(x)T* Φ(z)。为了简化计算,我们引入了kernel。对于下面这中构造的kernel

,对应的Φ(x)如下

证明如下:

为了便于理解,我还手算了n=2的情况,可以看到,使用kernel和直接用Φ(x)的结果是一样的,而计算量急剧减少:

可以看到,实际上kernel并不局限在SVM上,但凡这个算法会用到<x,z>这样的内积形式,都可以使用Kernel<x,z>替代。

但这里我有点疑惑,kernel为什么会有效。从feature mapping的角度,确实维度比以前大非常多,但是从kernel的角度来看,不过是把内积的结果平方而已,区区一个平方又有什么用呢?唯一能说服我一点的解释是,从feature mapping来看,映射到高维的内积,类似于计算两者的input feature的余弦相似度;而在kernel的角度看,内积的结果在平方后差异会变得更显著。这种将扩大内积差异的效果是,内积结果大的重要性被提升,而内积小的重要性下降。也就是说,不但在整个训练集中只有support vector对预测有效,对不同的预测值来说,support vector的重要性也变得不同,这样也是可以理解的,离预测点相近的support vector和预测点内积也大,同时参考的意义也大,kernel就放大了这种效果。此外如RBF无不如此,都会扩大内积的差异。至于所谓低维不可分映射至高维就可分了,从kernel的角度看,我无法说服自己,平方一下就从低维变成高维了?

 

  • 不可分情况

我们可以看到,SV对separating hyperplane的影响非常大。所以SVM对噪声的容忍度是非常小,为此,我们添加了松弛系数,允许部分点在margin之内,但同时呢,要在优化目标需要加上正则项。公式就变成了这样

 

  • Coordinate ascent & SMO

所谓Coordinate ascent如下图,就是固定所有其它α,只优化αi。

但是呢,在SVM中,由于KTT条件的,所以固定αi外所有参数,那么αi也固定了。所以,在SVM要略微修改Coordinate ascent,同时改变两个参数αi和αj。如何挑选两个参数需要用到启发式算法,来获得全局的最大提升。其余不变。

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值