机器学习 第六章支持向量机

238 阅读9分钟

关于周志华老师的《机器学习》这本书的学习笔记
记录学习过程
本博客记录Chapter6 支持向量机

1 间隔与支持向量

对于给定的训练集,分类学习的最基本想法就是基于训练集D在样本空间中找到一个划分超平面。且应该找位于两位训练样本 “正中间” 的划分超平面(图中加粗的),因为该划分超平面对样本局部扰动的“容忍性”最好,即根据该平面划分的分类结果是最鲁棒的,对未见示例的泛化能力最强。

image.png

该划分超平面可以用如下线性方程描述:

wTx+b=0\bold {w^T x}+b=0

样本空间中任意点x\bold x到超平面x,b\bold x,b的距离可以写为:

r=wTx+bwr=\frac{|\bold{w^T x}+b|}{||\bold w||}

假设超平面能将样本正确分类,对于(xi,yi)(\bold x_i,y_i),总有:

{wTxi+b+1,  yi=+1wTxi+b1,  yi=1\begin{cases} \bold{w^T x_i}+b \ge +1, \space\space y_i=+1\\ \bold{w^T x_i}+b \le -1, \space\space y_i=-1 \end{cases}

如上图画圈的样本所示,这几个距离超平面最近的训练样本使得式(3)的等号成立,他们被称为“支持向量”(support vector),两个异类支持向量到超平面的距离之和被称为“间隔”(margin)

γ=2w\gamma = \frac{2}{||\bold w||}

因此,只需要最大化间隔,支持向量机(Support Vector Machine,简称SVM) 的基本型如下:

minx,b12w2s.t.  yi(wTxi+b)1,  i=1,2,,m\min_{\bold{x},b}\frac{1}{2}||\bold w||^2\\ s.t.\space\space y_i(\bold{w^T x_i}+b)\ge 1, \space\space i=1,2,…,m

2 对偶问题

对式(5)使用拉格朗日乘子法可得其“对偶问题”(dual problem):

L(w,b,α)=12w2+i=1mαi(1yi(wTxi+b))L(\bold w, b, \bold \alpha)=\frac{1}{2}||\bold w||^2+\sum_{i=1}^m\alpha_i(1-y_i(\bold{w^T x_i}+b))

L(w,b,α)L(\bold w,b,\alpha)w\bold wbb偏导为0可得:

w=i=1mαiyixi0=i=1mαiyi\bold w=\sum_{i=1}^m \alpha_iy_i\bold x_i\\ 0=\sum_{i=1}^m \alpha_iy_i

将式(7)带入式(6),得对偶问题:

maxαi=1mαi12i=1mj=1mαiαjyiyjxiTxjs.t.{  i=1maiyi=0αi0,  i=1,2,,m\max_\alpha \sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\bold{x_i^T x_j}\\ s.t.\begin{cases}\space\space \sum_{i=1}^m a_iy_i=0\\ \alpha_i \ge 0, \space\space i=1,2,…,m \end{cases}

解出α\alpha后,求出w\bold w和b可得模型:

f(x)=wTx+b=i=1mαiyixiTx+bf(\bold x)=\bold{w^T x}+b=\sum_{i=1}^m \alpha_iy_i\bold x_i^T\bold x+b

同时,该模型还需要满足KKT条件

{αi01yif(xi)=1yi(wTxi+b)0αi(1yif(xi))=0\begin{cases} \alpha_i \ge 0\\ 1-y_if(\bold x_i)=1-y_i(\bold{w^T x_i}+b) \le 0\\ \alpha_i(1-y_if(\bold x_i))=0 \end{cases}

因此,对于训练样本(xi,yi)(\bold x_i, y_i),总有αi=0\alpha_i=0yif(xi)=1y_if(\bold x_i)=1。若α=0\alpha=0,则样本不会在f(x)f(\bold x)求和中出现,也就不会对f(x)f(\bold x)有任何影响;反之,所对应样本一定在边界上,是一个支持向量。这体现出:训练完成后,大部分训练样本不需要保留,最终模型只与支持向量有关。

求解式(8)的代表方法有SOM(Sequential Minimal Optimization)法:先固定αi\alpha_i之外的所有参数,求αi\alpha_i上的极值。其步骤如下:

  • 选取一对需更新的变量αi\alpha_iαj\alpha_j

    仅考虑αi\alpha_iαj\alpha_j,式(8)中的约束就可以重写为:

    αiyi+αjy=cc=ki,jαkyk\alpha_iy_i+\alpha_jy=c\\ -c=\sum_{k \neq i,j}\alpha_ky_k
  • 固定其他参数,求解更新后的αi\alpha_iαj\alpha_j

    αiyi+αjy=c\alpha_iy_i+\alpha_jy=c消去目标函数中的αj\alpha_j,即可得到关于αi\alpha_i的单变量二次规划问题,仅有的约束是αi0\alpha_i\ge0,具有闭式解。即可更新αiαj\alpha_i和\alpha_j

  • bb的值考虑到支持向量满足ysf(xi)=1y_sf(\bold x_i)=1,因此有:

    b=1SsS(1/ysiSαiyixiTxs)b=\frac{1}{|S|}\sum_{s\in S}(1/y_s-\sum_{i\in S}\alpha_iy_i\bold{x_i^T x_s})

SOM法高效的原因在于:注意到只需选取的αi\alpha_iαj\alpha_j中有一个不满足KKT条件,目标函数就会在迭代后减小。直观来看,KKT条件违背的程度越大,则变量更新后可能导致的目标函数值减幅越大。于是,SMO先选取违背KKT条件程度最大的变量,第二个变量应选择一个使目标函数值减小最快的变量,但由于比较各变量所对应的目标函数值减幅的复杂度过高,因此SMO采用了一个启发式:使选取的两变量所对应样本之间的间隔最大。一种直观的解释是,这样的两个变量有很大的差别,与对两个相似的变量进行更新相比,对它们进行更新会带给目标函数值更大的变化。

总结一下:就是选两个间隔比较大的样本(xi,yi)(\bold x_i,y_i)(xj,yj)(\bold x_j,y_j)。固定除了αiαj\alpha_i、\alpha_j以外的所有参数,这样就能求得c=ki,jαkyk-c=\sum_{k \neq i,j}\alpha_ky_k,同时αiyi+αjy=c\alpha_iy_i+\alpha_jy=c,将该式带入目标函数,可以得到关于αi\alpha_i的单变量二次规划函数,求得关于αi\alpha_i的极值,更新αiαj\alpha_i、\alpha_j,继续该过程,直到模型收敛。

3 核函数

对于线性不可分问题,我们可以把样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。(如果原始数据的空间是有限维,则一定存在一个高维特征空间使得样本可分)

ϕ(x)\phi(\bold x)表示x\bold x映射后的特征向量,则特征空间中划分超平面所对应的模型可表示为:

f(x)=wTϕ(x)+bf(\bold x)=\bold{w^T\phi(x)}+b

规划模型:

minx,b12w2s.t.  yi(wTϕ(xi)+b)1,  i=1,2,,m\min_{\bold{x},b}\frac{1}{2}||\bold w||^2\\ s.t.\space\space y_i(\bold{w^T \phi(x_i)}+b)\ge 1, \space\space i=1,2,…,m

对偶问题:

maxαi=1mαi12i=1mj=1mαiαjyiyjϕ(xi)Tϕ(xj)s.t.{  i=1maiyi=0αi0,  i=1,2,,m\max_\alpha \sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\bold{\phi(x_i)^T \phi(x_j)}\\ s.t.\begin{cases}\space\space \sum_{i=1}^m a_iy_i=0\\ \alpha_i \ge 0, \space\space i=1,2,…,m \end{cases}

由于样本映射到特征空间的维数可能很高,甚至是无穷维,因此直接计算ϕ(xi)Tϕ(xi)\phi(\bold x_i)^T\phi(\bold x_i)是很困难的,因此为避开这个问题,设想一个函数(核函数):

κ(xi,xj)=<ϕ(xi),ϕ(xj)>=ϕ(xi)Tϕ(xj)\kappa(x_i,x_j)=<\phi(\bold x_i),\phi(\bold x_j)>=\phi(\bold x_i)^T\phi(\bold x_j)

将上面对偶问题重写为:

maxαi=1mαi12i=1mj=1mαiαjyiyjκ(xiT,xj)s.t.{  i=1maiyi=0αi0,  i=1,2,,m\max_\alpha \sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\bold{\kappa(x_i^T ,x_j)}\\ s.t.\begin{cases}\space\space \sum_{i=1}^m a_iy_i=0\\ \alpha_i \ge 0, \space\space i=1,2,…,m \end{cases}

求解后可得(支持向量展式):

f(x)=wTϕ(x)+b=i=1mαiyiϕ(xi)Tϕ(x)+b=i=1mαiyiκ(x,xi)+bf(\bold x)=\bold w^T\phi(\bold x)+b=\sum_{i=1}^m\alpha_iy_i\phi(\bold x_i)^T\phi(\bold x)+b\\=\sum_{i=1}^m\alpha_iy_i\kappa(\bold x,\bold x_i)+b

所以问题的关键在于如何找到一个映射ϕ\phi以及对应的核函数κ(,)\kappa(\cdot,\cdot)

关于核函数的定理:χ\chi为输入空间,κ(,)\kappa(\cdot, \cdot)为定义在χ×χ\chi \times \chi上的对称函数,则κ\kappa是核函数当且仅当对于任意数据D={x1,x2,,xm}D=\{\bold {x_1,x_2,…,x_m}\},“核矩阵”KK总是半正定的

  • 半正定:对于一个n×nn\times n的实对称矩阵AA,对任意长度为nn的非零向量xx,都有xTAx0x^TAx\ge0

image.png

该定理表明,只要一个对称函数所对应的核矩阵半正定,它就能作为核函数使用。对于一个半正定核矩阵,总能找到一个与之对应的映射ϕ\phi,即任何一个核函数都隐式定义了一个“再生核希尔伯特空间”(Reproducing Kernel Hilbert Space),作为特征空间

几种常用的核函数如下:

image.png

同时上述几种核函数,还能通过函数组合得到新的组合核函数:

  • 线性组合:γ1κ1+γ2κ2\gamma_1\kappa_1+\gamma_2\kappa_2
  • 直积:κ1κ2(x,z)=κ1(x,z)κ2(x,z)\kappa_1 \otimes \kappa_2(\bold{x,z})=\kappa_1(\bold{x,z})\kappa_2(\bold{x,z})
  • 对于任意函数g(x)g(\bold x)κ(x,z)=g(x)κ1(x,z)g(z)\kappa(\bold{x,z})=g(\bold x)\kappa_1(\bold{x,z})g(\bold z)

4 软间隔和正则化

在现实任务中,我们往往很难确定合适的核函数使得训练样本在特征空间中线性可分。即便恰好找到了某个核函数使训练集在特征空间中线性可分,也很难断定这个貌似线性可分的结果不是由于过拟合所造成的。缓解该问题的一个办法是允许支持向量机在一些样本上出错。为此,要引入 “软间隔”(soft margin) 的概念。

image.png

软间隔允许某些样本不满足约束:yi(wTxi+b)1y_i(\bold{w^T x_i}+b)\ge1

但在最大化间隔的同时,还需要保证不满足约束的样本尽可能少(ϑ0/1\vartheta_{0/1}是损失函数):

minw,b=12w2+Ci=1mϑ0/1(yi(wTxi+b)1)ϑ0/1={1,   if z<0;0,   otherwise\min_{w,b}=\frac{1}{2}||w||^2+C\sum_{i=1}^m \vartheta_{0/1}(y_i(\bold{w^T x_i}+b)-1)\\ \vartheta_{0/1}=\begin{cases} 1 ,\space\space\space if \space z<0;\\ 0 ,\space\space\space otherwise \end{cases}

ϑ0/1\vartheta_{0/1}函数非凸、不连续、数学性质不太好,使得目标函数较难求解。因此常常采用其他函数代替ϑ0/1\vartheta_{0/1},称为替代损失,如:

  • hinge损失:ϑhinge(z)=max(0,1z)\vartheta_{hinge}(z)=max(0,1-z)
  • 指数损失:ϑexp(z)=e(z)\vartheta_{exp}(z)=e^{(-z)}
  • 对率损失:ϑlog(z)=log(1+ez)\vartheta_{log}(z)=log(1+e^{-z})

image.png

引入松弛变量,将规划模型改写为(其实是hinge替代损失函数的一种变形):

minw,b12w2+Ci=1mξis.t.{yi(wTϕ(xi)+b)1ξi,  i=1,2,,mξi0,   i=1,2,3,m\min_{\bold{w},b}\frac{1}{2}||\bold w||^2+ C\sum_{i=1}^m \xi_i\\ s.t. \begin{cases} y_i(\bold{w^T \phi(x_i)}+b)\ge 1-\xi_i, \space\space i=1,2,…,m\\ \xi_i \ge 0, \space\space\space i=1,2,3…,m \end{cases}

对偶问题为:

maxαi=1mαi12i=1mj=1mαiαjyiyjxiTxjs.t.{  i=1maiyi=00αiC,  i=1,2,,m\max_\alpha \sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\bold{x_i^T x_j}\\ s.t.\begin{cases}\space\space \sum_{i=1}^m a_iy_i=0\\ 0\le \alpha_i \le C, \space\space i=1,2,…,m \end{cases}

若采用其他的替代损失函数:

  • 对率损失函数ϑlog\vartheta_{log}

    如果使用对率损失函数ϑlog\vartheta_{log}来替代0/1损失函数,则几乎就得到了对率回归模型。实际上,支持向量机与对率回归的优化目标相近,通常情形下它们的性能也相当。对率回归的优势主要在于其输出具有自然的概率意义,即在给出预测标记的同时也给出了概率,而支持向量机的输出不具有概率意义,欲得到概率输出需进行特殊处理。此外,对率回归能直接用于多分类任务,支持向量机为此则需进行推广;另一方面,hinge损失有一块“平坦”的零区域,使得支持向量机的解具有稀疏性,对率损失是光滑的单调递增函数,不能导出支持向量的概念,因此对率回归的解依赖于更多的训练样本,预测开销更大。

  • 我们还可以把0/1损失函数换成别的替代损失函数以得到其他学习模型,这些模型的性质与所用的替代函数直接相关,但它们具有一个共性:优化目标中的第一项用来描述划分超平面的“间隔”大小,另一项i=1mϑ(f(xi),yi)\sum_{i=1}^m\vartheta{(f(\bold x_i),y_i)}用来表述训练集上的误差,可写为更一般的形式:

    minfΩ(f)+Ci=1mϑ(f(xi),yi)\min_f \Omega(f)+C\sum_{i=1}^m \vartheta(f(\bold x_i),y_i)
    • 其中Ω(f)\Omega(f)称为 “结构风险”(structural risk),用于描述模型ff的某些性质;第二项i=1mϑ(f(xi),yi)\sum_{i=1}^m \vartheta(f(\bold x_i),y_i)称为 “经验风险”(empirical risk),用于描述模型与训练数据的契合程度。 C用于对二者进行折中,从经验风险最小化的角度来看,Ω(f)\Omega(f)表述了我们希望获得具有何种性质的模型(例如希望获得复杂度较小的模型),这为引入领域知识和用户意图提供了途径;另一方面,该信息有助于削减假设空间,从而降低了最小化训练误差的过拟合风险

      从这个角度来说,上式称为 “正则化”(regularization)问题Ω(f)\Omega(f)称为正则化项,C则称为正则化常数LpL_p范数(norm)是常用的正则化项,其中L2L_2范数w2||\bold w||_2倾向于w\bold w的分量取值尽量均衡,即非零分量个数尽量稠密;而L0L_0范数和L1L_1范数则倾向于w\bold w的分量尽量稀疏,即非零分量个数尽量少

    • 正则化可以理解为”罚函数“。对不希望得到的结果施以惩罚,从而使得优化过程趋向于希望目标。(从贝叶斯估计角度,正则化项可认为是提供了模型的先验概率)


5 支持向量回归

支持向量回归(Support Vector Regression, SVR):假设我们能容忍f(x)f(\bold x)和真实值yy之间有ϵ\epsilon的偏差。即当f(x)y>ϵ|f(\bold x)-y|\gt \epsilon时才计算损失。

image.png

目标函数(ϑϵ(z)\vartheta_\epsilon(z)ϵ\epsilon-不敏感损失函数):

minw,b12w2+Ci=1mϑϵ(f(xi)yi)ϑϵ(z)={0,          if zϵzϵ,  otherwise\min_{\bold{w},b}\frac{1}{2}||\bold w||^2+ C\sum_{i=1}^m \vartheta_\epsilon(f(\bold x_i)-y_i)\\ \vartheta_\epsilon(z)=\begin{cases} 0,\space\space\space\space\space\space\space\space\space\space if\space |z|\le\epsilon\\ |z|-\epsilon,\space\space otherwise \end{cases}

引入松弛变量,规划模型:

minw,b,ξi,ξ^i12w2+Ci=1m(ξi+ξ^i)s.t.{f(xi)yiϵ+ξiyif(xi)ϵ+ξ^iξi0,ξ^i0,   i=1,2,3,m\min_{\bold{w},b,\xi_i,\hat \xi_i}\frac{1}{2}||\bold w||^2+ C\sum_{i=1}^m (\xi_i+\hat \xi_i)\\ s.t. \begin{cases} f(\bold x_i)-y_i \le \epsilon+\xi_i\\ y_i-f(\bold x_i) \le \epsilon+\hat \xi_i\\ \xi_i \ge 0,\hat \xi_i \ge0, \space\space\space i=1,2,3…,m \end{cases}

对偶问题:

maxαi=1myi(α^iαi)ϵ(α^i+αi)12i=1mj=1m(α^iαi)(α^jαj)xiTxjs.t.{  i=1m(α^iαi)=00αi,α^iC,  i=1,2,,m\max_\alpha \sum_{i=1}^my_i(\hat \alpha_i-\alpha_i)-\epsilon(\hat \alpha_i+\alpha_i)-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m(\hat \alpha_i-\alpha_i)(\hat \alpha_j-\alpha_j)\bold{x_i^T x_j}\\ s.t.\begin{cases}\space\space \sum_{i=1}^m (\hat \alpha_i-\alpha_i)=0\\ 0\le \alpha_i,\hat \alpha_i \le C, \space\space i=1,2,…,m \end{cases}

SVR的解如:

f(x)=i=1m(α^iαi)xiTx+bb=yi+ϵi=1m(α^iαi)xiTxif(\bold x)=\sum_{i=1}^m(\hat \alpha_i-\alpha_i)\bold{x_i^T x}+b\\ b=y_i+\epsilon-\sum_{i=1}^m(\hat \alpha_i-\alpha_i)\bold{x_i^T x_i}

因此,能满足α^iαi0\hat \alpha_i-\alpha_i \neq 0的样本即为 SVR的支持向量。 他们必定落在ϵ\epsilon-间隔带之外,因为间隔带内部的α^i=αi=0\hat \alpha_i=\alpha_i=0,因此,SVR的支持向量仅仅是训练样本的一部分,其解依然有稀疏性。

6 核方法

表示定理(representer theorem):令HH为核函数κ\kappa对应的再生核希尔伯特空间,hH||h||_H表示HH空间中关于hh的范数,对于任意单调递增函数Ω:[0,]R\Omega:[0, \infty] \mapsto R 和任意非负损失函数ϑ:Rm[0,]\vartheta:R^m \mapsto [0, \infty],优化问题

minhH F(h)=Ω(hH)+ϑ(h(x1),h(x2),,h(xm))\min_{h\in H}\space F(h)=\Omega(||h||_H)+\vartheta(h(x_1),h(x_2),…,h(x_m))

的解总可以写为:

h(x)=i=1mαiκ(x,xi)h^*(x)=\sum_{i=1}^m\alpha_i\kappa(x,x_i)

核方法:基于核函数的学习方法。常见的是,通过”核化“来将线性学习器拓展为非线性学习器。

核线性判别分析(KLDA)

利用某种映射ϕ:χF\phi:\chi \mapsto F,将样本映射到一个特征空间。

其学习目标为:

maxwJ(w)=wTSbϕwwTSwϕw\max_w J(w)=\frac{\bold w^T\bold S_b^\phi\bold w}{\bold w^T\bold S_w^\phi\bold w}

其中,Sbϕ\bold S_b^\phi是类间散度矩阵,Swϕ\bold S_w^\phi为类内散度矩阵。

我们使用核函数κ(x,xi)=ϕ(xi)Tϕ(xi)\kappa(x,x_i)=\phi(x_i)^T\phi(x_i)来隐式地表达映射和特征空间。得到h(x)=i=1mαiκ(x,xi)h(x)=\sum_{i=1}^m\alpha_i\kappa(x,x_i)

因此w=i=1mαiϕ(xi)w=\sum_{i=1}^m\alpha_i\phi(x_i)

KRm×mK\in R^{m\times m}为核函数κ\kappa所对应的核矩阵(K)ij=κ(xi,xj)(K)_{ij}=\kappa(x_i,x_j)。令1i{1,0}m×11_i \in \{1,0\}^{m\times 1}表示第ii类样本地指示向量,即当1i1_i的第jj个分量为1当且仅当xjXix_j \in X_i,否则为0。令

μ^0=1m0K10μ^1=1m1K11M=(μ^0μ^1)(μ^0μ^1)TN=KKTi=01miμ^iμ^iT\hat \mu_0 = \frac{1}{m_0}K1_{0}\\ \hat \mu_1 = \frac{1}{m_1}K1_{1}\\ M=(\hat \mu_0-\hat \mu_1)(\hat \mu_0-\hat \mu_1)^T\\ N=KK^T-\sum_{i=0}^1m_i\hat \mu_i\hat \mu_i^T

于是,目标函数等价于

maxαJ(α)=αTMααTNα\max_\alpha J(\alpha)=\frac{\alpha^TM\alpha}{\alpha^TN\alpha}

利用线性判别分析求解法可以求得α\alpha,进而求得投影函数h(x)h(x)