SVM原理介绍与Python实现(二):SVM的推导过程

二、SVM的求解过程

1、对问题的简单求解

其实上一章中的结果,已经是一个可求解的问题了,因为现在的目标函数是二次的,约束条件是线性的,所以它是一个凸二次规划问题,只要通过现成的QP包就能解决这个二次规划问题。
SVM优化问题

2、求解方式转换

由于这个结构具有特殊性,所以可以通过拉格朗日的对偶性( Lagrange Duality),将原问题转到对偶问题进行优化(两者等价)。
这样是有两个优点:一是对偶问题更容易求解,二是也可以引入核函数,解决非线性分类问题。
那么怎么才能变到对偶问题呢?
首先就要讲一下拉格朗日问题,我们大学高数都学过拉格朗日乘子法(Lagrange Multiplier) 求解。具体的原理我就不说了,请参考 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件 。
主要举例说一下:
我们利用拉格朗日乘子将约束条件限制到一个拉格朗日函数里
这里写图片描述
然后令 这里写图片描述
这个这里写图片描述 就是我们要求解的原问题(primal problem),只要通过最小化这里写图片描述 就可以解决 。为什么最小化这里写图片描述就可以了呢?我们以一个更一般的例子来解释一下这个求解原理。

————————————————-原理 1(start)————————————————–
这个例子更为广泛,只不过多了一个等式限制
假设存在这样一个最优化的情况
这里写图片描述
我们通过拉格朗日乘子变为这种形式
这里写图片描述
我们想要最小化的是min f(w),怎么用在拉格朗日公式中表达出这个呢?首先我们知道这里写图片描述这里写图片描述 是拉格朗日乘子,我们首先想到是不是要求解min L()啊,但是却恰恰相反,我们要最大化L。因为在g小于0的情况下如果我们无限的增大这里写图片描述 ,min L()其实是根本无解的,因为可以无限的小。为了排除这种情况,我们定义了如下函数:
这里写图片描述
尝试一下我们会发现,这个表达式在违反最优化的条件时结果都是无穷,当这里写图片描述这里写图片描述 的时候只要调节一下这里写图片描述这里写图片描述 就可以得到无穷的值,但是只有满足我们上面的g和h满足约束的时候才能够得到这里写图片描述 等于f(w)。但是切记有个条件,就是这里写图片描述
总结来说就是:
这里写图片描述
所以当我们想要求min f(w)的时候,就只要求最小的这里写图片描述就可以了。
即:这里写图片描述

——————————————-原理 1(end)———————————————————-

我们上面讲的是为什么可以通过最小化这里写图片描述 代替min f(w),但是我们也发现了,解决这里写图片描述 的最小化也不是一个简单的问题,因为其中还是有一个不等式约束这里写图片描述 ,那么怎么解决这个问题呢???
为了防止忘记,我们再回顾一下我们的问题:
这里写图片描述
这里写图片描述 求解min这里写图片描述
其实也就是求解这里写图片描述 的最小值因为在满足约束条件的情况下这里写图片描述
我们还是继续通过上面原理1中的例子继续推倒,来解释上面求解最小化的问题。

————————————————-原理 2(start)————————————————–

下面主要讲的是如何求解
这里写图片描述
我们定义这里写图片描述叫做这里写图片描述(原始问题),解决这个问题的办法就是将之变为对偶问题,什么是对偶问题呢?
这里写图片描述
就是所谓的对偶问题我们称之为这里写图片描述,我们可以看出对偶问题就是原始问题的min和max进行了调换,但是注意下标哦,两个问题的变量也跟着变化了。
原问题这里写图片描述 和对偶问题这里写图片描述有什么关联呢?
这里写图片描述
因为一般更换顺序的结果是Max Min(X) <= MinMax(X)
为什么要转换呢?
交换以后的新问题是原始问题的对偶问题,这个新问题的最优值用来表示。而且有在满足某些条件的情况下,这两者相等,这个时候就可以通过求解对偶问题来间接地求解原始问题。换言之,之所以从minmax的原始问题,转化为maxmin的对偶问题,一者因为是的近似解,二者,转化为对偶问题后,更容易求解。
什么时候可以转换呢?
这个转换条件只有在满足KKT条件时才能够成立,前面我引用了一个连接介绍了一下大概的KKT原理,我这里先简单的介绍一下后面会专门集中精力讲一下这个。
首先要明白两点:
· 什么是凸优化:这里写图片描述 为一个凸集,f:这里写图片描述为一个凸函数。凸优化就是找出一个点这里写图片描述,使得每一个这里写图片描述 满足这里写图片描述
· KKT条件的意义:它是一个非线性规划(Nonlinear Programming)问题能有最优化解法的必要和充分条件。
而KKT条件就是指上面最优化数学模型的标准形式中的最小点 x* 必须满足下面的条件(由于是借图范围标号不太一样):
SVM原理介绍与Python实现(二):SVM的推导过程_第1张图片
即对上面的问题对应于:
SVM原理介绍与Python实现(二):SVM的推导过程_第2张图片
这部分后面专门讲吧。。。。有点复杂,牵扯到了非线性规划的知识。
————————————————-原理 2(end)————————————————–

这里写图片描述
我们回到SVM里来,将问题由原始问题转为对偶问题求解:
(1)首先固定这里写图片描述 ,此时这里写图片描述 的最小值只与w和b有关,按照正常的求解最小值方式,对w和b分别求导并令导数为0:
SVM原理介绍与Python实现(二):SVM的推导过程_第3张图片(对w求导为二范数求导)
将结果带入到L中,得到:
SVM原理介绍与Python实现(二):SVM的推导过程_第4张图片
推倒这个是个非常复杂的过程,具体过程如下:
SVM原理介绍与Python实现(二):SVM的推导过程_第5张图片
由此可见,现在剩下的唯一一个变量就是这里写图片描述
(2)求极大值的过程,经过上面的推倒我们已经得出:
SVM原理介绍与Python实现(二):SVM的推导过程_第6张图片
注意约束条件。至于怎么求这里写图片描述要用到SMO算法,我会在后面结合Python一起讲
(3)求w 和 b,其中由这里写图片描述 得到w,在根据这里写图片描述
得到b,这是由于考虑到超平面的支持向量点到超平面的距离(也就是那个最小距离)相同,回到原始问题的约束条件上可以看出当y为-1时(wx+b)取最大值得到最小距离,y为+1时wx+b取最小值时为最小距离,也就得到上面等式。正规的说法是 : 离超平面最近的正的函数间隔要等于离超平面最近的负的函数间隔。
这里来说说这样做的好处:
将w带入这里写图片描述 (这其实就是整个问题的出发点,超平面)得到
SVM原理介绍与Python实现(二):SVM的推导过程_第7张图片
现在有了这里写图片描述 我们就根本不用求出w就可以了,直接就用新数据和原始数据中的所有样本做内积就可以了。为什么这样比计算w再用新数据和w、b线性运算更快呢?
因为由KKT条件中
这里写图片描述
(其中这里写图片描述 就是约束条件)
得知只有函数间隔是1(离超平面最近的点)的线性约束式前面的系数这里写图片描述 是大于零的,其余点的这里写图片描述 都等于零。这些函数间隔最小的点就叫做支持向量参考下面图中虚线上的点
SVM原理介绍与Python实现(二):SVM的推导过程_第8张图片
正因为非支持向量的系数这里写图片描述 都等于零,而且支持向量是少数的,所以运算比较快,而且还可以用核函数来解决问题。

3、总结一下:

我们这篇主要讲了在如何解决带有不等式限制的极值最优化问题,那就是通过将原始问题转为对偶问题进行处理。但是这中间却遇到了一个问题就是原始问题和对偶问题的转化问题,这也就引出了KKT条件。在满足了KKT条件之后可以解决对偶问题了。而且KKT条件还引出了关于支持向量的概念,非支持向量的系数这里写图片描述 都为0。求解w、b的偏导数,再利用SMO求这里写图片描述。反推得到b,就可以利用核函数解决了。

(1)到目前为止,我们的 SVM 还比较弱,只能处理线性的情况,下面我们将引入核函数,进而推广到非线性分类问题。
(2)还有KKT的推倒过程没有说明
(3)用来求这里写图片描述 的SMO还没有介绍。

你可能感兴趣的:(Python,机器学习)