支持向量机的简单介绍

首先说,这是我写的最烂的,因为我自己有一些也没有弄明白,强烈建议别看,强烈不建议看哦。。(我不暂时不想花太多时间去 搞它,因为我用不着它,如果用到它的时候到好好看看吧,我了解一下原理,一些细节 吧我有一些想不明白)

下面这是我的简单介绍与理解,或者理解的不够深。

这玩意的作用就是用于解决问题的吧,一切算法都要向解决的问题去靠,如果单純停留在数学分析上,很迷迷糊糊的哦。。所以,我们站在一定高度上去看这个支持向量机哈

 

它干什么的?

支持向量机它本质上还是解决二分类问题的啦,如果你想要解决多分类问题,好啊 ,最简单的办法就是:你多分几次就可以了啊,对吧。为什么叫支持向量机呢,外国人起的名字哎,不过后面会出现支持向量哦,也算是和名字相互对应吧。

支持向量机要干的事就是找到一个 分界面, 放到两个类别之间,就把它们分开了,如二维上,是一条直线,三维上就一个平面,四维上就是一个三维的东西了。如果在低维不可分时,就先通过核函数把低维数据映射到高维,高维上变成线性可分的以后,然后呢,在高维上再用支持向量机进行分就可以了。。。   反正吧,支持向量机就是解决线性可分的问题的啦。(解决线性不可分的问题,那是核函数的功劳,反正我认为是这样的)

 

下面我们要解决一个优化问题:

现在呢,我们要解决一个问题,如果所图1所示 哈,我们现在现在把这两类分开,看上去很简单似的, 我们就要画一条线就可以了哈,但是呢,仔细想想,这条线应该如何画呢?用人脑子一想就能想明白按图2画,怎么如何要用程序把它弄出来呢???这就是优化理论的问题了吧,现在呢,就要把实际问题转化为数学描述了。

image

怎么办??下面具体到数学上描述描述。

对于上面的两种类别,我们分为两类,一类用 1 表示,一类用 -1 表示。采用logistic的回归方式,我们用公式表示为:

image,其中 函数g(x) 是这样的:当 x >=0时, g(x) =1;当 x <0时, g(x) =-1,即相当于一个感知器;

按如上定义,我们要画的那条线就是表示为 wTx + b = 0 的那条线了;当wTx + b>>0时,或wTx + b<< 0说明正的样本点离的分界线的距离就越远哈。现在,即然如此,我们可以定义一个间隔,来衡量这个距离,即函数间隔:

image

它表示了什么意思呢?首先上式为正时,说明正确分类了,为负时,说明错误分类了;其次,其绝对值越大,说明它对自己的分类结果越自信(因为离着分界线越远嘛)

 

但是这样有一个问题哎,当我们按比例放大w 与 b 时,我们会发现, wTx + b 会同样变大 ,但是呢,对于分界面没有什么变化啊(因为分界面就是 wTx + b = 0 啊,比如在二维上分界面就是平面 y = wTx + b 与 xOy平面的交界面哦)。这样的话,我们就应该约束一下w 与 b,让它们在计算间隔时,还 w和b 成比例的变化无关。我们可以这样做:wTx + b /|w|,可以这么做,wTx + b /|b|, 也可以这么做:wTx + b /(w^2 + b^2)都可以哦,只要除以一个与w或b有关的数就好啦,这样可以约去那个比例吧。下面我们选择其中一个,定义几何间隔为:

image

(我的困惑是:w 与 b 有什么关系没,还是B 不需要要去优化??随着w 下来, b 就可以 定下来????例如对于二维的数据上,w  决定了 分界线的斜率,而 b  只决定了 分界线上下平移的距离,如果选择的话,一定选择 处在界隔中间的那条线时的b .)

这样可以了,它不会乱变化了。同样的,上式为正时,说明正确分类了,为负时,说明错误分类了;其次,其绝对值越大,说明它对自己的分类结果越自信(因为离着分界线越远嘛)

现在想想怎么画那条线哈:是不是要求画出来的那条线的几何间隔大大的呢, 这个优化问题可以描述为写面的公式:

image

现在用大家比较小统一的方式,可以写成这样子:

image

虽然常数换成了1,解出来的 w 与 b 也一样,但是呢,对于不同的常数,解的答案w 与 b 是成比例的哦,并且几何间隔是不变的。

本来吧, 最开始的画线的问题,我们可以用上面的最优化问题描述就可以了哈,并且解出结果也不难的。(这是一个二次的凸优化问题,并且约束条件为线性)。

但是呢,有些人吧,非要用对偶的知识来解决这个问题,所以呢,就出来了支持向量机了。(我就想不明白那些人为什么就要去这么解决问题呢?他们是瞎试的吗?还是有其它原因?总之用了支持向量机以后,就可以用核函数了,用了核函数,就可以把低维问题弄到高维了。或许,他们发现了,当我们选择如何画那条线的时候,只与边界边缘上的那几个点有关吧。)

 

 

下面说简单说一下拉格朗日的对偶知识:

学高等数学或着最优化时,都学过的哈,拉格朗日算子:

现在考虑一个原始的优化问题:

image

我们可以根据上面的公式,定义一个拉格朗日天算子,它们不等价哦。如下所示:

image

又定义如下:

image

现在,我们想想哈,当 w 满足上面的约束问题时,上式就等于f(w),不满足时,等于无穷大。即:

image

在w 满足约束条件时,为了求出  min f(w),即求:

image

是吧。。想明白了再往下面看哈:

现在我们又定义一个对偶的东西:

image

image

现在呢,我们能得出这样的结论(d 代表dual, p 代表了primal):

image

这么想,有一个函数为L(w, α, β),那么它的最大值(对于变量α, β来说)中的最小值(对于变量w来说)是不是总会大于最小值(对于变量w来说) 中的最大值(对于变量α, β来说)呢?另外,我举了一个二维离散的例子,如果还是不明白可以看看哦:

image

如果我们要用对偶问题,来解决原来的优化问题min f(w),我们就要让上面的公式的等号成立,这样才可以嘛。对吧。在什么时候才能成立呢?

KKT条件给出了成立的必要条件,只要满足KKT条件,那么等号就成立了:

image

好了,现在,我们的对偶知识就讲完 了,现在用它来继续解决我们上面的优化问题。

 

说一下支持向量:

image

如果所示,上面只有三个点与求解的优化问题有关,它们就叫做支持向量。

 

用对偶知识来解决最开始的优化问题:

我们的原问题为:

image

把约束条件写成 gi(w)的形式,变为了:

image

写出它拉格朗日算子形式为(αi >= 0的):

image 

上面说对偶的原因就是我们用对偶的方式去解决这个问题:(下面解决的对偶的问题)

对于上式,我们首先让 α 固定不变,然后求出对于变量w 和b 最小的L(w, b, α),即 θD,做法就是对w与 b求导数,让导数为0.

对于W求导,得到:

image

对于b 求导得到:(这里, 我有点想不明白,为什么让它为0呢,是为了满足KKT条件吗?)

image

 

把上面两个式子代入到上面倒数(从这里今不倒数)第三个式子中,得到:

image

最终对偶的优化问题,变为了:

image

在得到它的过程中,我们通过上面过程知道,它满足KKT的条件(对于第KKT条件中的公式 5怎么满足的呢?是我们人为规定的吗???如果人为规定,这就是支持向量不谋而合了吧了),所以,我们来解决上面的对偶优化问题,就等价于解决原来的优化问题啦。对于如何求αi ,后面我们会介绍SMO算法来求它。当我们得到了 αi ,我们就可以求出了w 与b .

image

image

(对于上面的 b 的问题,我一直有迷惑,尼妈,对于上面的令b 的导数为0我就有点不明白,现在这个b 的求法,用脑子想想很明确但是在数学优化上,我不是很明白啊,哪里决了这样呢?)

现在我们来分类了,分类的话,就这么算就可以了,下面是公式:(其中的很多 αi  都 不0,只有支持向量不是0,因为要满足KKT条件吧)

image

 

 

 

简单说一下核函数的思想哈:

大家都么这么 说:低维线性不可分时,我们把数据映射到高维空间,就会变为线性可分的,我就想,这尼妈谁说的啊??怎么证明啊????????亲。。。

反正吧,核函数就是干了低维到高维的事了,具体如果说的话,我们看观察点东西哈,当我们解决上面的对偶问题时,我们的优化问题为可以描述为(上面有):

image

解决它以后呢,我们用于分类新数据时,我们的操作为:

image

注意到上面两个公式中都有变量的内积。即:imageimage

现在呢,我们用一种映射(别管用了什么映射)把原数据 x 映射为了 f(x),并且吧,f(X)具有比x更高的维度,现在的问题就变为了从更高的维度的进行分类了吧。                 它的优化问题的描述与用于分类时操作与上面的在数据原始维度上 除了变量间的内积不同,即由<xi, xj> 变为了<f(xi), f(xj)> ,其余完全相同。而核函数变做了一个这么工作:由 xi,与xj, 得到<f(xi), f(xj)> ,可以表示为:K(x, z) = <f(xi), f(xj)> 。对于什么映射吧,,我们不用了解(一开始我也纠结,后来想明白了),有时候我们也根本求不出来,我们只用映射完以后的内积就可以了。

常见的核函数有好几种,并且你自己也可以勾建一个核函数,还有,Mercer定理可以用于检测你自己构建的核函数是否成立。

对于核函数举个例子:如,x =(x1, x2, x3), z = (z1, z2, z3)吧,现在有一个潜在的映射,我们用一个这样的形式的核函数K(x,z) = (xTz +c)2求它们的内积:

它等于什么呢?

例如:K(x,x)=image

还有,高斯核,从有限维度映射到无限维上了。

 

Regularization andthe ono-separable case

在支持向量机的下面情情况怎么办?

image

在第个图上,我们应该选择虚线还是实线呢?应该是虚线吧。现在,我们就把问题描述为这个样子:

image

而它的对偶问题,我们可以写成(不写过程了):

image

 

 

下面说说利用SMO算法来求 SVM的问题:

我们先讲一下坐标下降法(或坐标上升法,求最大值)。当我们要最大化W时:

image

我们可以这么做,让除了αi 之外的所有参数都不变,求使得W最大值的 αi :

image

上面的操作,如果是二维的话,我们可以用下图表示一下:

image

在想用上面的坐标下降法求SVM问题时,有一个不一样的地方:

image

如上所示,问题中的  αi 最约束了(公式19),对吧。我们不能只让其中一个 αi不变啊。所以我们的办法为同时变化两个值就可以了。方法为:

image

例如 ,当我们更新α1 与 α2时,

image

image

因为 α1 与 α2本身的限制,我们把它们画图上,可以表示为:

image

好啦, α1 与 α2的选择就是那个方框里面的实线上选啦。

由上面的式子,我们得到:

image

然后呢,代入得到:

image

现在,我们就可以优化 α2啦。(注意,α2的范围哦,在 L —— H之间)。

这样,解决对偶的优化问题了,这就是SMO算法。。

posted @ 2016-12-08 09:43  殷大侠  阅读(10778)  评论(1编辑  收藏  举报