机器学习----SVM(1)
2018-03-18 21:36
197 查看
机器学习----SVM(1)
转载 2016年05月04日 15:39:49以前觉得SVM没有什么,就是计算一个分类超平面而已,但是最近深入学习研究,才发现里面的理论太深了。不过还好,有位大牛的博客帮了很大的忙。强烈推荐大家仔细研究这篇博客,我的博客是在我对了这篇博客后自己的理解,也可以说是大牛博客的精简版。大牛的博客分成了三部分,层层递进。为了便于大家理解,我将三部分分成了三篇博客,同时对原博客的讲解内容和顺序做了一些调整。说了这么多还没给出大牛的博客链接:
http://blog.csdn.net/v_july_v/article/details/7624837
本篇博客是大牛博客第一层次的讲解,主要让读者对SVM有个宏观上的了解。
1、先从一个简单的线性分类的例子开始。 如下图所示,现在有一个二维平面,平面上有两种不同的数据,分别用圈和叉表示。由于这些数据是线性可分的,所以可以用一条直线将这两类数据分开,这条直线就相当于一个超平面,超平面一边的数据点所对应的y全是 -1 ,另一边所对应的y全是1。
这个超平面可以用分类函数
表示,当f(x) 等于0的时候,x便是位于超平面上的点,而f(x)大于0的点对应 y=1 的数据点,f(x)小于0的点对应y=-1的点,如下图所示:
注意:1、有的资料上定义特征到结果的输出函数
,与这里定义的
实质是一样的。为什么?因为无论是
,还是
,不影响最终优化结果。下文你将看到,当我们转化到优化
的时候,为了求解方便,会把yf(x)令为1,即yf(x)是y(w^x + b),还是y(w^x - b),对我们要优化的式子max1/||w||已无影响。2、借由上图先引入一个概念支持向量,SVM叫支持向量机,那什么是支持向量呢?上如中再两条虚线上的数据点就是支持向量。
2、如何确定这个超平面呢?
从直观上而言,这个超平面应该是最适合分开两类数据的直线。而判定“最适合”的标准就是这条直线离直线两边的数据的间隔最大。所以,得寻找有着最大间隔的超平面。
2.1函数间隔和几何间隔概念
在具体讲解怎么确定超平面之前,先来了解两个概念函数间隔和几个间隔。而理解这两个概念,先来回归一下点到平面的距离公式:
如果平面已经确定,也就是平面公式的系数已经确定,则点到平面的距离可以用|Ax + By + Cz + D|来表示。
2.1.1 函数间隔
有了上面的点到平面的距离公式,我们引入函数间隔就容易许多了。在超平面w*x+b=0确定的情况下,|w*x+b|能够表示点x到距离超平面的远近,而通过观察w*x+b的符号与类标记y的符号是否一致可判断分类是否正确,所以,可以用(y*(w*x+b))的正负性来判定或表示分类的正确性。于此,我们便引出了函数间隔(functional margin)的概念。 定义函数间隔(用
表示)为:
而超平面(w,b)关于T中所有样本点(xi,yi)的函数间隔最小值(其中,x是特征,y是结果标签,i表示第i个样本),便为超平面(w, b)关于训练数据集T的函数间隔:
= min
i (i=1,...n)注意:函数间隔存在一个问题,就它具有任意的伸缩性。如果我们将w,b分别扩大2倍,变成2w,2b,超平面并没有变化,但是函数间隔却扩大了2倍。换句话说,在超平面不变的情况下,函数间隔可以任意伸缩。这样具有任意伸缩性的距离并不适合我们度量点到超平面的距离,因此引入了下面的几何间隔。2.1.2 几何间隔假定对于一个点 x ,令其垂直投影到超平面上的对应点为 x0 ,w 是垂直于超平面的一个向量,
为样本x到超平面的距离,如下图所示:
根据高中平面几何知识,有
其中||w||为w的二阶范数(范数是一个类似于模的表示长度的概念),
是单位向量(一个向量除以它的模谓之单位向量)。
注意:几何距离就是上面公式中的系数r,我们要导出r=()的结果。推到过程如下
由于 是超平面上的点,满足 ,代入超平面的方程
,可得
,即
。随即让此式
的两边同时乘以
,再根据
和
,即可算出:
为了得到
的绝对值,令
乘上对应的类别 y,即可得出几何间隔(用
表示)的定义:
从上述函数间隔和几何间隔的定义可以看出:几何间隔就是函数间隔除以||w||,而且函数间隔y*(wx+b) = y*f(x)实际上就是|f(x)|,只是人为定义的一个间隔度量,而几何间隔|f(x)|/||w||才是直观上的点到超平面的距离。
3、最大间隔分类器的定义 对一个数据点进行分类,当超平面离数据点的“间隔”越大,分类的确信度(confidence)也越大。所以,为了使得分类的确信度尽量高,需要让所选择的超平面能够最大化这个“间隔”值。这个间隔就是下图中的Gap的一半,即我们上面提到的几何间隔。
于是最大间隔分类器(maximum margin classifier)的目标函数可以定义为:
同时需满足一些条件,根据间隔的定义,有
其中,s.t.,即subject to的意思,它导出的是约束条件。 回顾下几何间隔的定义
可知:如果令函数间隔
等于1则有
= 1 / ||w||且
,从而上述目标函数转化成了
这个目标函数便是在相应的约束条件
下,最大化这个1/||w||值,而1/||w||便是几何间隔
。 注意:上面我们令
等于1,但是为什么能这样做呢?
1.对于一个线性可分问题,任意给定一个分类正确的超平面,都有一个最小函数间隔,为了方便书写,记做r^,这个r^,是方向向量w和截距b的函数,因为分类的点是给定的;
2.也就是说r~=r^ (w,b),而求最大几何间隔的问题就是要求出一组w,b使得r^ /||w||,最大。此时约束的条件是任意给定的一个点的函数间隔大于等于r^,也就是yi(w xi+b)>=r^ ;
3.下面做一个变量替换,用w’ = w/r^,和b' = b/r^代替上面的w和b,这样的新变量仍旧是w和b的函数,所以最大化仍然可以进行。于是,把这两个新的变量代入到原来的约束最大化问题中,就变成了,在yi(w' xi+b')>=1的条件下,求使得1/||w'||最大化的w,b。
4.这样一来,通过一个变量替换,关于w和b的问题等价地换成了w',b' 的问题,这就是支持向量机所采用的形式。更直白的解释是因为函数间隔可以任意伸缩,因此将最小函数间隔任意扩大或者缩小一定倍数是不影响问题的,从而可以直接令最小值为1 .但为什么是1而不是2呢?其实不过是在不等式的两边同时除以一个因子:r^(当然,这个因子是 > 0的)。即:yi(w xi+b)>=r^ =》 yi(w/r^ xi+b/r^)>=r^/r^,而得到yi(w' xi+b')>=1。
更详细的讲解请看原博客评论42楼。
如下图所示,中间的实线便是寻找到的最优超平面(Optimal Hyper Plane),其到两条虚线边界的距离相等,这个距离便是几何间隔
,两条虚线间隔边界之间的距离等于2
,而虚线间隔边界上的点则是支持向量。由于这些支持量刚好在虚线间隔边界上,所以它们满足
(还记得我们把 functional margin 定为 1 了吗?上节中:处于方便推导和优化的目的,我们可以令
=1),而对于所有不是支持向量的点,则显然有
。
相关文章推荐
- matlab 中机器学习工具箱中分类器下介绍SVM新函数一个例子
- Coursera-吴恩达-机器学习-(编程练习6)SVM(对应第7周课程)
- [机器学习]SVM原理
- 机器学习之支持向量机(SVM)
- 机器学习之深入理解SVM
- 机器学习-20:MachineLN之SVM(2)
- 【机器学习实战-python3】支持向量机(Support Vecrtor Machines SVM)
- 机器学习(六)支持向量机svm初级篇
- 机器学习中的算法(2)-支持向量机(SVM)基础
- 机器学习实战之SVM
- 机器学习中的算法(2)-支持向量机(SVM)基础
- 机器学习(六):SVM及相关问题
- Python机器学习及实践——基础篇3(SVM)
- 数学之路(3)-机器学习(3)-机器学习算法-SVM[2]
- 斯坦福大学(吴恩达) 机器学习课后习题详解 第七周 SVM
- 机器学习 之 SVM VC维度、样本数目与经验风险最小化的关系
- 机器学习之SVM(二) 非线性情况
- 林轩田--机器学习技法--SVM笔记1--线性支持向量机(linear+SVM)
- 【opencv机器学习】支持向量机SVM的程序
- 转:机器学习中的算法(2)-支持向量机(SVM)基础