SVM(Support Vector Machine,支持向量机)是最经典的分类算法,本文主要整理(为了应付考试)SVM的推导方式,不包含SMO算法求解最后的约束。
借鉴博客:
https://cuijiahua.com/blog/2017/11/ml_8_svm_1.html
https://www.cnblogs.com/90zeng/p/Lagrange_duality.html
一般的,SVM就是一个分类器,只是相对于传统的线性分类器,它添加了一个支持向量的概念。这样相对于传统分类器可能存在的多个解,SVM由于约束的存在一般只有单解,并且表现更好。
从图片上解释,对于一组数据,传统的线性分类器使用一条直线将数据分类,而SVM在使用直线的同时要求数据点距离这条直线的最小距离最大,也就是说分类器和数据之间要有足够大的“间隔”。这样做的好处是很明显的,越大的“间隔”代表了更大的转圜空间,在得到新的数据之后更容易将其正确分类。
而SVM的工作就是求解这个最大间隔,也就是最优化问题。对于线性可分的数据,可以直接套用线性规划的知识进行推导,但如果数据线性不可分,就需要核函数进行数据升维,进行超平面分类。
下面是具体的建模推导过程:
一·决策面方程
我们现在二维场景下考虑分类方程,所以决策面也就是决策线。
考虑在二维场景下,我们描述一条直线的方法是:
简单替换,将替换为,将替换为,简单获得以下公式:
=>
将上述公式转换为向量形式:
也就是
这个式子的几何意义是原式子的法向量。而如果我们将上述式子推广到高维空间,就是我们需要的决策面方程。也就是:
二·分类间隔方程
在获取决策面方程之后,我们需要获知决策面方程中的和的具体值,而求解这个值的核心就是靠分类间隔方程所施加的约束条件。
首先我们需要副系以下间隔的含义,在SVM中,“间隔”指的是分类器距离样本点的最小距离,我们需要找一个使这个最小距离最大的分类器作为我们的最优解。因此我们的约束条件是很好想到的,高中学过的距离公式:
而在超平面上,只需要简单的推广以上公式,结合我们之前获得的决策面方程,
我们不难得到,在我们所得到的直线(超平面上),某个样本与其的距离是:
分母是指的二范数,也就是平方和求导。这样我们的问题就转化为,求最大的,其中,也就是求。
三·约束条件
获取了上述分类间隔方程,但是这个方程只是来评判我们的分类器是否是好的,我们并不能确定
(1)分类器是否能正确分类
(2)如何选择正确的支持向量点
这两个问题是限制我们随意计算的限制条件,在SVM中,以下列方式处理这些限制条件。
首先仍然只考虑线性可分的二分类情况,在这种情况下只有两类数据,我们对这两类数据分别赋值为1和-1,也就是:
分类还是很直观的,事实上我们在有监督学习里面基本也这么赋值。这样赋值之后,假设我们所得到的分类器可以正确分类两类数据,那么我们的分类器可以得出什么结果?不难得到以下形式:
如果我们严格一点(或者说运气很好),我们得到的分类器是SVM的最优解,那么根据上面的距离公式,我们可以简化得到:
其中:
分母都是标量,所以除以并不影响原式子的几何含义,也就是法向量。那么我们事实上拿掉这个
也不会影响最后的结果。最后对以上式子进行整理,即可获得一个不等式:
这里的与上文中的在数值上不同,但是在几何意义上是一样的。
四·优化问题描述
在三中,我们考虑了如果我们的分类器可以正确分类,我们的公式要如何进行约束,那么现在我们需要解决第二个问题了,如果选取支持向量点?
这个问题比较好考虑,支持向量点有一个特征,那就是对于一个支持向量点,必然有
那么在我们预先定义好的距离公式中,我们发现带入上式子的结果,有
那么我们对的最大值约束就变化为对的最小值约束,也就是求解
五·求解准备
在得到上述式子之后,我们发现这是一个带有不等式约束的规划问题,为了解决这种问题,我们一般采用构造拉格朗日函数的方法,使用对偶性解决问题。
5.1·拉格朗日函数
首先,我们先要从宏观的视野上了解一下拉格朗日对偶问题出现的原因和背景。
我们知道我们要求解的是最小化问题,所以一个直观的想法是如果我能够构造一个函数,使得该函数在可行解区域内与原目标函数完全一致,而在可行解区域外的数值非常大,甚至是无穷大,那么这个没有约束条件的新目标函数的优化问题就与原来有约束条件的原始目标函数的优化问题是等价的问题。
这就是使用拉格朗日方程的目的,它将约束条件放到目标函数中,从而将有约束优化问题转换为无约束优化问题。
随后,人们又发现,使用拉格朗日获得的函数,使用求导的方法求解依然困难。进而,需要对问题再进行一次转换,即使用一个数学技巧:拉格朗日对偶。
所以,显而易见的是,我们在拉格朗日优化我们的问题这个道路上,需要进行下面二个步骤:
将有约束的原始目标函数转换为无约束的新构造的拉格朗日目标函数
使用拉格朗日对偶性,将不易求解的优化问题转化为易求解的优化
下面,进行第一步:将有约束的原始目标函数转换为无约束的新构造的拉格朗日目标函数
先写下原始式子:
我们首先将其变形,将其变为如下格式:
其中被称为拉格朗日乘子,当然虽然名字很吓唬人,事实上它是我们随意引入的一个参数。这个参数是用来构造等价问题的。
我们令。
也就是当前这个方程和无关,当某个点不在可行解区域中,也就是,我们将设置为无穷大,显然此时也是无穷大的。而当该点在可行域区域内,,那么的结果显然是(因为后半部分必然大于等于0,那么为了保证最大,当然是等于0)。这样,就可以转化为:
显然在可行域内,是一个凸函数,是必然有极小值的,因此问题被转化为求此函数的最小值,也就是:
这个式子事实上也不好求,因为内层的仍然带有不等式的限制条件,因此我们要使用拉格朗日对偶方法将其转化为易求的对偶形式。
5.2 拉格朗日对偶及其证明
拉格朗日对偶的定义如下:
以我们刚刚获得的式子为例,我们先针对作为未知数构造一个函数:
考虑其极大化,也就是
这个问题就是原始问题的对偶问题了。假设我们使
则可以证明
证明方式:对于任意的,有
不难推论,当时,此时均为最优解。
那么如何使得上述相等情况成立呢?这就需要满足KKT条件。
5.3·KKT条件
KKT条件的全称是Karush-Kuhn-Tucker条件,KKT条件是说最优值条件必须满足以下条件:
条件一:经过拉格朗日函数处理之后的新目标函数L(w,b,α)对x求导为零:
条件二:h(x) = 0;
条件三:α*g(x) = 0;
我们的式子已经满足此条件,具体的嘛……反正我也不懂,先记下来以后补= =
六·最终结果
已知
首先固定,针对内层最小化求导,可以得到:
带入原式:
此时只有一个参数,
然后我们计算外层的最大化,
现在我们的优化问题变成了如上的形式。对于这个问题,我们有更高效的优化算法,即序列最小优化(SMO)算法。我们通过这个优化算法能得到α,再根据α,我们就可以求解出w和b,进而求得我们最初的目的:找到超平面,即"决策平面"。
七·非线性与核函数
前面六个部分都是建立在数据线性可分的情况之下,而当数据不可分时,我们需要使用一些方法将其升维,使其在高维空间成为可分的。
总体而言,经过SMO计算出之后,可以得到最后的方程:
使用内积表示它:
如果数据是不可分的,我们使用一个非线性映射(不管这个映射是什么样的,事实上往往不知道这是什么映射,映射获得的结果也可能无法计算)将数据映射到高维空间,使其在高维空间可分,则上式可以改写为:
其中是一个映射,它表示输入空间到特征空间的映射。
这种映射结果,牵扯到高维空间的内积运算,而高维空间维度越高我们需要的计算量就越大,有时候甚至是无限维的,导致不能直接计算。因此我们定义了一个核函数(kernel function),其本质是在输入空间的一个函数,我们如果可以使得,那么计算就可以局限在输入空间的低纬度,减少计算资源的消耗。
所以直接就给出一个定义:核是一个函数k,对所有x,z∈X,满足k(x,z)=<ϕ(xi),ϕ(x)>,这里ϕ(·)是从原始输入空间X到内积空间F的映射。
在实际使用中,有多种比较常见的核函数形式(所以核函数实际上都是一种近似):