支持向量机原理(三)线性不可分支持向量机与核函数

支持向量机原理(一) 线性支持向量机html

    支持向量机原理(二) 线性支持向量机的软间隔最大化模型算法

    支持向量机原理(三)线性不可分支持向量机与核函数微信

    支持向量机原理(四)SMO算法原理函数

    支持向量机原理(五)线性支持回归post

    

    在前面两篇咱们讲到了线性可分SVM的硬间隔最大化和软间隔最大化的算法,它们对线性可分的数据有很好的处理,可是对彻底线性不可分的数据没有办法。本文咱们就来探讨SVM如何处理线性不可分的数据,重点讲述核函数在SVM中处理线性不可分数据的做用。优化

1、回顾多项式回归

    在线性回归原理小结中,咱们讲到了如何将多项式回归转化为线性回归。url

    好比一个只有两个特征的p次方多项式回归的模型:
\[ h_\theta(x_1, x_2) = \theta_0 + \theta_{1}x_1 + \theta_{2}x_{2} + \theta_{3}x_1^{2} + \theta_{4}x_2^{2} + \theta_{5}x_{1}x_2 \]spa

    咱们令\(x_0 = 1, x_1 = x_1, x_2 = x_2, x_3 =x_1^{2}, x_4 = x_2^{2}, x_5 =  x_{1}x_2\) ,这样咱们就获得了下式:
\[ h_\theta(x_1, x_2) = \theta_0 + \theta_{1}x_1 + \theta_{2}x_{2} + \theta_{3}x_3 + \theta_{4}x_4 + \theta_{5}x_5 \]htm

    能够发现,咱们又从新回到了线性回归,这是一个五元线性回归,能够用线性回归的方法来完成算法。对于每一个二元样本特征\((x_1,x_2)\),咱们获得一个五元样本特征\((1, x_1, x_2, x_{1}^2, x_{2}^2, x_{1}x_2)\),经过这个改进的五元样本特征,咱们从新把不是线性回归的函数变回线性回归。blog

    也就是说,对于二维的不是线性的数据,咱们将其映射到了五维之后,就变成了线性的数据。

    这给了咱们启发,也就是说对于在低维线性不可分的数据,在映射到了高维之后,就变成线性可分的了。这个思想咱们一样能够运用到SVM的线性不可分数据上。也就是说,对于SVM线性不可分的低维特征数据,咱们能够将其映射到高维,就能线性可分,此时就能够运用前两篇的线性可分SVM的算法思想了。

2、核函数的引入

    上一节咱们讲到线性不可分的低维特征数据,咱们能够将其映射到高维,就能线性可分。如今咱们将它运用到咱们的SVM的算法上。回顾线性可分SVM的优化目标函数:
\[ \underbrace{ min }_{\alpha}  \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_jx_i \bullet x_j - \sum\limits_{i=1}^{m}\alpha_i \]

\[ s.t. \; \sum\limits_{i=1}^{m}\alpha_iy_i = 0 \]

\[ 0 \leq \alpha_i \leq C \]

    注意到上式低维特征仅仅之内积$x_i \bullet x_j \(的形式出现,若是咱们定义一个低维特征空间到高维特征空间的映射\)\phi$(好比上一节2维到5维的映射),将全部特征映射到一个更高的维度,让数据线性可分,咱们就能够继续按前两篇的方法来优化目标函数,求出分离超平面和分类决策函数了。也就是说如今的SVM的优化目标函数变成:
\[ \underbrace{ min }_{\alpha}  \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_j\phi(x_i) \bullet \phi(x_j) - \sum\limits_{i=1}^{m}\alpha_i \]

\[ s.t. \; \sum\limits_{i=1}^{m}\alpha_iy_i = 0 \]

\[ 0 \leq \alpha_i \leq C \]

    能够看到,和线性可分SVM的优化目标函数的区别仅仅是将内积$x_i \bullet x_j \(替换为\)\phi(x_i) \bullet \phi(x_j)$。

    看起来彷佛这样咱们就已经完美解决了线性不可分SVM的问题了,可是事实是否是这样呢?咱们看看,假如是一个2维特征的数据,咱们能够将其映射到5维来作特征的内积,若是原始空间是三维,能够映射到到19维空间,彷佛还能够处理。可是若是咱们的低维特征是100个维度,1000个维度呢?那么咱们要将其映射到超级高的维度来计算特征的内积。这时候映射成的高维维度是爆炸性增加的,这个计算量实在是太大了,并且若是遇到无穷维的状况,就根本无从计算了。

    怎么办?彷佛咱们刚提出了一种好的解决线性不可分的办法,接着就把本身否决了。

    好吧,核函数该隆重出场了!

    假设\(\phi\)是一个从低维的输入空间\(\chi\)(欧式空间的子集或者离散集合)到高维的希尔伯特空间的\(\mathcal{H}\)映射。那么若是存在函数\(K(x,z)\),对于任意\(x, z \in \chi\),都有:
\[ K(x, z) = \phi(x_i) \bullet \phi(x_j) \]

    那么咱们就称\(K(x, z)\)为核函数。

     从上面的式子乍一看仍是不明白核函数怎么帮咱们解决线性不可分的问题的。仔细观察上式能够发现,\(K(x, z)\)的计算是在低维特征空间来计算的,它避免了在刚才咱们提到了在高维维度空间计算内积的恐怖计算量。也就是说,咱们能够好好享受在高维特征空间线性可分的红利,却避免了高维特征空间恐怖的内积计算量。

    至此,咱们总结下线性不可分时核函数的引入过程:

    咱们遇到线性不可分的样例时,经常使用作法是把样例特征映射到高维空间中去(如上一节的多项式回归)可是遇到线性不可分的样例,一概映射到高维空间,那么这个维度大小是会高到使人恐怖的。此时,核函数就体现出它的价值了,核函数的价值在于它虽然也是将特征进行从低维到高维的转换,但核函数好在它在低维上进行计算,而将实质上的分类效果(利用了内积)表如今了高维上,这样避免了直接在高维空间中的复杂计算,真正解决了SVM线性不可分的问题。

3、核函数的介绍

    事实上,核函数的研究很是的早,要比SVM出现早得多,固然,将它引入SVM中是最近二十多年的事情。对于从低维到高维的映射,核函数不止一个。那么什么样的函数才能够当作核函数呢?这是一个有些复杂的数学问题。这里很少介绍。因为通常咱们说的核函数都是正定核函数,这里咱们直说明正定核函数的充分必要条件。一个函数要想成为正定核函数,必须知足他里面任何点的集合造成的Gram矩阵是半正定的。也就是说,对于任意的$x_i \in \chi , i=1,2,3...m $, \(K(x_i,x_j)\)对应的Gram矩阵$K = \bigg[ K(x_i, x_j )\bigg] $ 是半正定矩阵,则\(K(x,z)\)是正定核函数。 

    从上面的定理看,它要求任意的集合都知足Gram矩阵半正定,因此本身去找一个核函数仍是很难的,怎么办呢?还好牛人们已经帮咱们找到了不少的核函数,而经常使用的核函数也仅仅只有那么几个。下面咱们来看看常见的核函数, 选择这几个核函数介绍是由于scikit-learn中默承认选的就是下面几个核函数。

3.1 线性核函数

    线性核函数(Linear Kernel)其实就是咱们前两篇的线性可分SVM,表达式为:
\[ K(x, z) = x \bullet z \]

    也就是说,线性可分SVM咱们能够和线性不可分SVM归为一类,区别仅仅在于线性可分SVM用的是线性核函数。

3.2 多项式核函数

    多项式核函数(Polynomial Kernel)是线性不可分SVM经常使用的核函数之一,表达式为:
\[ K(x, z) = (\gamma x \bullet z  + r)^d \]

    其中,\(\gamma, r, d\)都须要本身调参定义。

3.3 高斯核函数

    高斯核函数(Gaussian Kernel),在SVM中也称为径向基核函数(Radial Basis Function,RBF),它是非线性分类SVM最主流的核函数。libsvm默认的核函数就是它。表达式为:
\[ K(x, z) = exp(-\gamma||x-z||^2) \]

    其中,\(\gamma\)大于0,须要本身调参定义。

3.4 Sigmoid核函数

    Sigmoid核函数(Sigmoid Kernel)也是线性不可分SVM经常使用的核函数之一,表达式为:
\[ K(x, z) = tanh(\gamma x \bullet z  + r) \]

    其中,\(\gamma, r\)都须要本身调参定义。

4、分类SVM的算法小结

    引入了核函数后,咱们的SVM算法才算是比较完整了。如今咱们对分类SVM的算法过程作一个总结。再也不区别是否线性可分。

    输入是m个样本\({(x_1,y_1), (x_2,y_2), ..., (x_m,y_m),}\),其中x为n维特征向量。y为二元输出,值为1,或者-1.

    输出是分离超平面的参数\(w^{*}和b^{*}\)和分类决策函数。

    算法过程以下:

    1)选择适当的核函数\(K(x,z)\)和一个惩罚系数\(C>;0\), 构造约束优化问题
\[ \underbrace{ min }_{\alpha}  \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_jK(x_i,x_j) - \sum\limits_{i=1}^{m}\alpha_i \]

\[ s.t. \; \sum\limits_{i=1}^{m}\alpha_iy_i = 0 \]

\[ 0 \leq \alpha_i \leq C \]

    2)用SMO算法求出上式最小时对应的\(\alpha\)向量的值\(\alpha^{*}\)向量.

    3) 获得\(w^{*} = \sum\limits_{i=1}^{m}\alpha_i^{*}y_i\phi(x_i)\),此处能够不直接显式的计算\(w^{*}\)

    4) 找出全部的S个支持向量,即知足\(0 <; \alpha_s <; C\)对应的样本\((x_s,y_s)\),经过 \(y_s(\sum\limits_{i=1}^{m}\alpha_iy_iK(x_i,x_s)+b) = 1\),计算出每一个支持向量\((x_s, y_s)\)对应的\(b_s^{*}\),计算出这些\(b_s^{*} = y_s - \sum\limits_{i=1}^{m}\alpha_iy_iK(x_i,x_s)\). 全部的\(b_s^{*}\)对应的平均值即为最终的\(b^{*} = \frac{1}{S}\sum\limits_{i=1}^{S}b_s^{*}\)

     这样最终的分类超平面为:$\sum\limits_{i=1}^{m}\alpha_i^{}y_iK(x, x_i)+ b^{} = 0 \(,最终的分类决策函数为:\)f(x) = sign(\sum\limits_{i=1}^{m}\alpha_i^{}y_iK(x, x_i)+ b^{})$

     

    至此,咱们的分类SVM算是总结完毕,惟一的漏网之鱼是SMO算法,这个算法关系到,咱们如何求出优化函数极小化时候的\(\alpha^{*}\),进而求出\(w,b\),咱们将在下一篇讨论这个问题。

 

(欢迎转载,转载请注明出处。欢迎沟通交流: 微信:nickchen121)

相关文章
相关标签/搜索