初识支持向量机

支持向量机(Support Vector Machine)

​ 支持向量机(SVM)为监督式机器学习方法的一种,广泛地应用于统计分类、回归分析、二类问题(binary classification)的模式识别中,其最大特点是既能够最小化经验损失(也叫做经验风险、或者经验误差),同时又能够最大化几何间距(分类器的置信度),因此SVM又被称为最大边缘区(间距)的分类器。

​ 机的意思就是算法,机器学习领域里面常常用“机”这个字表示算法。支持向量意思就是数据集种的某些点,位置比较特殊,我们找这条直线的时候,一般就看聚集在一起的两类数据,它们各自的最边缘位置的点,也就是最靠近划分直线的那几个点,而其他点对这条直线的最终位置的确定起不了作用,故称这些点为“支持点”(即有用的点),但是在数学上,没这种说法,数学里的点,又可以叫向量,比如二维点(x,y)就是二维向量,三维度的就是三维向量(x,y,z)。所以“支持点”改叫“支持向量”。

目标优化

​ 我们从逻辑回归来引入SVM,假设函数为:\(h_\theta(x)=\frac {1}{1+e^{-\theta^Tx}}\)

如果y=1,我们希望假设函数计算值\(h_\theta(x)\approx 1\),从下图可以看出\(\theta^Tx\)需要远大于0,

同样y=0,我们希望假设函数计算值\(h_\theta(x)\approx 0\),从下图可以看出\(\theta^Tx\)需要远小于0。

![1.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhcvovssz8j209w06t0ss.jpg)
代价函数为:$-(ylogh_\theta(x)+(1-y)log(1-h_\theta(x)))$=$-ylog\frac{1}{1+e^{-\theta^Tx}}-(1-y)log(1-\frac{1}{1+e^{-\theta^Tx}})$
![2.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhcvow5iguj207f067q30.jpg) ![3.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhcvow9y7mj207o06b0ss.jpg)
图中的蓝色折线(先不用考虑斜线的斜率)在不同y取值下表示cost\_1,cost\_0。

逻辑回归代价函数:

![4.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhcvownamej20jx01tq2z.jpg)
同时删除两侧的$\frac{1}{m}$,对于优化参数theta效果不发生任何变化,同时将参数lambda删除,以$C=\frac{1}{\lambda}$补充有:![5.jpg](http://wx2.sinaimg.cn/mw690/7b8d2108gy1fhcvox5uqqj20hp01yjrd.jpg)

大间距分类器的直观表现

​ 前面曾提到SVM又称为大间距分类器(Large Margin),下式为支持向量机的代价函数,分别画出对z的代价函数cost1(z)、cost0(z)(如上图蓝色折线)。

![5.jpg](http://wx2.sinaimg.cn/mw690/7b8d2108gy1fhcvox5uqqj20hp01yjrd.jpg)

6.jpg 7.jpg

若y=1,欲代价函数最小,则从图中有$z=\theta^Tx$需要大于等于1,y=0则需要小于等于-1。*(注意这里不再是之前逻辑递归中仅大于等于0或小于等于0)*现在将代价函数中的常数值C设置为非常大的数如:100,000,这时最小化SVM的代价函数时应该尽量使前一项中的计算结果为零,此时就应该让$z=\theta^Tx$需要大于等于1,或小于等于-1。

​ 下面通过一个线性可分的案例加以说明SVM的决策边界:

![8.jpg](http://wx2.sinaimg.cn/mw690/7b8d2108gy1fhcvoyunm3j20be08g76r.jpg)
​ 异常点(outliers)在大间距分类器的影响:
![9.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhcvoz9yqzj20fa07bmxl.jpg)
**大间距分类器背后的数学原理**

​ 首先,两个向量的内积(Inner Product),设向量为:10.jpg向量u的模(范数)表示为:\(\left \| u \right \|=length\ of\ vetor = \sqrt{u_1^2+u_2^2}\)\(u^Tv=p*\left \| u \right \|\),其中p表示v在u上的投影长度(其值可以为负数)。

SVM的决策边界

​ 在SVM的代价函数中常数C为很大的情况下(如:C=100,000),最小化代价函数为\(min_\theta\frac{1}{2}\sum_{j=1}^{n}\theta_j^2\),s.t.(约束条件-subject to)为:11.jpg

根据上面对于向量长度的定义,1.jpg

方便起见,我们设\(\theta_0=0\)(反应为在坐标轴上的截距),参数\(\theta = [\theta_1\ \theta_2]\),则约束条件中德\(\theta^Tx\)可以表示为:2.jpg。其中\(p^{(i)}\)为x(i)在参数theta上的投影长度,如下图所示:

![3.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhdixe2cngj208i05n3yj.jpg)
​ 现在我们再来看看SVM的决策边界问题,数据样本如图所示![4.jpg](http://wx1.sinaimg.cn/mw690/7b8d2108gy1fhdixe9hdcj209105dwem.jpg)

​ 绿色直线可能是两侧数据的分界线,但因为间距margin太小了,最小化SVM代价函数时是不会选择它的,具体原因如下,蓝色的参数theta线与分界线成90度关系,是绿色决策界的参数theta向量。如前所述,为简化方便theta_0的值设为零,则两条线都过零点。

![5.jpg](http://wx4.sinaimg.cn/mw690/7b8d2108gy1fhdixewuflj2095057dge.jpg)
​ 现在任意选取两个点$x^{(1)}$,$x^{(2)}$,做其在参数theta上的投影,长度分别用红色与粉色标明,$p^{(1)}$,$p^{( 2)}$表示,从中能看出投影的长度p很小,而前述的约束条件s.t.中应该$z=\theta^Tx$需要大于等于1,y=0则需要小于等于-1,因此theta的范数就会很大很大,这与最小话代价函数$min_\theta\frac{1}{2}\sum_{j=1}^{n}\theta_j^2$相悖。
![6.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhdixf5qraj209105jgmq.jpg) ![7.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhdixfm42xj20cd06kac8.jpg)
​ 相反,选取下图中的决策线将会使theta变小。
![8.jpg](http://wx1.sinaimg.cn/mw690/7b8d2108gy1fhdixgbyspj20b9070wgc.jpg)
posted @ 2017-07-09 12:38  SrtFrmGNU  阅读(606)  评论(0编辑  收藏  举报