RECAP:
在hard-SVM里介绍,SVM的目标是:
DUAL-SVM的初衷:
这里介绍的是Hard-SVM,hard的意思就是线性可分,linear。但是并不是所有的资料都是线性可分,因此这里需要进行维度转换。将X换成,转换到多维空间去。
一方面,使用SVM,采取了margin的方法,只有在边界上的点才是SV Candidate,才可以Shatter。这种方法降低了复杂度,dvc=d+1;而另一方面,进行多维的装换,则是增加函数的复杂度和d的维度。因此,是否有一种方法,可以让转换和复杂度无关!
构造拉格朗日函数
原有:
转换1:max->min;转换2:x->z
转换为:
引入拉格朗日因子:
把条件加上。。把条件藏在函数中。固定w,b,那么是变量。需要找到一个最大的,使得L最小。
如果这些Z的点落在边界margin之内,那么
L则无最大值
只有那些Z的点落在margin上或者margin外的点,才能使
L存在最大值。最大值就是当 ,
可以发现条件有已经藏在了公式当中。
对偶问题
原有问题:
那么当任意一个来讲,maxany
选择一个,那么不同的样本集,选择最好的,也只能使得,选择=
这里发现,Min和max发生了对调。把min和max发生对调的行为,叫做对偶。实践证明,当满足一下条件时,使得,变成=。强对偶关系。
这时,公式就简化成为:
对b和w分别求偏导,并带入原有SVM中,可以发现,对于b和w都已经消除,因此现在只需要求解
原有max的问题,转化为min问题:
变化:从dvc=d+1个变量,转化成为N个变量,与维度无关;限制条件,从N变成N+1。几乎无变化
维度虽然从表面上消失了,但是却被藏在。
KKT条件
这里的KKT条件,就是之前提到过的强对偶关系的条件:
1. 首先保证:yn(1-(wz+b)
2. 引入拉格朗日函数:
3. 对偶的条件,求偏导:
4. 互补松弛性条件(complementary slackness):
由于,那么只能有:
而改上式=0的条件,就是这些点在margin的边界上。
变化:之前在hard-SVM的时候,讲落在margin边界上的点,使得,这些点是SV candidates。那么在dual-SVM的时候,讲当时,在的点,落在margin的边界上。这些点才是SV.
那么:当求得最佳解时,
可以得到W:
可以得到b:(由于),在margin的边界上找一个点即可算出b
因此对偶问题,只完成了将简化hard-SVM的第一步。将b,w的依存消失,只与以及有关。那么由于是维度变换后到更高空间维度,需要将z一步步展开么?NO。这里用到Kernel。
Kernel-SVM
在对偶问题中,进步的地方在于,由3个维度的变化,w,b,,从以dvc=d+1以高维度转换,变化成为只求一个,并且将维度的问题从明处藏在了中。
的难度在于高维度转换+高维度转换后再做乘积。
简化
对于2维的Z空间
可以看到,最后也只有d+1的维度,和转换到高维无关。
将Kernel命名:
将一组在margin边界上的SV点带入,利用之前偏导的结果:
可以求得b:
至此,如果样本点在原有维度无法线性可分,那么可以进行高维转换。Kernel的结果与高维无关,只有dvc=d+1。至此,原有的疑点以及解决:
一方面,使用SVM,采取了margin的方法,只有在边界上的点才是SV Candidate,才可以Shatter。这种方法降低了复杂度,dvc=d+1;而另一方面,进行多维的装换,则是增加函数的复杂度和d的维度--Kernel只与原有维度的dvc=d+1有关。
普通多项式的2维转换:
对选择不同的数值,就意味着Kernel不一样。Kernel不一样,就意味着w,b不一样。w,b不一样,就意味着不一样,margin也不一样。margin不一样,就意味着SV也不一样。
因此不同的kernel=>不同的margin definition
在推广一下:对常数项和x进行放缩,那么
在推广一下:在Q维进行维度变换,那么
在1维空间的话,
高斯Kernel
在上面poly-Kernel可以看到,的乘积,并不用全部展开,并且也不用在Z空间计算dvc。非常简化。这时,是否可以想象,如果Z空间的多项式是无限多的时候,是否也可以是一个简单的X空间dvc呢?
当Z空间是无限多维时,Kernel仍然是一个多项式。这就是高斯kernel
高斯Kernel是一个正态分布函数:
xn是某一个SV,是高度。因此当越大时,峰值越高。容易出现overfitting。因此在高斯kernel中对也要谨慎选择
小结:
二项式-Kernel:
优点:可以进行高维转换,进而高阶线性可分。高阶也只和X维度有关。
缺点:当时,K趋近无穷大
当时,K趋近于0
有3个参数可以调整
因此,当进行选择时,尽量选择比较小的Q
高斯Kernel
优点:可以进行无限多维的转换,比较power。只有一个参数可以调整
缺点:不太好解释,没有W。容易overfitting