实例总结
接着对上面的实例进行一些总结,一直在思考一个问题,为什么a2为0,是不是偶发的时间,但是如果再代入几个在和a2在同一条线上的点,得到的类似的ai也是0,所以从这边不难得出一个结论,无论在增加几个点,都不会对决策边界产生变化,前提是,一定不能使得离决策边界近的点发生改变,如果在满足这个前提下,那么加入多少点,都不会使得上文求出的函数发生变化,所以我们从这边就可以体会到,为什么叫作支持向量机,因为是由一个个坐标点,支撑着这个决策边界的,当坐标点发生变化的时候,函数也会发生变化。
w=aixiyi的和(i是有几个坐标),当xi不是支撑向量的时候,ai必定为0,只有边界点的a值不为0。
真正发挥作用的数据点,a值不为0的点
可以看到上图中左图是有60个点,但是右图有120个点,但是在决策方程上,我们可以看到并无差别,是因为左右图中圈出来的部分是支持向量点,这些点之间并无差别。
软间隔
软间隔:有些时候数据中有一些噪音点,如果考虑他们了,线就不太好画得出来了
因此我们之前的完全把两类点完全分开太过严格,引入松弛因子,来适当的解决这个问题
一般的一个loss=dataloss+λR(w)(数据+惩罚力度(λ)*正则化惩罚项(防止过拟合))
那我们这边可以建立出一个新的目标函数:
右边是一个松弛因子,c是一个核心参数,整体目标是让整个式子越小越好:
当c很大的时候,如果前面不变,那么后面的松弛因子要很小很小,才能保证整体式子小,因此也就是分类很严格,严格不能有错误
当c很小的时候,反之亦然可以得到,可以有更大的松弛因子,来容忍更大的错误
因此在加入软间隔后整体的拉格朗日的式子可以如下所示:
约束条件如下:
低维不可分的问题
把二维的点,映射到三维中:
在上面我们可以看到左边图片中的红蓝两簇数据,如果进行分割自然可以,但是会需要构造一个复杂的决策边界,但是很容易过拟合,模型会很复杂,因此对x做出变换,把二维的点映射到三维中去。
其实这一点恰恰就是支持向量机流行的原因,因为做出了核变换。
如何进行低维像高维的转换,可以通过以下一个例子:
还是先从一个小例子来阐述问题。假设我们有俩个数据,x= (x1, x2, x3);y= (y1, y2,y3), 此时在3D空间已经不能对其经行线性划分了,那么我们通过一个函数将数据映射到更高维的空间,比如9维的话,那么f(x) = (x1x1, x1x2, x1x3, x2x1, x2x2, x2x3, x3x1,x3x2, x3x3),由于需要计算内积,所以在新的数据在9维空间,需要计算<f(x),f(y)>的内积,需要花费0 (n^2)。
可以设一个具体点,x=(1,2,3)y=(4,5,6),那么f(x)=(1,2,3,2,4,6,3,6,9)f(y)=(16,20, 24, 20, 25, 36, 24, 30, 36),
此时<f(x), f(y)>=16+ 40+ 72 + 40 + 100+ 18o + 72 + 18o + 324= 1024
似乎还能计算,但是如果将维数扩大到一个非常大数时候,计算起来可就不是一丁点问题了。
但是发现,K(x,y)=(<x, y>)^2
K(x,y)=(4 + 10+ 18)^2= 32^2= 1024
其实就是在低维的时候,先求出内积,把结果映射到高维中。这个就是核函数的一个作用
但是f(x)不是随便写的,核函数常用的如下:
左边是线性核函数右边是高斯核函数,线性的是横平竖直的线,切不开两簇,但是按照高斯核函数的思想,把这个映射到高维中去,比如说黄色映射到上面,红色映射到下面,然后中间切开,形成决策边界
总结
念念不完 必有回想