SVM 敲黑板 划重点

SVM推导

给定 ,SVM考虑基于训练集 D在样本空间中找到一个划分超平面(hiperplane),将不同类别的样本分开。

划分超平面公式:

(别慌,它其实就是我们炒鸡眼熟的直线公式 ax+b = 0对吧)


其中为法向量,决定了超平面的方向;b为位移项,决定了超平面与原点之间的距离。通常划分超平面用 (w,b)来表示,因为其可被法向量w和位移b确定。

样本空间中任意点x 到超平面 (w,b) 的距离可写为

假设超平面 (w,b) 能将训练样本正确分类,对于有以下式子:

如图所示:

其中距离超平面最近的几个训练样本点使上式的等号成立,这几个训练样本就被称作支持向量(support vector),两个异类支持向量到超平面的距离之和,也称为间隔(margin),为

(其实就是  和  两条直线之间的距离公式,回忆一下两条平行直线之间的距离公式~)

那么按我们的设想,我们做分类学习,实际上就是为了找到一个划分超平面将这些样本给隔开,那么什么样子的划分超平面是最有效的呢?
从直观上来看,位于正负样本“正中间”的划分超平面,也就是上上图红色的那一个划分超平面(最粗的那条线),应该是最好的,因为它的鲁棒性最好,对未知样本的泛化性最好。

那么如何去得到这个 刚好位于正负样本“正中间”的划分超平面呢?

思考一下,是不是只要我们让间隔最大,这样只要我们取间隔中间的那条直线,我们就可以找到这个最棒的划分超平面了?
换句话说,对于基于SVM的分类学习而言,问题已经从找到一个最好的划分超平面转换为了找到样本空间里的最大化间隔
我们用数学语言来描述一下这个更新后的问题,就变成了找到能满足  的约束条件的参数 w 和 b ,并且要使得  中的 r 最大。

用数学公式来表示是这个样子。

显然,为了最大化间隔,仅需最大化 , 这等价于最小化 。于是上式我们可以重写为

这就是SVM的基本型。在我们开始对这个式子进行求解之前,首先我们需要注意到,它其实是一个凸二次规划问题.

一般地,一个最优化数学模型能够表示成下列标准形式:

其中,f(x)是需要最小化的函数,h(x)是等式约束,g(x)是不等式约束,p和q分别为等式约束和不等式约束的数量。

同时,得明白以下两点:

  • 凸优化的概念:\mathcal{X} \subset \mathbb{R}^n 为一凸集, f:\mathcal{X}\to \mathbb{R} 为一凸函数。凸优化就是要找出一点 x^\ast \in \mathcal{X} ,使得每一 x \in \mathcal{X} 满足 f(x^\ast)\le f(x) 。
  • KKT条件的意义:它是一个非线性规划(Nonlinear Programming)问题能有最优化解法的必要和充分条件。

 而KKT条件就是指上面最优化数学模型的标准形式中的最小点 x* 必须满足下面的条件:

 经过论证,我们这里的问题是满足 KKT 条件的(首先已经满足Slater condition,再者f和gi也都是可微的,即L对w和b都可导),因此现在我们便转化为求解第二个问题。

    也就是说,原始问题通过满足KKT条件,已经转化成了对偶问题。而求解这个对偶学习问题,分为3个步骤:首先要让L(w,b,a) 关于 w 和 b 最小化,然后求对的极大,最后利用SMO算法求解对偶问题中的拉格朗日乘子。

那么让我们回顾一下

你可以发现,SVM恰恰满足了强对偶性

即:

   从而有:

有读者可能会问上述推导过程如何而来?说实话,其具体推导过程是比较复杂的,如下图所示:

求解模型

 

我们来学以致用,用一道简单的例题来帮助我们更好地理解线性SVM模型,光学公式是永远不会用滴!

Example is here :)

现在我在平面上有八个点,分别落在class1 和class2里:

在二维坐标里作图是这样的:

我们肉眼一看,线性可分呐!SVM可以用了!
那我们就来设计一个简单的线性分类器吧。
首先,找出处在边界上的点,啊不对,支持向量:

这三个向量的λ(按照顺序数下来是向量1,2,5)我们是需要求解的,其他的向量我们就不管了。
我们定义黑色点的标签值为1,红色为-1.
然后愉快地带公式到上面四个约束条件里~

先从

开始。
得到:

但是现在还没有什么用,我们只是知道了要想求w就得先求出三个λ值。那么怎么求呢?我们来看一下约束条件。
因为:

可得三个联立公式(做一下矩阵运算把x,y带进去,注意y正负号,我这里把步骤都省略了),化简得:

再带入

得到:

然后就是愉快地求解四元一次方程啦~
得到三个λi值以后,再带入第一个式子得到w值,完成。

那么 最后在补充说明下:

预测

对于新点的预测,只要计算它与训练数据点的内积即可。

超平面可以用分类函数表示 ,在进行分类的时候,遇到一个新的数据点x,将x代入f(x) 中,如果f(x)小于0则将x的类别赋为-1,如果f(x)大于0则将x的类别赋为1。
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值