支持向量机
Posted wallacevv
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支持向量机相关的知识,希望对你有一定的参考价值。
首先,提出一个问题:如何构造非线性分类器?
可以从线性回归到逻辑回归的变化过程中得到启发,逻辑回归本质上是增加了一个逻辑函数g(z)来映射输入x到{0,1}。
逻辑回归的计算过程可以简化为上图,圈表示一个计算节点,即激活函数(activation function)g(z),这里取Sigmoid函数(激活函数还可以选取双曲正切函数(tanh),它的映射结果为{-1,1})。
那么输出为:
这就是一个单一的神经元,它的输入输出映射关系实际上就逻辑回归。
现在将上图中的计算单元(神经元)进行组合,并增加一层隐含层(hidden layer)就构成了神经网络(Neural Network)的基本结构,如下图。
- +1是偏置节点,也就是截距项;
- 左边的节点组成输入层,输入的是特征向量X;
- 中间的节点组成隐含层,经过激励函数g(z)计算得到输出;
- 右边的节点组成输出层,输出的是假设函数h或标签l。
采用前向传播的计算步骤,这样就得到了一个神经网络的基本模型。为了得到模型的解,这里同线性回归一样采用损失函数最小化的方法。
接下来,为了提出支持向量机,结合推导神经网络的思路先描述两种从不同角度对支持向量机的理解。
一、回顾逻辑回归
逻辑回归是将特征的线性组合作为输入,通过逻辑函数g(z)学习得到0或1的分类结果。换句话说,由于输入的取值范围从负无穷到正无穷,而输出为0或1,自然会联想到使用逻辑函数来映射。而所求假设函数h就是输出y=1时的后验概率。
假设函数:
其中x是n维特征向量,g为sigmoid函数,它的图像为:
假设函数的结果为y=1时的后验概率:
所以,当需要判断新的输入x属于哪一类,只需要计算此时的hθ(x),若值大于0.5,则属于“1”;若值小于0.5,则属于“0”。实际上,hθ(x)的值只与θTx有关,当θTx≥0,hθ(x)﹥0.5;当θTx﹤0,hθ(x)﹤0.5。如果θTx﹥﹥0,hθ(x)=1,就可以非常确信y=1;反之,hθ(x)=0,y=0。逻辑回归最终的目标就是要通过学习参数θ,使得正例(线性组合)远大于0,而负例(线性组合)远小于0。如此就可以引出一个函数间隔(Functional Margins)的概念,如图。
中间的直线由θTx=0确定,它也被叫做分离超平面(separating hyperplane),X表示正例,○表示负例。图中有三个被标注的点A,B,C,从图中我们可以非常确定A属于正例,B比较确定,而C不太确定。实际上,我们总是更加关注靠近分离超平面的点,总是希望它们能够远离分离超平面,而不是所有的样本点,后面会引出几何间隔(Geometric Margins)的概念。这正是逻辑回归与支持向量机的不同之处,逻辑回归考虑全局最优(使得特征的线性组合远远大于0,也就是说尽量让更多的样本点远离超平面),而支持向量机考虑局部最优(不考虑已经远离超平面的点)。
二、函数间隔与几何间隔
1. 新的标注
为了方便讨论支持向量机,需要重新定义分类的符号标注。
- 二元分类问题,类别标签y∈{-1,1};
- 如果z≥0,g(z)=1,反之,g(z)=-1;
- 参数为w和b,可以写作:hw,b(x)=g(wTx+b),b代替了之前的θ0,w=[θ0,...,θn]T。
2. 函数间隔
给定一个训练样本集(x(i),y(i)),函数间隔定义为:
当y(i)=1时,只有当wTx+b的值为很大的正值时,函数间隔的值才会很大;当y(i)=-1时,只有当wTx+b的值为很小的负值时,函数间隔的值才会很大。也就是使得|wTx+b|很大,可以理解为函数间隔代表了认为样本点属于正例或负例的确信度。
当w和b改变时,如分别增大到原来的2倍(2w,2b),虽然函数间隔的值会增大2倍,却对于假设函数h的值没有影响,因为我们要求的是wTx+b=0,同等倍数增加w和b的值并没有影响。为了限制w和b的值唯一,需要加入归一化条件。
针对整个样本集,函数间隔取值为:
就是在训练样本上分类正例和负例确信度最小那个函数间隔。
3. 几何间隔
w是分离超平面的法向量,A点为正例,y(i)=1,它到决策边界的距离为γ(i),w向量的方向与向量BA相同,w单位向量为w/||w||,故B点可以表示为:
B点在决策边界上,满足wTx+b=0。
可以解出γ(i)的值,实际上就是点到平面的距离。
结合负例的情况,可以把式子写成:
可以看出,当||w||=1时,实际上就是函数间隔,也就是说归一化的函数间隔就是几何间隔。同理,同时增大w和b的倍数,对最终判断分类的结果没有影响。
针对整个样本集,几何间隔取值为:
三、最优间隔分类器(The optimal margin classifier)
基于之前的讨论我们有一种直观的感觉,只要找到一个决策边界在将正负样本分开的同时,使得平面到距离近的正负样本的距离(几何间隔)最大,就可以很好地进行二元分类。实际上是解决下面的问题:
形式1
||w||=1,表示几何间隔等于函数间隔,确保了所有几何间隔至少是γ。但是,它位于球体或圆形的表面,是非凸优化约束,不能保证找到全局最小值。首先,我们可以结合函数间隔与几何间隔的关系来转化这个问题。
可以得到优化后的表达:
形式2
此时,我们需要求解的仍然是几何间隔的最优值,只是不再受||w||=1的约束。然而,这个目标函数仍然是一个非凸优化问题,还需要进一步优化。回顾之前讨论过同时改变w和b的值,对于结果并没有影响,为了最后只能得到唯一的解,需要对函数间隔进行约束,我们增加一个缩放约束:令训练集的函数间隔为1。
也就是距离超平面最近的点到超平面的距离为1/||w||,由于求1/||w||的最大值与求||w||2/2的最小值是等价的,故可以改写成:
形式3
目前,我们就将问题转化为可以解决的形式,一个二次函数的优化问题,可以采用QP、二次程序或梯度下降法来求最优值。这样,我们就得到了最优间隔分类器的模型。
参考文献:
神经网络
以上是关于支持向量机的主要内容,如果未能解决你的问题,请参考以下文章