码迷,mamicode.com
首页 > 其他好文 > 详细

支持向量机(SVM)

时间:2017-09-10 17:37:09      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:最小化   目的   alpha   text   规划   svm   最小   二次   get   

支持向量机是一种分类模型。模型认为,离分类超平面越远的点,判定结果越准确,所以模型的训练目标就是让离分类超平面最近的样本点距离最大。我们先从最基本的线性可分支持向量机(硬间隔支持向量机)开始推导,之后再推广到可以容纳一定误分类点的线性支持向量机(软间隔支持向量机),最后介绍核函数与 SMO 算法。

支持向量机解决的问题

假设我们正在进行一个二分类问题,并且已经画好了一条分类线。如下图,现在我们有 3 个点(ABC)等待判断。

技术分享

虽然按照我们的分类线,这 3 个点都应该属于 X 类。可是 A 点离分类线最远,应该来说我们将它分为 X 类的把握最大;而 C 点离分类线很近,万一分类线出现了一些偏差,C 点的判定结果可能就改变了,这样说来我们将它分为 X 类的把握最小;而 B 点位于 AC 两点中间,分类正确的把握也位于 AC 之间。

这样看来,一个点离分类超平面越远,该点就越不容易因为分类超平面的误差而被误判,我们对该点的分类结果也就越稳定。如果我们能尽量增大样本点到分类超平面的距离,是不是就能尽量增大训练样本正确分类的把握呢?

支持向量机就是来解决这个问题的。支持向量机的训练目的就是找到一个分类超平面,使得样本点中离分类超平面最近的点距离最大。

线性可分支持向量机

接下来我们来推导线性可分支持向量机的算法。在推导过程中,我们假设存在一个超平面,能够将所有样本点正确分类。

设分类超平面为 $w^Tx+b = 0$,根据几何知识我们知道,对于样本点 $(x^{(i)},y^{(i)})$(其中 $y^{(i)} = \pm 1$ 表示两个类别),$y^{(i)}(w^Tx^{(i)}+b)$ 的值越大,则样本点距离分类超平面越远。我们称这个值为样本点的函数间隔。容易发现,函数间隔大于 0 的点就是被正确分类的点,小于 0 的点就是被错误分类的点,而等于 0 的点就是位于分类超平面上的点。

但用函数间隔作为样本点的度量是不准确的,因为只要把分类超平面变成 $kw^Tx+kb=0$,那么样本点的函数间隔就会变为原来的 $k$ 倍,而样本点距离分类超平面的远近没有任何改变。所以我们引入样本点的几何间隔 $\frac{1}{|w|}y^{(i)}(w^Tx^{(i)}+b)$ 作为度量样本点距分类超平面远近的值。由几何知识易得,几何间隔就是样本点到分类超平面的距离。

支持向量机的训练目标是最大化最小的几何间隔,我们容易写出以下目标函数:$$\max_{w,b,\gamma} \gamma \\ \text{s.t.} \quad \frac{1}{|w|}y^{(i)}(w^Tx^{(i)}+b) \ge \gamma$$ 糟糕的是,限制条件并不是凸函数,没法用凸优化的方式解决。

由于函数间隔并不影响我们的优化目标(只要对 $w$ 和 $b$ 进行缩放,就能获得任意的函数间隔),我们完全可以令最小的函数间隔等于 1。这样,最小的几何间隔就变为了 $\frac{1}{|w|}$。我们可以改写目标函数:$$\max_{w,b}\frac{1}{|w|} \\ \text{s.t.} \quad y^{(i)}(w^Tx^{(i)}+b) \ge 1$$ 最大化 $\frac{1}{|w|}$,就相当于最小化 $\frac{1}{2}|w|^2$,所以我们可以继续改写目标函数为 $$\min_{w,b}\frac{1}{2}|w|^2 \\ \text{s.t.} \quad y^{(i)}(w^Tx^{(i)}+b) \ge 1$$ 现在目标函数是凸函数,限制函数是仿射函数(也是凸函数)了。很显然,这是一个二次规划(quadratic programming)问题,我们完全可以用凸优化中解决 QP 问题的方法来求出这个函数的解。不过,针对支持向量机要优化的问题,我们还可以继续推导出一个比一般解决 QP 问题效率更高的方法。

 

我们利用拉格朗日对偶,将优化目标写成原问题和对偶问题的形式。

原问题:$$\min_{w,b}\max_{\alpha}\frac{1}{2}w^Tw + \sum_{i=1}^m \alpha_i(1-y^{(i)}(w^Tx^{(i)}+b)) \\ \text{s.t.} \quad \alpha_i \ge 0$$

对偶问题:$$\max_{\alpha}\min_{w,b}\frac{1}{2}w^Tw + \sum_{i=1}^m \alpha_i(1-y^{(i)}(w^Tx^{(i)}+b)) \\ \text{s.t.} \quad \alpha_i \ge 0$$

由于我们假设能正确分类所有样本点的超平面存在,所以的确有一组 $w$ 和 $b$ 使得最小的函数间隔 $y^{(i)}(w^Tx^{(i)}+b) > 0$,对 $w$ 和 $b$ 进行放缩就能保证最小的函数间隔 $y^{(i)}(w^Tx^{(i)}+b) > 1$。也就是说,这个问题满足 Slater‘s condition,可以利用 KKT 条件求出问题的解。

根据 KKT 条件,我们有:$$\nabla_w = w - \sum_{i=1}^m\alpha_i y^{(i)}x^{(i)} = 0 \\ \nabla_b = -\sum_{i=1}^m\alpha_i y^{(i)} = 0$$ 代入对偶问题的式子我们有:$$\max_{\alpha}-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy^{(i)}y^{(j)}\langle x^{(i)},x^{(j)}\rangle + \sum_{i=1}^m\alpha_i \\ \text{s.t.} \quad \alpha_i \ge 0 \\ \sum_{i=1}^m\alpha_i y^{(i)} = 0$$ 其中 $\langle x^{(i)},x^{(j)}\rangle$ 表示点积。

我们可以通过一个较为高效的算法(稍后叙述)解决上面这个优化问题,求出 $\alpha$ 的最优值。

令 $g_i(x) = 1-y^{(i)}(w^Tx^{(i)}-b)$。由 KKT 条件可知,$\alpha_ig_i(x) = 0$。也就是说,若 $\alpha_i > 0$,必然有 $g_i(x) = 0$,即第 $i$ 个样本点是距离分类超平面最近的样本点之一,我们称这样的样本点为支持向量;对于一个不是支持向量的样本点,由于 $g_i(x) < 0$,必须要有 $\alpha_i = 0$。

求出 $\alpha$ 的值后,我们代入由 KKT 条件推出的式子,即可获得 $w$ 的值。将 $w$ 用 $\alpha$ 表示后代入分类超平面的式子,则分类超平面为 $$\sum_{i=1}^m\alpha_iy^{(i)} \langle x^{(i)},x \rangle + b = 0$$ 而对于支持向量来说,由于 $$y^{(i)}(w^Tx^{(i)}+b) = 1$$ 那么我们任意选择一个支持向量,即可算出 $$y^{(i)}b = 1 - y^{(i)}\sum_{j=1}^m\alpha_jy^{(j)} \langle x^{(j)}, x^{(i)} \rangle$$ 由于 $(y^{(i)})^2 = 1$,两边同乘 $y^{(i)}$ 有 $$b = y^{(i)} - \sum_{j=1}^m\alpha_jy^{(j)} \langle x^{(j)}, x^{(i)} \rangle$$ 我们就得到了最优的分类超平面。

线性支持向量机

在大部分情况下,数据都不是完全线性可分的,可能存在部分特例(outlier)。此时我们可以使用机器学习中的经典套路——正则化让模型容忍一定的分类错误。

引入正则化项 $\xi$ 与系数 $C$,我们将优化目标改为 $$\min_{w,b,\xi}\frac{1}{2}|w|^2 + C\sum_{i=1}^m\xi_i \\ \text{s.t.} \quad y^{(i)}(w^Tx^{(i)}+b) \ge 1 - \xi_i \\ \xi_i \ge 0$$ 直观地说,我们可以付出一定的代价 $C\xi_i$,让某些样本点的函数间隔小于 1,甚至为负(即可以容忍部分样本点的分类错误)。$C$ 就是调节模型对分类错误容忍程度的系数。

我们同样可以使用拉格朗日对偶求出这个优化问题的解。同样将问题写成原问题和对偶问题的形式。

原问题:$$\min_{w,b,\xi}\max_{\alpha,\beta}\frac{1}{2}|w|^2+C\sum_{i=1}^m\xi_i+\sum_{i=1}^m\alpha_i(1-\xi_i-y^{(i)}(w^Tx^{(i)}+b)) - \sum_{i=1}^m\beta_i\xi_i \\ \text{s.t.} \quad \alpha_i \ge 0 \quad \beta_i \ge 0$$

对偶问题:$$\max_{\alpha,\beta}\min_{w,b,\xi}\frac{1}{2}|w|^2+C\sum_{i=1}^m\xi_i+\sum_{i=1}^m\alpha_i(1-\xi_i-y^{(i)}(w^Tx^{(i)}+b)) - \sum_{i=1}^m\beta_i\xi_i \\ \text{s.t.} \quad \alpha_i \ge 0 \quad \beta_i \ge 0$$

同样容易验证这个问题满足 Slater‘s condition,利用 KKT 条件仍有 $$\nabla_w = w - \sum_{i=1}^m\alpha_iy^{(i)}x^{(i)} = 0 \\ \nabla_b = -\sum_{i=1}^m\alpha_iy^{(i)} = 0 \\ \nabla_{\xi_i} = C - \alpha_i - \beta_i = 0$$ 由第三个式子,再加上 $\alpha_i \ge 0$ 与 $\beta_i \ge 0$ 可以看出 $0 \le \alpha_i \le C$。将上面的式子代回对偶问题有 $$\max_{\alpha}-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy^{(i)}y^{(j)}\langle x^{(i)},x^{(j)}\rangle + \sum_{i=1}^m\alpha_i \\ \text{s.t.} \quad 0 \le \alpha_i \le C \\ \sum_{i=1}^m\alpha_i y^{(i)} = 0$$ 和线性可分支持向量机所导出的问题相比,只是 $\alpha_i$ 的取值范围有所变化。

 

(待补充- -)

支持向量机(SVM)

标签:最小化   目的   alpha   text   规划   svm   最小   二次   get   

原文地址:http://www.cnblogs.com/tsreaper/p/svm.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!