sy1110的个人博客分享 http://blog.sciencenet.cn/u/sy1110

博文

支持向量机: Maximum Margin Classifier

已有 4818 次阅读 2013-10-10 09:50 |个人分类:学习笔记|系统分类:科研笔记| svm

   最开始接触SVM是去年毕设的时候,那时候借用别人的神经网络来训练一个分类器,其实自己啥都不知道,全当一个黑盒子来使用。后来又听别人说我的那个问题比较简单,SVM完全就能解决,效果还会更好。。。。于是乎,对这个神秘的"机器"有种莫名的好奇,但是也只限听说过SVM。 因为一直都不是传统意义上的IT女,所以一直没有深入去了解。最近在看ML的东东,真正接触到了SVM,想写点东西,仅仅为理清自己的木鱼脑壳,加深自己对SVM的理解,和初入门的小白们探讨探讨, 跪求各位大神的批评指导。不涉及太多数学的东西,看了会晕的(你们懂的)~~

   支持向量机: support vector machine简称SVM .  虽说是machine,但是SVM并不是一头机器,而是一种算法,或者,确切来说是一类算法。SVM 一直被认为是效果最好的现成可用的分类算法之一。我们可以用这个算法来分类,但也可以用来做回归。我还没研究过回归,暂且说说分类器吧。

   讲到SVM,首先要讲到线性分类器,什么是线性分类器呢? 这里我们考虑的是一个两类的分类问题,数据点用 x 来表示,这是一个 n 维向量(我理解的是N维空间里的一个点),而类别用 y 来表示,可以取 1 或者 -1 ,分别代表两个不同的类(有些地方会选 0 和 1 ,当然其实分类问题选什么都无所谓,只要是两个不同的数字即可,不过这里选择 +1 和 -1 是为了方便 SVM 的推导,后面就会明了了)。一个线性分类器就是要在 n 维的数据空间中找到一个超平面,其方程可以表示为

$w^{T}x+b=0$

   一个超平面,在二维空间中的例子就是一条直线,在三维空间,就是一个平面,在N维空间中就是一个N次的超平面。我们希望的是,通过这个超平面可以把两类数据分隔开来,比如,在超平面一边的数据点所对应的 y 全是 -1 ,而在另一边全是 1 。具体来说,我们令 $f(x) =w^{T} +b$ ,显然,如果 $f(x)=0$ ,那么 x 是位于超平面上的点。我们不妨要求对于所有满足 $f(x)<0$ 的点,其对应的 y 等于 -1 ,而 $f(x) >0$ 则对应 y=1的数据点。当然,有些时候(或者说大部分时候)数据并不是线性可分的,这个时候满足这样条件的超平面就根本不存在,不过关于如何处理这样的问题那是后话了 ,这里先从最简单的情形开始推导,就假设数据都是线性可分的,亦即这样的超平面是存在的。

   如图那条直线就是一个超平面 $w^{T}x +b=0$ ,能将圈圈和叉叉分开.位于左下边的 $f(x)<0$ , 我们看做y= -1类别, 同理,右上为y=1类别. 那当 $f(x)=0" style="font-size:16px;$ , 则很难办了,包括 $f(x)" style="font-size:16px;$ 的绝对值很小的情况,我们都很难处理,因为细微的变动(比如超平面稍微转一个小角度)就有可能导致结果类别的改变。理想情况下,我们希望 $f(x)" style="font-size:16px;$ 的值都是很大的正数或者很小的负数,这样我们就能更加确信它是属于其中某一类别的。

   直观上来说,由于超平面是用于分隔两类数据的,越接近超平面的点越“难”分隔,因为如果超平面稍微转动一下,它们就有可能跑到另一边去。反之,如果是距离超平面很远的点,例如图中的右上角或者左下角的点,则很容易分辩出其类别。这样我们就需要在给定的条件(训练数据点)下找到一个超平面使得距离这个超平面最近的点(支持向量,我们后面讲)间隔最大.

   一般,只要满足线性可分的条件,我们都能找到无穷多个超平面能将两类数据分开. 感知机利用误差最小的策略,求得分离超平面,但是解有无穷多个.线性可分支持向量机利用间隔最大化求最优分离超级平面, 这样解有且只有一个.


函数间隔和几何间隔(functional margin and  geometrical margin )

   定义超平面 $(w,b)$ ,关于样本点 $(x_{i},y_{i})$ 的函数间隔为

$\widehat{\gamma } =y_{i}(w\cdot x_{i}+b)$

   定义超平面关于训练数据集T的函数间隔为

$\widehat{\gamma }=\underset{i=1,..N}{min}\widehat{\gamma _{i}}$

   几何间隔即为规范化之后的函数间隔:

$\widehat{\gamma _{i}}=y_{i}(\frac{w}{||w||}\cdot x_{i} +\frac{b}{||w||})$


   几何间隔是不会随着 $w,b$ 成比例增加而改变的. 这就是下面提到的间隔最大化是求几何间隔的最大的原因.


间隔最大化

   所谓的间隔最大化就是正确找出划分正确且几何间隔最大的分离超平面. 其直观解释是:对训练数据集找出几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类. 这里充分大的确信度代表尽可能的让训练样本点远离超平面.

   这样整个训练分类器的过程就变成了调整 $w,b$ ,使得 $\widehat{\gamma }$ 最大化. 也就是分类器的目标函数是

$\underset{w,b}{max} \gamma$

s.t     $y_{i}(\frac{w}{||w||}\cdot x_{i}+\frac{b}{||w||}) \geq \gamma ,i=1,2,...N$

   即最大化超平面(w,b)关于训练数据集的几何间隔 $\gamma$ , 约束条件表示超平面(w,b)关于每个训练样本点的几何间隔大于等于 $\gamma$ .

   设函数间隔 $\widehat{\gamma }$ ,我们改写这个目标函数为

$\underset{w,b}{max} \frac{\widehat{\gamma }}{||w||}$

s.t   $y_{i}(w\cdot x_{i}+b)\geq \gamma , i=1,2,...N$

   这一改变对目标函数以及约束条件都没影响,也就是说,它产生了一个等价最优化问题,为的只是更好优化. 这样我们取 $\widehat{\gamma }$ =1, 得到求 $\frac{1}{||w||}$ 最大化.  我们知道 $\frac{1}{||w||}$ 最大化与 $\frac{1}{2}||w||^{2}$ 最小化是等价的,于是终于得到线性可分支持向量机学习的最优化问题.

$\underset{w,b}{min} \frac{1}{2}||w||^{2}$

s.t $y_{i}(w\cdot x_{i}+b)-1\geq 0, i=1,2,...N$

   这就变成一个凸二次规划(QP)问题啦.剩下来的就是怎么去求最优的问题咯~~  我将在下一节和大家讨论分享.


支持向量和间隔边界

   之前提到的,训练数据集的样本点中离分离超平面距离最近的样本点的实例就叫支持向量(support vector),它是使得约束条件等号成立的点.

$y_{i}(w\cdot x_{i}+b)-1=0$

   通过支持向量且与分离超平面平行的超平面H1,H2,他们叫做间隔边界.


   在决定分离超平面时只有支持向量起作用,而其他样本实例点都不起作用. 所以这种算法被成为支持向量机.由于支持向量很少,所以支持向量机由很少的"重要的"训练样本确定. 这就是SVM在小数据集上效果也相对较好d额原因.



PS: 博客内容是翻阅各种书籍,博客,然后加上自己的理解得来的, 如有雷同,完全不是巧合.....











https://wap.sciencenet.cn/blog-1066631-731466.html

上一篇:connection---Before Sunrise
收藏 IP: 106.120.138.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-10 17:25

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部