支撑向量机 SVM
Posted szqfreiburger
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支撑向量机 SVM相关的知识,希望对你有一定的参考价值。
本文总结支撑向量机的基础知识,加入一点个人的直观理解。个人比较不太喜欢照搬书里的东西,而是喜欢自己推导然后时不时闭上研究回忆,想方设法用自己的方式简单理解。
1. 分类支撑向量机
1.1 可分SVM与间隔最大化:
对于二分类SVM,一种直观的理解就是要寻找一条有宽度的带子来分开两类数据,而不是一条线。为何要这样呢? 如果仅仅是一条线的话,那么例如上图中,这条边界并不唯一,那么模型的鲁棒性成问题。但是如果是找一条边界带,那么可能可以找到一条宽度最宽的边界带,并且至少在某些情况,这条带子是唯一的,用来间隔开两类数据,如上图所示。而如果数据是“可分的”,也就是说这样的带子存在,那么带子的最大宽度称为“间隔最大化”(maximizing the margin),直观上,最宽的那个带子好像是一种最公平的方式分离开两类数据。
我们尝试用数学语言描述这件事情。设$D=lbrace (x_{1},y_{1}),...,(x_{N},y_{N}), x_{i}inmathbb{R}^{P},y_{i}in lbrace-1,+1 brace brace$ 是我们的预训练数据集。对于每一条带子,也就是$mathbb{R}^{P}$中两个平行的超平面,总可以表示为:$wcdot x+b=+1$与$wcdot x+b=-1$,其中$(w,b)in mathbb{R}^{P} imesmathbb{R}^{P}$而$(x,y)$表示$mathbb{R}^{P} imesmathbb{R}$中的点。我们希望的是$y_{i}=1$的点尽量落在这个带子(或者说是一条河更好)的"正岸", 也就是集合: lbrace xinmathbb{R}^{P}mid wcdot x+bgeq 1 brace, 而$y_{i}=1$的点尽量落在这个带子(或者说是一条河更好)的"正岸", 也就是集合: lbrace xinmathbb{R}^{P}mid wcdot x+bleq -1 brace,综合起来就是我们希望数据都是满足:$$y_{i}(wcdot x_{i}+b)geq 1$$的。
现在对于训练集中任意点$(x_{i},y_{i})$如果$y_{i}(wcdot x_{i}+1)geq 1$, 也就是说该点完全在自己该落在的那一边上,或者叫自己这一类的“地盘”上,那么这时是很让人满意的,如果每一个点都满足上述不等式,则两个类被这条河完全阻隔开。注意这条河的宽度其实是$frac{2}{Vert wVert}$, 所以找这条河就是说求下列的优化问题:
egin{equation}egin{split} ext{max} &frac{2}{Vert wVert} ewline ext{subject to} & y_{i}(wcdot x_{i}+b)geq 1end{split}end{equation}
很自然的,其实上述问题等价于下面的凸优化问题:
egin{equation}egin{split} ext{min} &frac{1}{2}Vert wVert^{2} ewline ext{subject to} & y_{i}(wcdot x_{i}+b)geq 1end{split}end{equation}
1.2 不可分向量机和软间隔最大化:
现实中没那么好的事情,能够找一条河将两个类完全隔开,而往往是每条河都会有些点跑到河面上或者干脆跑到不属于自己领土的河对岸。我们用数学语言描述一下这件事:
对于任意点$(x_{i},y_{i})in D$:
如果$y_{i}(wcdot x_{i}+b)geq 1$, 我们很满意,他在自己这边的岸上;
如果$y_{i}(wcdot x_{i}+b)leq 1$, 我们有点捉鸡,因为它跑到河面上去了或者直接在对方的岸上,这个时候我们希望他离自己这边的河岸尽量近,也就是$1-y_{i}(wcdot x_{i}+b)$尽量大。
综上这个时候不妨引入$d_{i}(w,b)=[1-y_{i}(wcdot x_{i}+b)]_{+}$, 他只在第二种坏情况的时候非0,给我们的模型蒙羞。我们要想办法使得$sum_{i=1}^{N}d_{i}$小的同时$Vert wVert$尽量大,因此我们可以考虑如下的最优问题来平衡这两个目标:
egin{equation}egin{split} ext{min} &frac{1}{2}Vert wVert^{2}+Cd_{i}(w,b)end{split}end{equation}
其中C>0是某个预先选定的数。
上面的式子还是看着不够漂亮,我们应该整理一下。考虑到$d_{i}(w,b)$其实是当$w,b$固定时满足:
$$xi_{i}geq 0, 1-y_{i}(wcdot x_{i}+b)leq xi_{i}$$的$xi_{i}$的最小值,所以我们可以将(3)改写为:
egin{equation}egin{split} ext{min} &frac{1}{2}Vert wVert^{2}+Csum_{i=1}^{N}xi_{i} ewline ext{subject to:} & y_{i}(wcdot x_{i}+b)geq 1-xi_{i} ewline &xi_{i}geq 0end{split}end{equation}
2. 支撑向量机回归
我们考虑一下回归问题,这个时候我们需要玩一点不同的套路。这时候设$D=lbrace (x_{1},y_{1}),...,(x_{N},y_{N}), x_{i}inmathbb{R}^{P},y_{i}in mathbb{R} brace brace$是训练集,注意到$y_{i}$是连续变量,不再是-1,+1.
这个时候恰恰相反,我们需要寻找一条带子,使得数据点尽量集中在带内。和通常的线性回归不同的是,对于落在带子内部的数据,我们不计较其损失,我们只计算落在带子外的数据,也就是我们给定一个带宽$epsilon>0$, 希望找到$f(x)=wcdot x+b$使得:
$$sum_{i=1}^{N}(vert y_{i}-f(x_{i})vert-epsilon)_{+}$$
尽量小,而同时我们考虑到可以添加$w$的正则项,于是我们可以得到如下的优化问题:
egin{equation}min_{(w,b)in mathbb{R}^{P} imesmathbb{R}} frac{1}{2}Vert wVert^{2}+Csum_{i=1}^{N}(vert y_{i}-wcdot x_{i}-bvert-epsilon)_{+},end{equation}
其中$C>0$是预先选定的系数。
我们容易观察到,对于任意的$xinmathbb{R}$:$$[vert xvert-epsilon]_{+}=minlbrace hat{xi}+check{xi}mid -check{xi}-epsilonleq xleqhat{xi}+epsilon,hat{xi},check{xi}geq 0 brace,$$
于是优化问题(4)等价于凸优化问题:
egin{equation}egin{split}min frac{1}{2}Vert wVert^{2}+Csum_{i=1}^{N}(hat{xi}_{i}+check{xi}_{i})& ewline ext{subject to:} -check{xi_{i}}-epsilonleq wcdot x_{i}+bleq hat{xi_{i}}+epsilon & ewline hat{xi}_{i},check{xi}_{i}geq 0 & end{split}end{equation}
3.对偶问题
3.1 分类SVM的对偶问题:
我们这里看看(5)的Lagrange对偶问题。这时候Lagrange函数为:
$$L: mathbb{R}^{P} imesmathbb{R} imesmathbb{R}^{N} imesmathbb{R}^{N} imesmathbb{R}^{N}:longrightarrow mathbb{R}$$
$$L(w,b,xi,alpha, u)=frac{1}{2}Vert wVert^{2}+Csum_{i=1}^{N}xi_{i}-sum_{i=1}^{N}alpha_{i}(y_{i}(wcdot x_{i}+b)-1+xi_{i})-sum_{i=1}^{N} u_{i}xi_{i}$$
本人在之前的随笔 https://www.cnblogs.com/szqfreiburger/p/11573939.html 中介绍了Lagrange函数和Slater条件,我们很容易看出这个问题是满足Slater条件的,于是该问题和对偶问题是强对偶的,我们研究一下其对偶问题。
首先对偶函数:$$g(alpha, u)=egin{cases}-frac{1}{2}Vert sum_{i=1}^{N}alpha_{i}y_{i}x_{i}Vert^{2}+sum_{i}alpha_{i}, &alpha_{i}+ u_{i}= C, ext{ and }sum_{i=1}^{N}y_{i}alpha_{i}=0 cr -infty, &otherwiseend{cases},$$
于是乎原问题的对偶问题:egin{split} ext{min }&g(alpha, u) ewline ext{subject to } & alpha_{i}geq 0 , i=1,...,N& ewline & u_{i}geq 0, i=1,...,N end{split}
就等价于凸优化问题:egin{equation}egin{split} ext{min }&sum_{i=1}^{N}sum_{i=1}^{N}frac{1}{2}alpha_{i}alpha_{j}y_{i}y_{j}x_{i}cdot x_{j}-sum_{i=1}^{N}alpha_{i} ewline ext{subject to } & 0 leqalpha_{i}geq C , i=1,...,Nend{split}end{equation}
这时候如果我们求解上述优化问题得到最优解$alpha^{ast}$, 则$(alpha^{ast}_{1},...,alpha^{ast}_{N},C-alpha^{ast}_{1},...,C-alpha^{ast}_{N})$将会是对偶问题的最优解,如果$(w^{ast},b^{ast},xi^{ast})$是原问题的最优解,由于原问题和对偶问题是强对偶的,我们自然有 KKT 条件成立:
(1) 不等式约束条件:
对任意的 i=1,...,N 有:
egin{equation}y_{i}(w^{ast}cdot x_{i}+b^{ast})geq 1-xi_{i}^{ast}end{equation}
egin{equation}xi_{i}^{ast}geq 0,end{equation}
(2) slackness 条件:
对任意的 i=1,...,N 有:
egin{equation}alpha_{i}^{ast}(y_{i}(w^{ast}cdot x_{i}+b^{ast})-1+xi_{i}^{ast})=0end{equation}
egin{equation}(alpha_{i}^{ast}-C)xi_{i}^{ast}= 0,end{equation}
(3)梯度条件:
egin{equation} abla_{w}L(w^{ast},b^{ast},xi^{ast},alpha^{ast}, u^{ast})=w^{ast}-sum_{i=1}^{N}alpha^{ast}_{i}y_{i}x_{i}=0end{equation}
egin{equation} abla_{b}L(w^{ast},b^{ast},xi^{ast},alpha^{ast}, u^{ast})=-sum_{i=1}^{N}alpha_{i}^{ast}y_{i}=0end{equation}
egin{equation} abla_{xi}L(w^{ast},b^{ast},xi^{ast},alpha^{ast}, u^{ast})=(C-alpha_{1}^{ast}- u_{1}^{ast},...,C-alpha_{N}^{ast}- u_{N}^{ast})=0end{equation}
由第一个梯度条件(12)可知:
egin{equation}w^{ast}=sum_{i=1}^{N}y_{i}x_{i}alpha_{i}^{ast},end{equation}
注意到,如果存在某个$i_{0}$使得$alpha_{i_{0}}in (0,C) $, 此时由slackness条件(10),(11)且$alpha_{i_{0}} eq 0$我们立即得到$xi_{i_{0}}^{ast}=0$, $y_{i_{0}}(w^{ast}cdot x_{i_{0}}+b^{ast})-1+xi_{i_{0}}^{ast}=0$, 从而有:
egin{equation}b^{ast}=y_{i_{0}}-w^{ast}cdot x_{i_{0}}=y_{i_{0}}-sum_{i=1}^{N}alpha_{i=1}^{ast}y_{i}x_{i_{0}}cdot x_{i}end{equation}
从中看出,满足条件的$b^{ast}$不只一个,其实我们可以将所有的由满足条件的$alpha_{i}$算出来的$b$取平均得到$b^{ast}$, 以增强模型的鲁棒性。
综上我们可以总结出分类SVM算法如下:
输入:训练数据集$D=lbrace (x_{1},y_{1}),...,(x_{N},y_{N}) brace$, 其中$x_{i}inmathbb{R}^{P}$, $y_{i}inlbrace -1,+1 brace$, 并且$y_{i}$不恒等于+1 或-1
输出:分类决策函数
算法:
(1) 选择某个惩罚系数 $C>0$, 并且求解如下的最优化问题:
egin{equation}egin{split} ext{min } &sum_{i=1}^{N}sum_{i=1}^{N}frac{1}{2}alpha_{i}alpha_{j}y_{i}y_{j}x_{i}cdot x_{j}-sum_{i=1}^{N}alpha_{i} ewline ext{subject to: } & 0leqalpha_{i}leq C , i=1,...,Nend{split}end{equation}
得到最优解$alpha^{ast}=(alpha^{ast}_{1},...,alpha^{ast}_{N})$
(2) 计算:$$w^{ast}=sum_{i=1}^{N} alpha_{i} y_{i} x_{i},$$
找出一个$i_{0}(1leq i_{0}leq N)$, 使得$alpha_{i_{0}}in (0, C)$, 计算:$$b^{ast}=y_{i_{0}}-sum_{i=1}^{N}alpha_{i}^{ast}y_{i}x_{i}cdot x_{i_{0}}$$
(3) 输出分类决策函数:
$$f(x)= ext{sign}(w^{ast}cdot x+b^{ast})$$
3.2 回归SVM问题的对偶问题:
凸优化问题(6)的Lagrange函数要稍微复杂一些:
$$L:mathbb{R}^{P} imesmathbb{R} imesmathbb{R}^{N} imesmathbb{R}^{N} imesmathbb{R}^{N} imesmathbb{R}^{N} imesmathbb{R}^{N} imesmathbb{R}^{N}longrightarrowmathbb{R}$$
egin{split}L(w,b,hat{xi},check{xi},alpha,eta, u,mu)=&frac{1}{2}Vert wVert^{2}+Csum_{i=1}^{N}(hat{xi_{i}}+check{xi_{i}})+sum_{i=1}^{N}alpha_{i}(-hat{xi_{i}}-epsilon-wcdot x_{i}-b+y_{i}) ewline & +sum_{i=1}^{N}eta_{i}(-y_{i}+wcdot x_{i}+b-check{xi_{i}}-epsilon)-sum_{i=1}^{N} u_{i}hat{xi_{i}}-sum_{i=1}^{N}mu_{i}check{xi_{i}}end{split}
这时候Lagrange对偶函数:
egin{split}& g(alpha,eta, u,mu) riangleqmin_{w,b,hat{xi},check{xi}}L(w,b,hat{xi},check{xi},alpha,eta, u,mu) ewline =&egin{cases}-frac{1}{2}sum_{i=1}^{N}sum_{i=1}^{N}(alpha_{i}-eta_{i})(alpha_{j}-eta_{j})x_{i}cdot x_{j} ewline +sum_{i=1}^{N}(y_{i}-epsilon)alpha_{i}-(y_{i}+epsilon)eta_{i}, & eta_{i}+ u_{i}=C, eta_{i}+mu_{i}= C, & sum_{i=1}^{N}(alpha_{i}-eta_{i})=0 cr -infty, & ext{otherwise}end{cases}, end{split}
因此原问题(6)的对偶问题等价于优化问题:
egin{equation}egin{split}min &frac{1}{2}sum_{i=1}^{N}sum_{i=1}^{N}(alpha_{i}-eta_{i})(alpha_{j}-eta_{j})x_{i}cdot x_{j}+sum_{i=1}^{N}(epsilon-y_{i})alpha_{i}+(y_{i}+epsilon)eta_{i} ewline ext{subject to:} & 0leqalpha_{i}leq C ewline & 0leqeta_{i}leq C ewline &sum_{i=1}^{N}(alpha_{i}-eta_{i})=0 end{split}end{equation}
同样类似于支撑向量机分类问题,如果上述问题得到最优解$(alpha^{ast},eta^{ast})=(alpha^{ast}_{1},...,alpha^{ast}_{N},eta^{ast}_{1},...,eta^{ast}_{N})$, 我们仍然可以依据KKT条件得到:
egin{equation}w^{ast}=sum_{i=1}^{N}(alpha_{i}^{ast}-eta_{i}^{ast})x_{i}end{equation}
egin{equation}alpha^{ast}_{i}+ u_{i}^{ast}=Cend{equation}
egin{equation}eta^{ast}_{i}+mu_{i}^{ast}=Cend{equation}
egin{equation}alpha_{i}^{ast}(y_{i}-w^{ast}cdot x_{i}-b^{ast}-hat{xi_{i}}^{ast}-epsilon)=0end{equation}
egin{equation}eta_{i}^{ast}(-y_{i}+w^{ast}cdot x_{i}+b^{ast}-check{xi_{i}}^{ast}-epsilon)=0end{equation}
egin{equation} u_{i}^{ast}hat{xi_{i}}^{ast}=0end{equation}
egin{equation}mu^{ast}_{i}check{xi_{i}}^{ast}=0end{equation}
类似的,如果存在一个$i_{0}$使得$alpha_{i_{0}}^{ast}in (0,C)$(或者$eta_{i_{0}}^{ast}in (0,C)$), 则我们可以得到:
egin{equation}b^{ast}=y_{i_{0}}-w^{ast}cdot x_{i_{0}}-epsilon( ext{或:} b^{ast}=y_{i_{0}}-w^{ast}cdot x_{i_{0}}+epsilon)end{equation})
4.对偶问题的求解
我们已经看到了,无论是支撑向量分类还是支撑向量回归,关键都在于如何求解对偶问题的最优解, 一般采用序列最小最优化算法(SMO), 下次有机会再总结。
5. 参考文献:
1. 周志华,《机器学习方法》,清华大学出版社,2016.
2. 李航,《统计学习方法》, 清华大学出版社,2012
以上是关于支撑向量机 SVM的主要内容,如果未能解决你的问题,请参考以下文章