支持向量机SVM(2)线性支持向量机、软间隔最大化

1 原理

1) 背景

线性可分支持向量机基于硬间隔最大化,所谓硬间隔最大化,我理解的就是指这个间隔最大化是被严格要求的,不允许任何例外的样本点跨过间隔边界,因此这种方法是不适用于线性不可分数据的,因为约束条件y_i(w^Tx_i+b)\geq1是不能完全成立的,这样一来线性可分支持向量机的适用性就大大降低了,因此我们需要线性支持向量机和软间隔最大化。

2) 原理

首先我们需要定义这里的线性不可分的含义,这里的线性不可分并不是指完全的线性不可分,而是指一批训练数据中有少部分的异常点,如果剔除这些异常点,剩下的大部分训练数据是线性可分的,即相当于是本来线性可分的数据中加入了一些噪音,噪音可能产生下图两种负面影响:

根据背景中的分析我们知道,对于这样的数据,线性可分支持向量机的问题是约束y_i(w^Tx_i+b)\geq1太“硬”,太严格,数据无法满足,那么如果我们把约束放宽松一点呢?我们把约束变为:

y_i(w^Tx_i+b)\geq1-\xi_i,\xi_i\geq 0

式中,\xi_i是松弛变量,顾名思义它将约束条件变得宽松了,这样那些异常点也可以满足约束了,但是其\xi_i会比较大,也就是要多“宽松”一些,如下图所示,松弛变量表示了异常点到间隔边界的函数间隔:

问题是,约束变得宽松了怎么能保证分类的效果呢?要知道支持向量机的优势就是其严格的约束使得分类超平面与两个类别间隔最大且相等,为了弥补约束放松的缺点,引入“代价”\xi_i,即放松了多少约束,就有承受多大的代价,因此目标函数变为:

\min_{w,b,\xi}\;\frac{1}{2}||w||_2^2+C\sum_{i=1}^{m}\xi_i

s.t. \; y_i(w^Tx_i+b)\geq1-\xi_i,\;\xi_i\geq 0 ,\;\; i=1,2,...,m

式中,C>0是惩罚参数,C越大对异常点的惩罚越大,约束越严格,C的具体取值由实际应用决定。这里的目标函数既要使\frac{1}{2}||w||_2^2尽量小即间隔尽量大,又要使满足约束的样本尽量多即误分类点尽量少,这两个目标使互相矛盾的,由C来控制二者的强弱关系。

综上所述,对于有噪音的线性不可分数据,我们选择放松其约束,相对于基于严格约束的硬间隔最大化来说,这种做法称为软间隔最大化,解决这种线性不可分数据的分类问题,基于软间隔最大化的支持向量机称为线性支持向量机(看名字也能感受到线性支持向量机应该包含线性可分支持向量机,线性可分支持向量机是松弛变量都为0的线性支持向量机特例)。

线性支持向量机模型:

f(x)=sign(w^*x+b^*)

w^*x+b^*=0为决策超平面,线性支持向量机看起来与线性可分支持向量机一样,只是在决策超平面的计算思路上有些不同。

2 支持向量机模型求解

1)目标函数

\min_{w,b,\xi}\;\frac{1}{2}||w||_2^2+C\sum_{i=1}^{m}\xi_i

s.t. \; y_i(w^Tx_i+b)\geq1-\xi_i,\;\xi_i\geq 0 , i=1,2,...,m

2)转化为对偶问题

转化过程与线性可分支持向量机是一样的,首先是拉格朗日乘子法:

L(w,b,\xi,\lambda,\mu) = \frac{1}{2}||w||_2^2 +C\sum\limits_{i=1}^{m}\xi_i - \sum\limits_{i=1}^{m}\lambda_i[y_i(w^Tx_i + b) - 1 + \xi_i] - \sum\limits_{i=1}^{m}\mu_i\xi_i

目标函数的优化转变为:

\min_{w,b,\xi}\; \max_{\lambda,\mu} L(w,b,\xi,\lambda,\mu)

通过拉格朗日对偶将其转化为等价的对偶问题:

\max_{\lambda,\mu}\;\min_{w,b,\xi} L(w,b,\xi,\lambda,\mu)

通过求导求里面的极小值部分:

\frac{\partial L}{\partial w} = 0 \;\rightarrow w-{m}\lambda_iy_ix_i=0\;\rightarrow w = \sum\limits_{i=1}^{m}\alpha_iy_ix_i

\frac{\partial L}{\partial b} = 0 \;\rightarrow \sum_{i=1}^m\lambda_iy_i=0

\frac{\partial L}{\partial \xi_i} = 0 \;\rightarrow C-\lambda_i-\mu_i=0

代入原式可得:

\begin{align} J(\lambda,\mu)&=\min_{w,b}\; L(w,b,\xi,\lambda,\mu) \\& = \frac{1}{2}||w||_2^2 +C\sum\limits_{i=1}^{m}\xi_i - \sum\limits_{i=1}^{m}\lambda_i[y_i(w^Tx_i + b) - 1 + \xi_i] - \sum\limits_{i=1}^{m}\mu_i\xi_i   \\&= \frac{1}{2}||w||_2^2 - \sum\limits_{i=1}^{m}\lambda_i[y_i(w^Tx_i + b) - 1 + \xi_i] + \sum\limits_{i=1}^{m}\lambda_i\xi_i \\& = \frac{1}{2}||w||_2^2 - \sum\limits_{i=1}^{m}\lambda_i[y_i(w^Tx_i + b) - 1] \\& = \frac{1}{2}w^T\sum\limits_{i=1}^{m}\lambda_iy_ix_i - w^T\sum\limits_{i=1}^{m}\lambda_iy_ix_i - \sum\limits_{i=1}^{m}\lambda_iy_ib + \sum\limits_{i=1}^{m}\lambda_i \\& = -\frac{1}{2}\sum\limits_{i=1}^{m}\lambda_iy_ix_i^T\sum\limits_{i=1}^{m}\lambda_iy_ix_i - b\sum\limits_{i=1}^{m}\lambda_iy_i + \sum\limits_{i=1}^{m}\lambda_i \\& = -\frac{1}{2}\sum\limits_{i=1,j=1}^{m}\lambda_iy_ix_i^T\lambda_jy_jx_j + \sum\limits_{i=1}^{m}\lambda_i \\& = \sum\limits_{i=1}^{m}\lambda_i - \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\lambda_i\lambda_jy_iy_jx_i^Tx_j \end{align}

以上这些推导的每个步骤处理的原理就不细说了,想弄明白的话可以看上一篇线性可分支持向量机

J(\lambda,\mu)完全是关于参数\lambda,\mu的函数,因此:
\max_{\lambda,\mu}\;\min_{w,b,\xi} L(w,b,\xi,\lambda,\mu) =\max_{\lambda,\mu}\;J(\lambda,\mu)=\max_{\lambda}\;\sum_{i=1}^{m}\lambda_i-\frac{1}{2}\sum_{i=1,j=1}^{m}\lambda_iy_ix_i^T\lambda_jy_jx_j

s.t. \sum_i^m \lambda_iy_i=0,\;C-\lambda_i-\mu_i=0,\;\lambda_i\geq0,\;\mu_i\geq0

转化为:

\min_{\lambda}\;\frac{1}{2}\sum_{i=1,j=1}^{m}\lambda_iy_ix_i^T\lambda_jy_jx_j-\sum_{i=1}^{m}\lambda_i

s.t. \sum_i^m \lambda_iy_i=0,\;0\leq\lambda_i\leq C

与线性可分支持向量机基本上是一样的,只是约束不同,求出上式取得极小值时对应的\lambda向量就可以求出wb了,这里同样需要用到SMO算法来求\lambda

3)线性支持向量机的算法过程

  • 输入:样本T=(x_1,y_1),(x_2,y_2),...,(x_m,y_m)xn维特征向量,y\in[+1,-1]
  • 输出:w,b,支持向量机模型f(x)=sign(w^Tx+b)
  1. 确定惩罚系数C>0,确定目标函数:

\min_{\lambda}\;\frac{1}{2}\sum_{i=1,j=1}^{m}\lambda_iy_ix_i^T\lambda_jy_jx_j-\sum_{i=1}^{m}\lambda_i

s.t. \sum_i^m \lambda_iy_i=0,\;\;0\leq\lambda_i\leq C

  1. 使用SMO优化目标函数,得到对应的λ^*
  2. 根据λ^*找到样本中的共k个支持向量,计算参数w,b

w^* = \sum_{i=1}^{m}λ_i^*y_ix_i

b^*=\frac{1}{k}\sum_i^k (y_i-w^Tx_i)

  1. 得到支持向量机模型f(x)=sign(w^{*T}x+b^*)

注意:
(1)第三步计算参数b的公式

这里的求b公式看起来跟线性可分支持向量是一样的,其实是有区别的,在上一篇中我们说过线性可分支持向量机的b是存在且唯一的,而线性支持向量机的b不唯一,正是因为这里的b是考虑了松弛变量ξ_i的,实际上求出来b_i=b^0+ξ_i,这就是为什么b值有多个,因为不同支持向量的ξ_i是不相等的。

(2)第三步需要找的样本中的支持向量,怎么判断样本点是不是支持向量呢?

我们知道,所谓支持向量,就是最靠近分类超平面的,能够影响我们确定分类超平面的样本点。

我们从代数上理解,在计算超平面参数 w的那个式子可知,只要使λ_i^*>0的样本点就会对超平面参数 w产生影响,即为支持向量,由KKT条件知,λ_i(w^Tx_i+b-1+\xi_i)=0,故此时w^Tx_i+b-1+\xi_i=0,KKT条件中还有一条\mu_i\xi_i=0,所以可知:

  • 0<λ_i<C时,\mu_i=C-λ_i>0,故\xi_i=0,支持向量i不需要松弛变量,即支持向量在间隔边界上,如下图x_1
  • λ_i=C时,\mu_i=C-λ_i=0,故\xi_i>0,支持向量i在间隔边界上之外,如果1>\xi_i>0,则支持向量i还在分类边界与间隔边界之间,还可以被正确分类,如下图x_2;如果\xi_i>1,则到了分类边界另一侧,被错误分类了,如下图x_3

3 从合页损失函数理解线性支持向量机

以上我们讨论的支持向量机的目标函数都是从间隔最大化的角度来理解的,我们还可以通过合页损失函数的角度来理解其目标函数:

\min_{w, b}\;[1-y_i(w \cdot x + b)]_{+} + \lambda ||w||^2

[z]_+=\begin{cases} z,\; z>0 \\ \\ 0 ,\;z\leq 0 \end{cases}

式中,[1-y_i(w \cdot x + b)]_{+}是经验风险,成为称为合页损失函数(hinge loss function);\lambda ||w||^2是L2范数表示的结构风险,也就是正则项。损失函数[1-y_i(w \cdot x + b)]_{+}在样本点(x_i,y_i)被正确分类且函数间隔大于1时值为0,否则损失函数值为1-y_i(w \cdot x + b),这个值是大于0的。

在下图中,绿色的函数即为合页损失函数,因为其形状像一个合页,故名为合页损失函数。下图中还可以看出其他多种模型损失和函数间隔的关系:

  • 对于0-1损失函数,如果正确分类,损失是0,误分类损失1, 如下图黑线,可见0-1损失函数是不可导的;
  • 对于感知机模型,感知机的损失函数是[−yi(w\cdot x+b)]+,这样当样本被正确分类时,损失是0,误分类时,损失是−yi(w\cdot x+b),如下图紫线;
  • 对于逻辑回归最大熵模型对应的对数损失,损失函数是log[1+exp(−y(w\cdot x+b))], 如下图红线所示:
多种损失函数的图像

*图像来自博客刘建平Pinard

4 线性支持向量机小结

线性支持向量机通过软间隔最大化的方式,处理因噪声导致的线性不可分数据的分类问题,究其根本,只是在线性可分数据基础上做了一点妥协,并不是真的可以处理线性不可分数据的分类问题,对于真的非线性可分的问题,应该怎么办呢?我们接下来看看基于核函数的非线性支持向量机。



主要参考

《统计学习方法》李航
刘建平Pinard

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351