支持向量机SVM

SVM-核函数(Kernels)

非线性决策边界

​ 对于下图中的数据集分类,我们一般会想到构造多项式特征变量:2.jpg

![1.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhf0qwvqx6j20c507qgo2.jpg) ![3.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhf0qy5pm9j20bp07i0vi.jpg)
我们也可以写为:$\theta_0+\theta_1f_1+\theta_2f_2+...$,$f_1=x_1,f_2=x_2,...$,通过之前的知识可以看到加入这些多项式提供了更多的特征向量,然而有没有比这些高阶项更好的特征向量(因为这些高阶项的计算量是非常大的)。

​ 现在我们在仅有x1和x2组成的特征轴上选取三个点-landmarks(忽略x0):\(l^{(1)},l^{(2)},l^{(3)}\)。接下来按照以下方式定义新的特征变量:

给定x:f1= similarity\((x,l^{(1)})\)=exp(\(-\frac{\left \|x-l^{(1)} \right \|^2}{2\delta^2}\))

f2= similarity\((x,l^{(2)})\)=exp(\(-\frac{\left \|x-l^{(2)} \right \|^2}{2\delta^2}\))

f3= similarity\((x,l^{(3)})\)=exp(\(-\frac{\left \|x-l^{()3} \right \|^2}{2\delta^2}\))

​ 这里的相似度函数similarity为核函数(Gaussian kernels)

![4.jpg](http://wx2.sinaimg.cn/mw690/7b8d2108gy1fhf0qykhafj20o701z3za.jpg)
f1表示的意义:假设x很接近于$l^{(1)}$,我们有:
![5,jpg](http://wx2.sinaimg.cn/mw690/7b8d2108gy1fhf0qz43z5j20bg01q0t1.jpg)
相反地,如果x很相距于$l^{(1)}$较远,我们有:
![6.jpg](http://wx4.sinaimg.cn/mw690/7b8d2108gy1fhf0qzjzg5j20g102lmxs.jpg)
​ 为了更加直观的体现这种新的特征向量选取的特点,我们假设有两个特征x1和x2,假设第一个标记点$l^{(1)}$,其他假设如下:
![7.jpg](http://wx1.sinaimg.cn/mw690/7b8d2108gy1fhf0qzuj5tj20dk02bweo.jpg)
尝试改变$\delta$的取值,我们从下图可以看到随与标记点距离的远近不同,取值是有很大差异的(远处时已经几近于零了)。
![8.1jpg](http://wx2.sinaimg.cn/mw690/7b8d2108gy1fhf0r0av4yj206c07uaar.jpg) ![8.2jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhf0r0oxmzj205s08pwew.jpg) ![8.3jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhf0r100wtj205a094mxu.jpg)

​ 现在对于给定初识条件:9.jpg

对于有一个训练样本x为图中红点处,模型设计算出参数值\(\theta_0=-0.5,\theta_1=1,\theta_2=1,\theta_3=0\),现在样本距离标点1处很近,而与标点2、3的距离较远,所以f1=1,f2=0,f3=0(实为近似,即约为)。

![10.jpg](http://wx1.sinaimg.cn/mw690/7b8d2108gy1fhf0r1up1tj20a406gdg9.jpg)
​ 此时根据预测函数:=-0.5+1+0+0=0.5>0 即判别为”1“,同样对应于图中的蓝点出,相距标点1、2、3都较远,因此有:=-0.5+0+0+0=-0.5<0即判别为“0”。

核函数-Kernels

​ 上一小节中介绍了在非线性决策边界中,不使用原本的多项式特征量,而使用高斯核函数构成特征向量,但如何选择相应的标记点(landmarks),及是否有其他的核函数并未做说明。

​ 对于给定的m个样本\((x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)})\),选择标记点的选择为:

![1.jpg](http://wx1.sinaimg.cn/mw690/7b8d2108gy1fhf5nebk5ij20b900ya9x.jpg)
对于任意样本x:

\(f_1=similarity(x,l^{(1)})\) \(f_2=similarity(x,l^{(2)})\) ....

特征向量为:2.jpg,其中\(f_0=1\)

总结一下,对于任意样本(x(i),y(i))有:3.jpg

​ 对于参数theta的训练,按照以下公式(建议利用其他数值分析方面的高手提供的包来处理)

![4.jpg](http://wx2.sinaimg.cn/mw690/7b8d2108gy1fhf5nffvi3j20nh02tdgj.jpg)

SVM-支持向量机的参数问题

  1. C(=1/lambda)

    C值较大时:高方差,低偏差 C值较小下:高偏差,低方差

  2. \(\delta^2\)如下图

    \(\delta^2\)较大时:特征很松散,高偏差,低方差

    \(\delta^2\)较小下:特征很紧凑,低偏差,高方差

![5.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhf5ng90r3j206507oaa1.jpg)

使用SVM

​ 一般使用SVM软件处理包(如:liblinear,libsvm,....)以解决参数theta的优化问题。

但之前需要明确:参数C的选择,核函数(相似度函数)的选择问题。

敝如:无核函数(“linear kernel”) -->当\(\theta^Tx \ge 0\),预测“y=1”

高斯核函数:6.jpg,需要注意参数\(\delta^2\)的选择。

![7.jpg](http://wx2.sinaimg.cn/mw690/7b8d2108gy1fhf5ngvctrj20cz05ht96.jpg)
*注意:在使用高斯核函数之前,特征缩放是十分必要的!!*

​ 核函数的确定并不困难,满足Mercer定理的函数都可以作为核函数。常用的核函数有:线性核函数,多项式核函数Polynomial'kernel ,径向基核函数,Sigmoid核函数和复合核函数,傅立叶级数核,B 样条核函数和张量积核函数等。

多类分类问题,如下图所示:

![8.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhf5nhdgivj206n05j74a.jpg)
许多SVM包已经有很多内置的分类函数,但对多类问题也可用one-Vs-all方式。

逻辑回归vs神经网络vsSVMs

​ n=特征数目,m=训练样本数目

  • 如果n的数目远远大于m:

    使用逻辑回归或不含核(线性核)的SVM

  • 如果n很小,m取值介于中间(m=10-10000)

    使用带有高斯核的SVM

  • 若n很小,m值很大(m=50000+)

    创建/增加更多的特征,然后使用逻辑回归或不含核函数的SVM

  • 神经网络对于上述较多的情形,但训练量很大,训练很慢

posted @ 2017-07-10 22:28  SrtFrmGNU  阅读(286)  评论(0编辑  收藏  举报