一、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 机器学习课程

SVM1 线性SVM的更多相关文章

  1. 线性SVM

    (本文内容和图片来自林轩田老师<机器学习技法>) 1. 线性SVM的推导 1.1 形象理解为什么要使用间隔最大化 容忍更多的测量误差,更加的robust.间隔越大,噪声容忍度越大: 1.2 ...

  2. cs231n --- 1:线性svm与softmax

    cs231n:线性svm与softmax 参数信息: 权重 W:(D,C) 训练集 X:(N,D),标签 y:(N,1) 偏置量bias b:(C,1) N:训练样本数:  D:样本Xi 的特征维度, ...

  3. 支持向量机(Support Vector Machine,SVM)—— 线性SVM

      支持向量机(Support Vector Machine,简称 SVM)于 1995 年正式发表,由于其在文本分类任务中的卓越性能,很快就成为机器学习的主流技术.尽管现在 Deep Learnin ...

  4. 线性SVM的推导

    线性SVM算法的一般过程 线性SVM的推导 超平面方程 SVM是用来分类的.给定一系列输入数据(n维向量),需要找到一个切分界线(n-1维的超平面),这里假定数据是线性可分的.比如,二维数据的超平面是 ...

  5. 机器学习读书笔记(七)支持向量机之线性SVM

    一.SVM SVM的英文全称是Support Vector Machines,我们叫它支持向量机.支持向量机是我们用于分类的一种算法. 1 示例: 先用一个例子,来了解一下SVM 桌子上放了两种颜色的 ...

  6. 《机器学习技法》---线性SVM

    (本文内容和图片来自林轩田老师<机器学习技法>) 1. 线性SVM的推导 1.1 形象理解为什么要使用间隔最大化 容忍更多的测量误差,更加的robust.间隔越大,噪声容忍度越大: 1.2 ...

  7. 线性SVM分类器实战

    1 概述 基础的理论知识参考线性SVM与Softmax分类器. 代码实现环境:python3 2 数据处理 2.1 加载数据集 将原始数据集放入"data/cifar10/"文件夹 ...

  8. SVM-支持向量机(一)线性SVM分类

    SVM-支持向量机 SVM(Support Vector Machine)-支持向量机,是一个功能非常强大的机器学习模型,可以处理线性与非线性的分类.回归,甚至是异常检测.它也是机器学习中非常热门的算 ...

  9. 《Machine Learning in Action》—— 剖析支持向量机,单手狂撕线性SVM

    <Machine Learning in Action>-- 剖析支持向量机,单手狂撕线性SVM 前面在写NumPy文章的结尾处也有提到,本来是打算按照<机器学习实战 / Machi ...

随机推荐

  1. c++类的声明和对象的定义---10

    原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量:创建对象的过程也叫类的实例化. ...

  2. appserv升级php

    安装thinkphp的时候提示必须要php5.3及以上 本地测试服务器使用的是appserv集成环境 所以要单独升级php 首先到官网下载http://php.net/downloads.php wi ...

  3. nginx配置rewrite

    1. uri  和 url读取区别 区别就是URI定义资源,而URL不单定义这个资源,还定义了如何找到这个资源. 比如说,一个服务器上,到一个文件夹/网页的绝对地址(absolute path)就是U ...

  4. python百分比数比较大小

    python是无法识别百分比的,估计你的百分比是string,所以需要转成int # !/usr/bin/python3.4 # -*- coding: utf-8 -*- # 百分数转为int de ...

  5. iis 应用程序池看不到 .net framework 4.0

    我的情况是,先配置了iis,然后再安装.net framework 4.0 进去设置应用程序池的时候,没有找到 .net framework 4.0 ,经过一番尝试,无效,最后无奈重启. 好了.

  6. DOM节点的修改

    首先,我们将最后段落赋值给变量my: var my = document.getElementById('closer'); 接下来,我们就能够轻松地通过修改对象的innerHTML值来修改段落中的文 ...

  7. Json数据处理

    1.字符串转换为Json数组:取json对象属性值. String st="[{"tradeDate":"2016-09-27","trad ...

  8. Spring Boot 性能优化

    spring 框架给企业软件开发者提供了常见问题的通用解决方案,包括那些在未来开发中没有意识到的问题.但是,它构建的 J2EE 项目变得越来越臃肿,逐渐被 Spring Boot 所替代.Spring ...

  9. 我的ZJ解题心得

    想要学好程序设计第一是要养成你的编程思维,也就是你对编程的一种概念和思维定式,长期的解题会让你产生解题经验进而形成一种思维定式,比如看到一个题目就立即想出这题要用什么方法解题这样.编程思维我认为还包括 ...

  10. [DFNews] GetData也出取证软件了

    从事计算机取证的应该都听说过MIP(Mount Image Pro).VFC仿真和Recover My Files,上述三个应用比较广泛的软件都是GetData公司的产品.GetData现在也推出了自 ...