支持向量机 二 :非线性支持向量机

如果您还未了解 线性向量机,建议首先阅读

支持向量机 一:线性支持向量机

一、为什么要用非线性支持向量机?

线性支持向量机不香吗?为什么还要用非线性支持向量机?
线性支持向量机香是香,但并不适合大多数数据集啊。比如下图这个数据,使用线性SVM就无法划分。
非线性SVM的话便可以解决这个问题,因为非线性SVM通过将低维的数据集变换成高位的数据集,从而使线性不可分的数据可分。上图的数据经变换成下图的方式,数据便可分了。
在这里插入图片描述

二、低维怎么到高维的呢?— 核函数介绍

对于线性不可分数据集D={(x1,y1),(x2,y2),...,(xn,yn)}D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\},其中xix_i是第ii个实例,yiy_ixix_i的类标签,并且有yi{1,1}y_i∈\{-1,1\}。我们需要通过变换将数据集DD转换到较高的维度,核函数就是一个很好的方法。我们假设原数据集的空间为X\Chi,我们的数据集一般可以度量并且可以计算内积,但我们的数据集不能存在极限,所以X\Chi属于欧式空间。

2.1 核函数是什么

我们来看看核函数是什么,我们希望将输入空间X\Chi(欧式空间)映射到特征空间H\Eta(希尔伯特空间),如果存在一个从X\ChiH\Eta的映射ϕ(x):XH\phi(x):\Chi\rarr\Eta使得对所有 xi,xjXx_i,x_j∈\Chi,函数K(xi,xj)K(x_i,x_j)满足条件K(xi,xj)=ϕ(xi).ϕ(xj)K(x_i,x_j)=\phi(x_i).\phi(x_j)则称K(xi,xj)K(x_i,x_j)为核函数,ϕ(x)\phi(x)为映射函数,式中ϕ(xi).ϕ(xj)\phi(x_i).\phi(x_j)ϕ(xi)\phi(x_i)ϕ(xj)\phi(x_j)的内积。

2.2 简单介绍一下 欧式空间 与 希尔伯特空间

如果你是入门者,你可能感叹“天哪!什么跟什么啊!这就是核函数啦?什么是欧式空间?什么是希尔伯特空间?”简单说一句,以便你理解欧式空间与希尔伯特空间。

欧式空间里的元素是可以计算距离的,并且欧式空间中的元素之间的角度也是可以通过内积计算的。如下图,v1,v2v_1,v_2的距离是可度量的,并且通过内积可以计算其夹角。“可度量,有内积?这就够了吗?”不够。考虑一下我们日常使用的数据,首先你会提出极限值,因为极限值是无法度量的,你或许会用一个很大的值代表无限,但是这个很大的值并不是无限的度量。另外你的数据中某个实例肯定是有限维的,就比如你研究你和某人合不合适,你会分析多少个方面(维度呢),但无论多少个都不会是无限个,即使你子子孙孙无穷尽也也不会子子孙孙去分析无限个。再比如,虽然说大数据时代数据特征特别高,但是也是有限度的,不然电脑和硬盘存不下,而且你也会对这些特征进行特征筛选获取最主要的特征。因此除了可度量,有内积,欧式空间还是不考虑极限,维度有限的。最后一点就是欧式空间属于实数域
在这里插入图片描述

希尔伯特空间又是什么?“希尔伯特空间=欧式空间+维度无限+可定义极限”,希尔伯特空间是在欧式空间的基础上加了完备性,也就是说希尔伯特空间除了可度量,有内积之外,其内的元素存在无极限的情况,而且允许维度无限维,并且属于复数域。也因为希尔伯特空间允许无限维度和极限值,所以希尔伯特空间往往是更高维的空间,甚至是无穷维的空间。目前希尔伯特空间多运用在泛函分析和量子力学中。

三、核函数如何与SVM产生联系

我在《支持向量机:线性支持向量机》中已经介绍了线性支持向量机最终要解决的对偶问题,即:mina  12i=1Nj=1Naiajyiyj(xi.xj)i=1Nai  ...  (1) s.t.  i=1Naiyi=0,     i=1,2,.,N  ...  (2) 0aiC,    i=1,2,.,N  ...  (3)min_a\ \ \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^Na_ia_jy_iy_j(x_i.x_j)-\sum_{i=1}^Na_i \ \ ... \ \ (1) \\\ s.t.\ \ \sum_{i=1}^Na_iy_i=0, \ \ \ \ \ i=1,2,.,N \ \ ...\ \ (2)\\\ 0\leq a_i\leq C,\ \ \ \ i=1,2,.,N\ \ ...\ \ (3)非线性支持向量机便是使用K(xi,xj)K(x_i,x_j)代替式(1)中的(xi,xj)(x_i,x_j)。不要误会,虽然我们这里是从式(1)开始替换,但其实从数据集DD开始将xix_i映射到ϕ(xi)\phi(x_i)的,只不过最后得到式子与从式(1)开始替换一样。并且从式(1)替换还有另外一个原因,就是找到一个映射ϕ(x):XH\phi(x):\Chi\rarr\Eta是很难的操作,所以研究人员往往先确定K(xi,xj)K(x_i,x_j)再从K(xi,xj)=ϕ(xi).ϕ(xj)K(x_i,x_j)=\phi(x_i).\phi(x_j)反推得到ϕ(x)\phi(x)。因此我们得到了非线性支持向量机最终要解决的对偶问题,即:mina  12i=1Nj=1NaiajyiyjK(xi.xj)i=1Nai  ...  (4) s.t.  i=1Naiyi=0,     i=1,2,.,N  ...  (5) 0aiC,    i=1,2,.,N  ...  (6)min_a\ \ \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^Na_ia_jy_iy_jK(x_i.x_j)-\sum_{i=1}^Na_i \ \ ... \ \ (4) \\\ s.t.\ \ \sum_{i=1}^Na_iy_i=0, \ \ \ \ \ i=1,2,.,N \ \ ...\ \ (5)\\\ 0\leq a_i\leq C,\ \ \ \ i=1,2,.,N\ \ ...\ \ (6)

四、非线性SVM的 分离超平面 与 目标决策函数

首先,我们来回顾以下线性SVM的分离超平面i=1Naiyi(xix)+b=0  ...  (7)\sum_{i=1}^Na_i^*y_i(x_i·x)+b^*=0\ \ ...\ \ (7)以及线性SVM分类决策函数f(x)=sign(i=1Naiyi(xix)+b)  ...  (8)f(x)=sign(\sum_{i=1}^Na_i^*y_i(x_i·x)+b^*)\ \ ... \ \ (8)
并且在线性SVM中,我们确定参数bb的规则是b=yji=1Naiyi(xi.xj)  ...  (9)b^*=y_j-\sum_{i=1}^Na_i^*y_i(x_i.x_j)\ \ ...\ \ (9)式(7)(8)(9)的获得已在《支持向量机:线性支持向量机》中解释,想了解的请移步以下。

根据式(7)(8)(9),我们来求解以下非线性SVM的分离超平面和分类决策函数。

首先,通过SMO算法我们求得式(4)(5)(6)的最优解a=(a1,a2,...,aN)Ta=(a_1^*,a_2^*,...,a_N^*)^T其次,我们从aa^*中选择一个分量aja_j^*(要求0ajC0\leq a_j^*\leq C,这也表明bb^*不唯一),根据式(9)有b=yji=1NaiyiK(xi,x)b^*=y_j-\sum_{i=1}^Na_i^*y_iK(x_i,x)于是,我们求得分离超平面:i=1NaiyiK(xi,x)+b=0\sum_{i=1}^Na_i^*y_iK(x_i,x)+b^*=0还有分类决策函数:f(x)=sign(i=1NaiyiK(xi,x)+b)f(x)=sign(\sum_{i=1}^Na_i^*y_iK(x_i,x)+b^*)

五、介绍几个常用的核函数

随便写一个K(xi,xj)K(x_i,x_j)就是核函数了吗?当然不是,K(xI,xj)K(x_I,x_j)必须满足一定的条件才会是核函数,而这个条件就是核函数必须是正定核函数。我们对什么是正定核不做多余的解释,但是我们可以介绍两个成功的核函数。

  1. 多项式核函数K(xi,x)=(xix+1)pK(x_i,x)=(x_i·x+1)^p其对应的决策函数f(x)=sign(i=0Naiyi(xix+1)p+b)f(x)=sign(\sum_{i=0}^Na_i^*y_i(x_i·x+1)^p+b^*)
  2. 高斯核函数K(xi,x)=exp(xix22σ2)K(x_i,x)=\exp(-\frac{||x_i-x||^2}{2\sigma^2})其对应的决策函数f(x)=sign(i=0Naiyiexp(xix22σ2))f(x)=sign(\sum_{i=0}^Na_i^*y_i\exp(-\frac{||x_i-x||^2}{2\sigma^2}))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章