机器学习入门学习笔记:(4.2)SVM的核函数和软间隔

前言

之前讲了有关基本的SVM的数学模型(机器学习入门学习笔记:(4.1)SVM算法)。这次主要介绍介绍svm的核函数、软间隔等概念,并进行详细的数学推导。这里仅将自己的笔记记录下来,以便以后复习查看和分享。

核函数

在此前的讨论中,我们都是默认假设数据集是线性可分的,即存在一个超平面能将给出的样本数据正确分类。然而,有时也许在原始的样本空间中找不到一个能正确分类的超平面。
机器学习入门学习笔记:(4.2)SVM的核函数和软间隔
如上图所示,一堆数据在二维空间中无法使用直线划分,而将其映射到三维空间中,便可以使用超平面划分。
所以,当遇到此类问题时,我们可以考虑:将超平面从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。如果原始空间是有限的,那么一定存在一个高维特征空间使得样本数据可分。
ϕ(x)表示将x映射后的特征向量,于是,在特征空间中划分超平面所对应的模型可以表示为:

f(x)=ωTx+b

这里使用这个条件重新再快速走一遍推导流程:
首先,回到前面求解SVM的参数ωb的最优化问题:
min12ω2s.t.yi(ωTϕ(xi)+b)1,i=1,2,...,m

转为求解其对偶问题,可以得到:
maxαi=1mαi12i=1mj=1mαiαjyiyjϕ(xi)ϕ(xj)s.t.i=1mαiyi=0

与之前的结果差不多,唯一的区别就是这个:ϕ(xi)ϕ(xj)。这是样本xixj映射到特征空间之后的内积。在引入核函数之前,对应的是:xixj,本身这个也是一个核函数,叫做线性核。
由于特征空间的维数有可能很高,甚至是无穷维,因此,直接计算ϕ(xi)ϕ(xj)这个式子,复杂度为O(m2),limm+。计算量非常大,所以此时计算ϕ(xi)ϕ(xj)比较困难。为了回避这个问题,可以设想如下函数:
K(xi,xj)=<ϕ(xi),ϕ(xj)>=ϕ(xi)Tϕ(xj)

即将ϕ(xi)ϕ(xj)的内积转化为求解这个函数K(xi,xj)
SVM的优化问题可以重写为:
maxαi=1mαi12i=1mj=1mαiαjyiyjK(xi,xj)s.t.i=1mαiyi=0

这还是一个二次规划问题,我们可以通过一些现成的优化算法或者QP工具包求解出α的值。
之后由α值可以求出ωb。这些结果都与前面一样,就直接给出结果了。
ω=i=1mαiyixib=1|S|sS(ysiSαiyixTixs)

原来的SVM模型可以表示如下:
f(x)=ωTϕ(x)+b=i=1mαiyiϕ(xi)Tϕ(x)+b=i=1mαiyiK(xi,xj)+1|S|sS(ysiSαiyixTixs)

其中的K(,)为核函数。

补充

当然核函数还有很多性质,这里不做介绍,下面给一个有详细的介绍的链接:
svm核函数的理解和选择

软间隔

前面有关支持向量机的约束条件:

{ωTxi+b1,yi=+1ωTxi+b1,yi=1

机器学习入门学习笔记:(4.2)SVM的核函数和软间隔
优化问题:
minω,bω22s.t.yi(ωTxi+b)1,i=1,2,...,m

此时要求所有的样本都划分正确,这被称为“硬间隔”
“软间隔”就是允许一些样本不符合条件:
yi(ωTxi+b)1

在最大化间隔的同时,也应当使这些不满足约束的样本点尽可能少,于是优化问题变为:
minω,bω22+Ci=1ml0/1(yi(ωTxi+b)1)s.t.yi(ωTxi+b)1,i=1,2,...,m

其中C0且为常数;l0/1是“0/1损失函数”。
l0/1(x)={1,ifx0;0,otherwise

讨论如下情况:
1. 如果C,那么最小值就是本身,此时所有样本都能满足条件;
2. 如果C是一个有限值,那么最小值也会取到一个有限值,此时,会允许一些样本不满足条件。

当然l0/1这样的函数是不连续不可导的,这会使得问题不好求解。所以常常还会使用其他一些函数来替代“0/1损失函数”,这些函数称为“替代函数”。这些替代函数有更好的数学性质,通常都是凸函数,且连续可导。
三种常用的替代函数:

hingelhinge(z)=max(0,1z)lexp(z)=exp(z)llog(z)=log(1+exp(z))

若采用hinge损失,原问题变为:
minω,bω22+Ci=1mmax(0,1yi(ωTxi+b))s.t.yi(ωTxi+b)1,i=1,2,...,m

引入松弛变量(slack variables)ξ
minω,bω22+Ci=1mξis.t.yi(ωTxi+b)1,i=1,2,...,m

由于:
ξi=max(0,1yi(ωTxi+b))

所以条件变为:
ξi0&&ξi1yi(ωTxi+b)

现在得到软间隔支持向量机表示如下:
minω,bω22+Ci=1mξis.t.yi(ωTxi+b)1ξiξi0,i=1,2,...,m

接下来,与之前的博客(机器学习入门学习笔记:(4.1)SVM算法)中一样,我们要将这个问题转换为对偶问题求解:
这仍然是一个二次规划问题,我们构建拉格朗日函数:
L(ω,b,α,ξ,μ)=ω22+Ci=1mξi+i=1mαi(1ξyi(ωTxi+b))+i=1mμi(ξi)

其中αi0,μi0
接下来对L(ω,b,α,ξ,μ)关于ω,b,ξ求偏导,令其为0:
Lω=ωmi=1αiyiωTxiω=ωmi=1αiyixi=0Lb=mi=1αiyibb=mi=1αiyi=0Lξi=Cmi=1αiξiξmi=1μiξiξi=Cαiμi=0

得到新的约束条件:
ω=mi=1αiyiximi=1αiyi=0C=αi+μi

重点关注这个新多出来的条件:C=αi+μi,又由于KKT条件,我们还有αi0,μi0
所以,对于αi有:0αiC
将上面推出的新的约束条件代回到拉格朗日函数,消去ω,b,ξ(中间的推导我省略了,太长了):
L(ω,b,α)=ω22+Ci=1mξi+i=1mαi(1ξyi(ωTxi+b))+i=1mμi(ξi)=i=1mαi12i=1mj=1mαiαjyiyjxixj

这东西跟原来的还是一模一样的,区别在于约束条件。写出问题最后的形式:
maxαi=1mαi12i=1mj=1mαiαjyiyjxixj,s.t.i=1mαiyi=00αiC,i=1,2,...,m

接下来的工作就是解这个二次规划问题,我们可以采用现成的QP工具包来解决,也可以采用SMO算法来解出答案。求出合适的α后,逆推出ωb

后记

SVM算法相对其他的机器学习算法来说还是比较复杂的,涉及概念也比较多。这样子详细再推导一次,很多概念都能理解地更深了。下次再总结归纳SMO算法。

参考资料:
《机器学习》周志华
svm核函数的理解和选择