机器学习教程 之 支持向量机:模型篇4–核函数与非线性优化

支持向量机是机器学习领域里最强的几种分类器之一,被广泛的运用于各种分类回归问题,如果不考虑集成学习算法以及近几年出现的深度学习算法,支持向量机的性能可以说是在学习领域具有统治地位,在一些中小型的数据集上它的性能甚至能够超过一些深度学习网络。其基本原理相当简单,但是模型的求解和优化却十分复杂,很难描述清楚,这里我会一步一步,尽我所能分章节的将它总结完善


模型篇

· 支持向量机:模型篇1–支持向量与间隔
· 支持向量机:模型篇2–支持向量的拉格朗日对偶
· 支持向量机:模型篇3–对偶问题的求解: SMO算法
· 支持向量机:模型篇4–核函数与非线性优化
· 支持向量机:模型篇5–向量机的软间隔拓展

代码篇

· 支持向量机:代码篇1-基于CVXPT优化函数求解
· 支持向量机:代码篇2-基于SMO算法求解


核函数与非线性优化

1.支持向量机的非线性优化原理

通过前面三篇博客的介绍,我们完成了支持向量机在数据集二分类、线性可分情况下的模型建立和求解。线性可分意味着存在一个超平面可以将训练样本正确分类,然而在很多现实问题中,原始的样本空间或许并不存在一个简单的能够直接划分两类样本的超平面,例如,下图的异或问题,就不是线性可分的,可以看出划分它的是一个抛物线

机器学习教程 之 支持向量机:模型篇4–核函数与非线性优化

对于这种情况,我们可以将样本从原始空间映射到一个更高维的特征空间,实现线性的划分,达到下图的效果
机器学习教程 之 支持向量机:模型篇4–核函数与非线性优化

从上图看出我们把原先的样本点从二维空间映射到了三维空间之后,便可以很方便的找到一个超平面将两类样本点划分开。划分开之后,我们再重新将样本点以及划分平面从高维映射到低维,便完成了分类任务。

2.支持向量机的核函数数学原理

这里用 (x) 表示将 x映射后的特征向量,于是,我们可以将在特征空间中划分样本的超平面表示为

f(x)=wT(x)+b

同样的,我们可以重写支持向量机的原始优化模型

obj{minw,b12||w||2s.tyi(wT(x)+b)>=1,i=1,2,...,m

其对偶问题为

maxani=1ai12ni,j=1aiajyiyj(xi)T(xj)

s.t.ai>=0,i=1,...,n

ni=1aiyi=0

我们想要求解对偶问题,就需要求函数 (xi)T(xj) ,这是 xixj 在映射到特征空间之后的内积。但这实际上是非常困难的,因为我们其实并不能准确的知道 函数的数学形式,再者就算知道了其数学形式,样本也可能被映射到了一个非常高维的空间,导致内积计算十分复杂。所以,为了避开这些障碍,可以设想这样一个函数

K(xi,xj)=<(xi)(xj)>=(xi)T(xj)

xixj 在特征空间的内积等于它们在原始样本空间中通过函数 K(·,·) 计算的结果,有了这样的函数,我们就不必直接去计算高维甚至无穷维特征空间中的内积了,这一函数也被我们称为“核函数“
于是,可以将对偶问题重写为
maxani=1ai12ni,j=1aiajyiyjK((xi),(xj))

s.t.ai>=0,i=1,...,n

ni=1aiyi=0

在通过SMO算法求解以后就可以得到划分超平面
f(x)=wT(x)+b

f(x)=ni=1aiyiK(xi,x)+b

这就是引入核函数之后的支持向量机求解形式与过程。虽然我们引入了核函数来简化求解过程,但到底什么是核函数呢?它的具体形式又是什么?
简单的来说,任何一个核函数其实都隐式的定义了一个称为“再生核希尔伯特空间“的特征空间,在这一空间中核函数完成了从低维映射到高维以及内积的求解,从而达到了使样本线性可分的目的。但需要注意的是,我们其实并不能知道核函数的具体数学描述,在公式推导中也只是用函数符号加以表示。于是“核函数选择“成为非线性划分情况下影响支持向量机分类性能的最大变数。若选择了一个不合适的核函数,则意味着将样本映射到了一个不合适的特征空间,从而导致性能不佳
这里列出了一些常用的核函数以供选择:核函数