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

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

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

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

    支持向量机原理(四)SMO算法原理(待填坑)

    支持向量机原理(五)线性支持回归(待填坑)

    

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

1. 回顾多项式回归

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

    比如一个只有两个特征的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$$

    我们令\(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$$

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

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

    这给了我们启发,也就是说对于在低维线性不可分的数据,在映射到了高维以后,就变成线性可分的了。这个思想我们同样可以运用到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_ix_i$

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

    这样最终的分类超平面为:$w^{*} \bullet x + b^{*} = 0 $,最终的分类决策函数为:$f(x) = sign(w^{*} \bullet x + b^{*})$

    

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

(欢迎转载,转载请注明出处。欢迎沟通交流: [email protected])

    

时间: 2024-10-28 14:39:06

支持向量机原理(三)线性不可分支持向量机与核函数的相关文章

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

支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五)线性支持回归 在前四篇里面我们讲到了SVM的线性分类和非线性分类,以及在分类时用到的算法.这些都关注与SVM的分类问题.实际上SVM也可以用于回归模型,本篇就对如何将SVM用于回归模型做一个总结.重点关注SVM分类和SVM回归的相同点与不同点. 1. SVM回归模型的损失函数度量 回顾下我们前面SV

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

? ? ? ? ? ?支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五)线性支持回归 在支持向量机原理(一) 线性支持向量机中,我们对线性可分SVM的模型和损失函数优化做了总结.最后我们提到了有时候不能线性可分的原因是线性数据集里面多了少量的异常点,由于这些异常点导致了数据集不能线性可分,本篇就对线性支持向量机如何处理这些异常点的原理方法做一个总结

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

? ? ? ? ? ?支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五)线性支持回归 支持向量机(Support Vecor Machine,以下简称SVM)虽然诞生只有短短的二十多年,但是自一诞生便由于它良好的分类性能席卷了机器学习领域,并牢牢压制了神经网络领域好多年.如果不考虑集成学习的算法,不考虑特定的训练数据集,在分类算法中的表现SVM说是

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

支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五)线性支持回归(待填坑) 在SVM的前三篇里,我们优化的目标函数最终都是一个关于\alpha向量的函数.而怎么极小化这个函数,求出对应的\alpha向量,进而求出分离超平面我们没有讲.本篇就对优化这个关于\alpha向量的函数的SMO算法做一个总结. 1. 回顾SVM优化目标函数 我们首先回顾下我们的

SVM(三),支持向量机,线性不可分和核函数

3.1 线性不可以分 我们之前讨论的情况都是建立在样例线性可分的假设上,当样例线性不可分时,我们可以尝试使用核函数来将特征映射到高维,这样很可能就可分了.然而,映射后我们也不能100%保证可分.那怎么办呢,我们需要将模型进行调整,以保证在不可分的情况下,也能够尽可能地找出分隔超平面. 看下面两张图: 可以看到一个离群点(可能是噪声)可以造成超平面的移动,间隔缩小,可见以前的模型对噪声非常敏感.再有甚者,如果离群点在另外一个类中,那么这时候就是线性不可分了. 这时候我们应该允许一些点游离并在在模型

【机器学习基础】线性可分支持向量机

引言 接下里的一系列有关机器学习的博文,我将具体的介绍常用的算法,并且希望在这个过程中尽可能地结合实际应用更加深入的理解其精髓,希望所付出的努力能得到应有的回报. 接下来的有关机器学习基础博文主要根据机器学习技法课程的学习,围绕特征转换(feature transforms)这个主要工具,从以下三个方向进行探讨: 如果现在有很多特征转换可以使用的时候,我们该如何运用这些特征转换,如何控制特征转换中的复杂度的问题,从这个角度刺激了支持向量机(Support Vector Machine)算法的发展

支持向量机(二)线性可分支持向量机与硬间隔最大化

本文原创如需转载请注明出处 阅读目录一.什么是函数间隔? 二.什么是几何间隔? 三.函数间隔与几何间隔的关系? 四.硬间隔最大化 五.学习的对偶算法 一.函数间隔 在图A,B,C三点,A离超平面是最远的,所以A被分类错误的可能性是最小的,相反C离超平面的距离是最近的,所以C被分类错误的可能性是最大的,这很好理解.那么我们就可以用“一个点距离超平面的远近”来表示分类预测的确信程度 因此我们只需要寻找一个超平面离所有边缘点都最远. a.我们用的绝对值表示点x与超平面的距离 b.对于样本点x来说,y是

SVM再次总结 - 2 - 线性可分支持向量机

说明:此篇是作者对"SVM"的第二次总结,因此可以算作对上次总结的查漏补缺以及更进一步的理解,所以很多在第一次总结中已经整理过的内容在本篇中将不再重复,如果你看的有些吃力,那建议你看下我的第一次总结: http://blog.csdn.net/xueyingxue001/article/details/51261397 如何定位唯一的分隔超平面 如上所示,有无数根线可以把两种样本的完全正确分开,那么谁是最优的? SVM是这样求的: 1,假设上图中这一个个分隔超平面的方程是: f(x,

线性可分支持向量机与软间隔最大化--SVM

线性可分支持向量机与软间隔最大化--SVM 给定线性可分的数据集 假设输入空间(特征向量)为,输出空间为. 输入 表示实例的特征向量,对应于输入空间的点: 输出 表示示例的类别. 我们说可以通过间隔最大化或者等价的求出相应的凸二次规划问题得到的分离超平面 以及决策函数: 但是,上述的解决方法对于下面的数据却不是很友好, 例如,下图中黄色的点不满足间隔大于等于1的条件 这样的数据集不是线性可分的, 但是去除少量的异常点之后,剩下的点都是线性可分的, 因此, 我们称这样的数据集是近似线性可分的. 对