SVM支持向量机之了解SVM(一)

转载:
https://blog.csdn.net/ajianyingxiaoqinghan/article/details/72897399
https://blog.csdn.net/v_july_v/article/details/7624837
本文为个人学习所记,详情请移驾转载出处。

支持向量机(Support Vector Machine, SVM),通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。

1、分类标准的起源:Logistic回归

(1) 线性分类器

理解SVM,咱们必须先弄清楚一个概念:线性分类器。
给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。如果用x表示数据点,用y表示类别(y可以取1或者-1,分别代表两个不同的类),一个线性分类器的学习目标便是要在n维的数据空间中找到一个超平面(hyper plane),这个超平面的方程可以表示为:

ωTx+b=0                                                   (1.1)

ωT中的T表示转置;
x:数据点
y:类别(取1或-1)
对于y取1或-1,可能有读者表示有疑问。其实1或-1的分类标准起源于logistic回归。

(2) Logistic回归

Logistic回归目的是从特征学习出一个0/1分类模型。这个模型是将特性的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷。因此,使用logistic函数(或称作sigmoid函数)将自变量映射到(0,1)上,映射后的值被认为是属于y=1的概率。

有假设函数:

hθ(x)=g(θTx)=1/(1+e^(−θTx))                                (1.2)

x:n维数据点;
g:Logistic函数;
θTx:数据点x的特征;

而g(z)=1/(1+e^(−z))的图像如下图1所示。
图1.1 Logistic函数曲线

图1 Logistic函数曲线

从图中可以看出,Logister函数将范围为负无穷到正无穷的自变量z,映射到了区间(0, 1)。
前面提到的假设函数(式1.2),就是类型属于y = 1的概率。

P(y=1|x;θ)=hθ(x)
P(y=0|x;θ)=1−hθ(x)                                          (1.3)

这样,当我们要判别一个新来的特征属于哪个类时,只需求hθ(x)即可,若hθ(x)大于0.5,数据点就是y=1的类;反之,属于y=0类。

注:hθ(x)只与θTx有关

θTx>0时,则hθ(x)>0.5,即g(z)只是用来映射;
θTx≫0时,则hθ(x)=1;θTx≪0时,则hθ(x)=0;
如果我们只从特征θTx出发,那么我们所构建的模型的目标,就是让训练数据中,y=1的特征θT≫0,且y=0的特征θT≪0。Logistic回归,就是要学习得到θ,使得正例的特征远大于0,负例的特征远小于0,而且要在全部训练实例上达到这个目标。

(3) Logistic回归变形
为了后面的使用方便,我们这里对Logistic回归进行变形。
首先,将使用的结果标签y=0与y=1替换为y=−1与y=1。展开特征θTx,如下式:

θTx=θ0+θ1x1+θ2x2+...+θnxn     (x0=1)                         (1.4)

然后将上式(1.4)中的θ0替换为b,最后将后面的θ1x1+θ2x2+…+θnxnθ1x1+θ2x2+…+θnxn替换为ωTx。如此,则得到了:

θTx=ωTx+b                                                    (1.5)

也就是说,除了分类值y,由y=0变为y=−1之外,线性分类函数与Logistic回归的形式hθ(x)=g(θTx)=1/(1+e^(−θTx))没有区别。
进一步,我们可以将假设函数hω,b(x)=g(ωTx+b)中的g(z)函数做一个简化,将其简单映射到y=−1与y=1上。映射关系如下:

   g(z)=  1,   z≥0
   g(z)= −1,   z<0                                           (1.6)

2、线性分类的一个例子

(1) 线性分类举例

下面举个简单的例子。如下图2所示,现在有一个二维平面,平面上有两种不同的数据,分别用圈和叉表示。由于这些数据是线性可分的,所以可以用一条直线将这两类数据分开,这条直线就相当于一个超平面,超平面一边的数据点所对应的y全是-1 ,另一边所对应的y全是1。
在这里插入图片描述

图2 二维平面线性分类

这个超平面可以用分类函数f(x)=ωTx+b表示,当f(x)等于0的时候,x便是位于超平面上的点,而f(x)大于0的点对应y=1的数据点,f(x)小于0的点对应y=−1的点。

在这里插入图片描述
图3 二维平面超平面分类

换言之,在进行分类的时候,遇到一个新的数据点x,将x代入f(x)中。如果f(x)小于0,则将x的类别赋为-1;如果f(x)大于0,则将x的类别赋为1。
注:
有的资料定义特征到结果的输出函数为u=ω→⋅x→−b(后文也有用到),与这里定义的f(x)=ωTx+b本质上是一样的。
为什么呢?因为无论是u=ω→⋅x→−b,还是f(x)=ωTx+b,都不影响最终的优化结果。
下文你将看到,当我们转化到优化目标函数max(1/∥ω∥),s.t.,yi(ωTxi+b,i=1,…,n)的时候,为了求解方便,我们会把yf(x)令为1。即yf(x)无论是y(ωT+b),还是y(ωT−b),对我们要优化的目标函数max(1/∥ω∥)已经没有影响。

(2) y的取值意义

在July大神的博客中,有人问:SVM函数间隔中, γ^=y(wTx+b)=yf(x)中的y是只取1和-1 吗?y的唯一作用就是确保函数间隔的非负性?
此处总结July博客下面评论中的解释如下:

这个问题将问题搞混了。y是个分类标签,二分时,y就取了两个值,而刚好取了-1和1。只是因为用超平面分类时,不同的类中的点的函数值刚好有不同的符号,所以这里就用符号来进行了分类。
具体阐述如下:
1.对于二类问题,因为y只取两个值,这两个是可以任意取的,只要是取两个值就行;
2.支持向量机去求解二类问题,目标是求一个特征空间的超平面;而超平面分开的两类对应于超平面的函数值的符号是刚好相反的;
3.基于上述两种考虑,为了使问题足够简单,我们取y的值为1和-1;
4.在取定分类标签y为-1和1之后,一个平面正确分类样本数据,就相当于用这个平面计算yf(x)>0;
5.并且这样一来,yf(x)也有了明确的几何含义;

总而言之要明白,二类问题的标签yy是可以取任意两个值的,不管取怎样的值对于相同的样本点,只要分类相同,所有的y的不同取值都是等价的。之所以取某些特殊的值,只是因为这样一来计算会变得方便,理解变得容易。正如July大神的朋友张磊所言,svm中y取1或-1的历史原因是因为感知器最初的定义,实际取值可以任意,总能明确表示输入样本是否被误分,但是用+1、-1可以起码可以是问题描述简单化、式子表示简洁化、几何意义明确化。
举个例子:如果取y为1与2(比如原来取-1的现在取1,原来取1的现在取2 ),那么分类正确的判定标准就变成了(y−1.5)⋅f(x)>0。所以取1和-1只是为了计算简单方便,没有实质变化,更非一定必须取一正一负。

接下来的问题是,如何确定这个超平面呢?从直观上而言,这个超平面应该是最适合分开两类数据的直线。而判定“最适合”的标准就是这条直线离直线两边的数据的间隔最大。所以,得寻找有着最大间隔的超平面。

3、函数间隔与几何间隔

(1) 函数间隔(Functional Margin)

在超平面ωTx+b=0确定的情况下,|ωTx+b|能够表示点x到超平面的距离远近,而通过观察ωTx+b的符号与类型标记yy符号是否一致,可以判断分类是否正确。
所以,我们可以用y⋅(ωT+b)的正负性来判定或表示分类的正确性。所以我们便在此处引出了函数间隔(Functional Margin)的概念。
定义函数间隔如下所示:

γ^=y(ωTx+b)=yf(x)                                  (3.1)

式(3.1)中参数含义如下:
x:特征;
y:结果标签;
i:表示第i个样本;
而超平面(ω,b)关于训练数据集T中所有样本点(xi,yi)的函数间隔最小值,便成为超平面(ω,b)关于T的函数间隔:

γ^=minγi^(i=1,...n)                                (3.2)

(2) 几何间隔(Geometrical Margin)

上面给出了函数间隔的定义,但这样定义的函数间隔有问题。比如成比例的改变ω,b(如将他们都增大2倍),则函数间隔f(x)的值变成了原来的2倍,但此时超平面却没有改变。所以只有函数间隔远远不够。
事实上,我们可以对法向量ω加些约束条件,从而引出真正定义点到超平面的距离–几何间隔(geometrical margin)的概念。
假定对于一个点x,令其垂直投影到超平面上的对应点为x0,ω是垂直于超平面的一个向量,为样本x到超平面的距离,如下图4所示:

在这里插入图片描述
图4 点xx在超平面的投影x0x0

根据平面几何知识,有:

x=x0+γω/∥ω∥                                       (3.3)

上式(3.3)中参数说明如下:
∥ω∥:ω的二阶范数,是一个类似于模的表示长度的概念;
例如有向量ω={a,b,c},则∥ω∥= √a^ 2 + b^ 2 + c^ 2;
ω/∥ω∥是单位向量,即一个向量除以它的模;
又由于x0是超平面上的点,满足f(x0)=0,所以代入超平面的方程ωTx+b=0,可得到ωTx0+b=0,即ωTx0=−b。
然后,令式(3.3)即x=x0+γω/∥ω∥两端同时乘ωT,再根据ωTx0=−b与ωTω=∥ω∥^2,可以得到:

γ=(ωT+b)/∥ω∥=f(x)/∥ω∥                            (3.4)

为了得到γ的绝对值,令γ乘上对应的类别y,即可得出几何间隔(用γ˜表示)的定义:

γ˜=yγ=γ^/∥ω∥                                       (3.5)

式(3.5)中,γ^是前文中的函数间隔。所以可以看出,几何间隔就是函数间隔除以∥ω∥,而且函数间隔y⋅(ωTx+b)=yf(x)实际上就是|f(x)|,只是人为定义的一个间隔度量。几何间隔yf(x)/‖ω‖才是直观上的点到超平面的距离。

4、最大间隔分类器(Maximum Margin Classifier)

(1) “间隔”的说明

对一个数据点进行分类,当超平面离数据点的”间隔”越大,分类的确信度(confidence)也越大。所以,为了使得分类的确信度尽量高,需要让所选择的超平面能够最大化该“间隔”值。这个间隔就是下图5中的Gap的一半。

在这里插入图片描述
图5 超平面的间隔

通过由前面的分析可知:函数间隔不适合用来最大化间隔值,因为在超平面固定以后,可以等比例地缩放ω的长度和b的值,这样可以使得f(x)=ωT+b的值任意大,即函数间隔γ^可以在超平面保持不变的情况下被取得任意大。
但由于几何间隔γ˜与∥ω∥做了除运算,所以在缩放ω与b的时候,几何间隔γ˜不会改变,它只随着超平面的变化而变动。因此,这是更加合适的一个间隔,即这里要找的最大间隔分类超平面中的“间隔”指的是几何间隔。

(2) 最大间隔分类器的定义

最大间隔分类器(maximum margin classifier)的目标函数可以定义为:

maxγ˜                                            (4.1)

同时需要满足一些条件,根据式(3.2)中间隔的定义,存在:

s.t.,yi(ωTxi+b)=γi^≥γ^,i=1,...,n                 (4.2)

上式(4.2)中,s.t.s.t.即Subject to的缩写,约束条件的意思。
回顾式(3.5)中几何间隔的定义γ˜=yγ=γ^ /∥ω∥,可知如果令函数间隔γ^=1,则有γ˜=1/∥ω∥,且约束条件如上式(4.2)。综上,上述目标函数便转化成了:

{max1‖ω‖s.t.,yi(ωTxi+b)=γi^≥γ^,i=1,...,n         (4.3)

上式(4.3),相当于在相应的约束条件yi(ωTxi+b)≥1,i=1,…,n下,将值1/∥ω∥最大化,即最大化几何间隔γ˜。
注:为什么令γ^=1?
在几何间隔部分说到,若成比例改变ω,b,超平面不会改变,但函数间隔γ^ 会成比例改变,所以可以通过等比例改变ω,b值的方法使函数间隔γ^=1。
具体方法:令γ ^ =y(ωTx+b)中的ω,b同乘γ ^ =1 ,得到ω′=ωγ ^ ,b′=bγ^,再将ω′,b′代入式(4.1)中,即得到最大间隔分类器的目标函数。

在这里插入图片描述
图6 超平面上的支持向量

中间的实线便是寻找到的最优超平面(Optimal Hyper Plane),其到两条虚线边界的距离相等,这个距离就是几何间隔γ˜。两条虚线间隔边界之间的距离等于2γ˜,而虚线边界上的点,就是支持向量。由于这些支持向量刚好在虚线间隔边界上,且我们之前把函数间隔γ^设置为1,所以它们满足y(ωTx+b)=1。而对于其他所有不是支持向量的点,则显然有y(ωTx+b)>1。

猜你喜欢

转载自blog.csdn.net/qq_30534935/article/details/83064552
今日推荐