一、Linear Support Vector Machine
接下来的讨论假设数据都是线性可分的。
1.1 SVM的引入:增大对测量误差的容忍度
假设有训练数据和分类曲线如下图所示:
很明显,三个分类器都能够正确分类训练数据,但是哪一个的效果更好呢?直觉告诉我们第三个,为什么呢?
这是因为第三个的那些点离分割超平面的距离较远,这样能够容忍更大的噪声, 鲁棒性更强。
1.2 间隔最大化问题的建模
我们的目标是寻找分割超平面导致间隔最大化。形象的说我们定义分割超平面两边的点与分割超平面的最短距离为“fat”,那么,我们的目标就是需要寻找具有最大"fat''的分割超平面。利用公式表示如下:
术语化描述就是间隔最大化:
那么,怎么求解平面外一个点到一个平面的距离呢?这是高中学过的公式,简单推导如下:
假设平面方程为:
。其实w就是超平面的法向量。
法向量w是垂直于平面的,所以平面外一点到平面的距离就是平面外一点与平面内一点的连线在法向量上的投影。
由于所有样本都正确分类,所以对每一个样本点,我们有
带入上式得到:
带入最开始的我们的目标问题得到:
进一步处理,对方程归一化处理,得到:
由于这一问题不方便求解,我们现在对条件进行放宽,把上式的最后一个条件转化为:
可以证明,这个条件的放宽仍然能够保证有最小值能够取到1,没有全部大于1的担忧。
因为假设放宽后所有的点都导致上式大于1,那么至少有一个最小值比如就取1.126吧,那么也就是得到
现在我两边同时除以1.126,发现我们能够找到刚好的wb的组合,能够使得我们呢的目标函数更大,而你之前求得的这个wb就是最大的,所以矛盾。
另外,由于习惯问题或者函数库的问题,我们把目标函数取倒数变最大目标为最小目标。再进行一个平方,转化向量长度为向量内积,再乘上系数1/2。最终得到我们的目标函数及其限制条件为:
1.3 模型的求解
首先我们想到是不是可以使用梯度下降算法求解上述模型,但是由于加了那么多的条件的限制,所以这似乎走不通。
幸运的是,我们观察表达式发现,这是一个二次规划问题,(目标函数关于w,b的凸二次,限制条件关于w,b线性)
二次规划问题的求解可以直接调用有关库,但首先应该转化为标准形式:
对比得到:
1.4 从VC角度解释为什么会选择large margin
待补充...
1.5 从Logestic回归的角度来看看我们的SVM
之前我们讨论过Logestic回归的代价函数为:
画出图来显示如下:
也可以看到,y = 1时,z >> 0 时,代价较小,另一边则代价较大。
y = 0时, z >> 0 时,代价较小,另一边则较大。
现在我们把上述曲线做一个近似,得到y=1时候的代价函数曲线和y=0时候的代价函数曲线。
相对应的,把之前的Logestic回归的代价函数转换:
得到:
基于以上转换,我们得到:
我们发现,相比于逻辑回归,我们的要求似乎严格了。由大于等于0变为了大于等于1.
现在假设C特别大,我们有:
这样,就得到了和我们事前讨论的一样的目标函数及约束条件。
1.6直观解释为什么我们的目标函数及约束能够得到大间隔分类器
之前我们由Logestic慢慢变换得到
我们可以把最小化目标改为最小化||theta||,接下来假设是二维的并且theta0 = 0。
如图,样本点x(i),参数theta,我们的约束条件需要x(i)与theta的内积的绝对值大于等于1,p(i)为x(i)在theta上的投影,也就是p(i)和theta长度的乘积大于等于1。
如上图所示,假设选择了左边的分界线,那么这些点在法向量theta上的投影p(i)就会比较小,相应的你theta的范数就会比较大,这和我们的目标函数最小化相悖,所以我们的决策函数不会选择这条分界线,相反会选择右边这个是的p(i)很大的分界线。
这就解释了为什么会上述目标函数的优化问题会选择大间隔分类器。
二、对偶SVM
2.1 原问题转化为对偶问题
之前我们从间隔最大化和Logestic两个方向推导出了我们的线性SVM,并使用QP来求解。现在假设我们转化为非线性的呢?假设我要由原来x的n个变量转化为z空间上的很多很多变量呢?假如我们转化为有无穷多个变量呢?我们之前的直接QP还能解决吗?很遗憾,这是的维度 d + 1 维特别特别的大,之前的直接QP的方法不行了,那么,怎么办呢?接下来介绍把原问题的QP求解转化为其对偶问题的QP求解问题。
为了解决维度较大的问题,我们设想这样一个目标,可以不可让SVM对变量的维度没有依赖呢?我们转化为的QP问题就可以,这里的变量数量只和我们的训练集的大小有关,而和你转化到的空间的大小无关。
使用拉格朗日乘子法把之前推导出来的SVM最优化问题转化为一个看似没有条件的问题:
转化为:
那么这个新问题和之前的问题是同解的吗?下面来这样思考。
先假设b,w固定,alpha为自变量,内部max函数是alpha的函数,然后外部再让那些w,b动起来,选择一个最小的。
好,那么现在假如是一个不满足条件的b,w,那么1 - yn(wtzn + b) 大于0,内部要最大,那么就会选到alpha为无穷大,导致内部为无穷大。
相反,假如现在选到的是一个满足条件的b, w,那么1 - yn(wtzn + b)小于等于0,内部最大化就会选择alpha很小很小很小,或直接为0,这样导致最终的内部很小,为0的话直接就变为1/2w(t)w,也就是直接变为了之前的SVM问题,因此,上述转化是有道理的。
现在我们得到了原问题可以转化为一个似乎没有限制的问题,进一步转化如下:
进一步
这样就得到了原来问题的一个对偶问题。我们想通过解右边的问题来解左边的问题,但是现在只是一个弱对偶,右边的解只是左边解的一个下限,我们希望右边的解刚好就是左边的解就好了。
那么,可以么?实际上是可以的,这里满足强对偶条件。优化问题是个凸函数,保证有解,约束条件为线性约束。所以,我们完全可以把原原题转化为对偶问题,没有任何问题。
2.2 对偶问题的转换
噗。。。。
经过了这么一大串的转化,我们最终把原问题转化为了这样一个问题:
那么,我们现在来转化求解这一问题。
首先内部是个关于w和b的无约束最小化问题,为了取得最小值,对w和b的偏导应该分别为0。我们得到:
有了这个条件,优化问题可以转化为:
同理:
转化:
2.3 KKT条件
2.4 QP求解对偶问题
经过一系列的转化,我们最终得到:
这样,我们就把最开始的一个很大很大维度的问题转化为只有n维度的问题。接下来可以使用QP来求解这一问题。
由于一般样本容量都很大,Q矩阵又是一个稠密矩阵,所以一般选择专门为SVM设计的QP来解决这一问题。
得到上述问题的解后,也就是得到了alpha的解,根据KKT条件,我们很容易得到w的解:
另外,如果alpha(n)大于0的话,我们容易得到b的解:
另外,我们由得到这个点在边界上。
最后得到alpha大于0的点叫做支撑向量(边界上的点叫做candidate向量)。所以从另一个角度来看,w和b都只靠支撑向量计算出来,和其他的向量无关。
后边继续分析核函数 http://www.cnblogs.com/futurehau/p/6149558.html
参考:
台湾大学 林轩田 机器学习技法课程
吴恩达 Cousera 机器学习课程