SVM(Support Vector Machine)读书笔记一(最佳分割超平面)
来源:互联网 发布:淘宝账号 编辑:程序博客网 时间:2024/05/28 15:03
背景
分类问题中,在一个线性不可分的样本上,通常需要用到一些Non-linear的特征,把低维度空间上的样本投影到高维度上,从而使得这些样本在高维度线性可分。但是这个投影的过程通常也会有以下两个问题:
- 如果在原样本中加了太多的高次多项式的特征,首先会导致过拟合,模型的泛化能力会很差;
- 多项式组合会有指数级别的组合方式,这使得在投影后的样本空间中维度非常高,这也会消耗太多的计算资源和空间资源
为了解决上面两个问题,于是诞生了SVM,SVM有如下两个优势:
- 首先SVM是基于结构风险最小化原理,即它的VC维很小(相比于它的维度),不容易导致过拟合;(VC维是衡量模型复杂度的一个指标,VC维越大说明hypothesis空间越大,越不容易得到一个理想的模型,它和train error一起决定了泛化误差的上限)。
- 其次,利用SVM的优化过程,可以利用kernel trick,把在高纬度空间中的计算放到低纬度空间来进行,因此可以把SVM的特征投影到高纬度甚至无穷维,并且消耗很小的计算和存储资源。
接下来来介绍SVM是怎么工作的,以及它为什么有上面两个优势。本节主要介绍最佳分割平面及其求解过程以及为什么它是最佳的。
最佳分割超平面
现在假设有两类线性可分的样本,一类圈圈,一类叉叉。分类问题就是要找一个超平面,将这两类分开,但是能分割开这两类的超平面有很多,如下面的图所示。感知机算法就是随机的找到一个能够分开的超平面,它并不关心这个超平面如何。下面三个图中,直觉上感觉,第三个超平面是最理想的。
那么为什么第三个超平面是最理想的呢?原因是测试集上的样本是我们观测得到的数据,而观测到的数据和它真实分布是有一定的误差的,下面三个图中灰色的圆圈表示了每个平面能够容忍误差的大小,当误差超过这个圆圈的范围,分割面就要犯错误了,所以第三个图的容忍误差的能力是最强的。这是从直观上的一个解释,下面推导SVM的过程中会解释为什么这个是最佳的分割面。
这样,能容忍误差的能力最大的那个超平面是我们要的,定义margin为,由分割平面开始往两边推,到碰到样本点时候的距离。如下面的图所示,黄色部分即为margin。
最佳分割平面求解
符号定义如下,其中
如果一个超平面可以完全把正负类样本分开,那么分布在超平面两侧的样本点表示成下图中的形式,那么所有样本可以用公式归纳成
假设
因此,
但是margin怎么求呢,这就需要用到高中时候的几何知识了。
假设
上面最大化margin的式子,就是最大化离平面最近的那个距离,利用
上式可以利用后面等于1的条件,简化成
为了简化优化方法,最大化上面这个式子,就是最小化下式
利用
上面这个式子是二次规划的标准型,把它的一些参数,丢进二次规划的软件中就可以得到最佳的
二次规划(QP问题)
QP问题的标准型式如下:
我们不用关心这个问题怎么借,其中需要用到比较多的数学知识,只需要知道,怎么样把这个问题的参数拿出来,丢给一些专门解QP问题的软件去解。
把上面的条件整理下,
利用矩阵形式,QP问题可写成下面的形式:
我们只要求出Q,p,A,c这四个参数,就可以把它丢到解QP问题的软件中求解出
对于SVM中那个优化目标的式子,我们最终要求得的
这样解QP问题的四个参数就出来了
为什么最大分割面的直线是最佳的
SVM最优化函数和正则化的关系
SVM是让w的长度最短,并且让训练误差为0,而正则化是让训练误差最小,然后把w的长度限制在一个范围内。从这里可以看出SVM的hypothesis空间比正则化更小,因此可以有更好的泛化能力。
从VC维的角度看SVM
根据VC维理论泛华误差
下面这个图中,如果没有margin限制,那么3个点可以做出8中分割超平面来
但是如果限制了最大margin,8种种的很多分割平面是不符合要求的(如下面第3个图和第4个图),如下图,因此模型的vc维也会比一般模型更小。
有理论可以证明
证明略。
总结
本文介绍了SVM的最大分割平面求解,并解释了为什么最大分割面是泛化风险最小的。
后面还会有以下几个问题
- SVM如何处理线性不可分的样本
- SVM如何利用SVM对偶问题推导出利用kernel方法把低维空间的样本推广到高维空间甚至无穷维空间中
- SVM在实际应用中如何选择参数及kernel函数
Support Vector的背后意义
我的微信公众号是:数据科学家的日常,会记录一些我平时的学习心得以及各种机器学习算法的学习笔记,欢迎关注。
- SVM(Support Vector Machine)读书笔记一(最佳分割超平面)
- SVM(Support Vector Machine)
- SVM(Support Vector Machine)读书笔记三(Soft-margin SVM)
- SVM Support Vector Machine
- SVM(Support Vector Machine)
- SVM(Support Vector Machine)
- SVM(Support Vector Machine)读书笔记二(支持向量和Kernel方法)
- [Machine Learning] SVM--support vector machine
- 机器学习实战(5)--SVM(Support vector machine)(一)
- 论文读书笔记-Support vector machine
- 机器学习:支持向量机(Support Vector Machine, SVM)
- 支持向量机(Support Vector Machine,SVM)详解
- SVM(support vector machine)支持向量机原理详解
- 支持向量机SVM(Support Vector Machine)
- Machine learning-------------SVM(support vector machines)
- SVM支持向量机(Support Vector Machine)
- SVM (support vector machine) 小小结
- Machine learning-------------SVM(support vector machines)
- 基本数据结构
- iOS中的Masonry纯代码适配屏幕例子
- ViewPager 详解(一)---基本入门
- JavaGC垃圾处理
- CSS中的display
- SVM(Support Vector Machine)读书笔记一(最佳分割超平面)
- Android 引用外部项目库笔记
- java学习
- 为app创建快捷方式
- 【iOS】自定义TabBarController
- 基于文档的应用程序
- linux历史命令
- JSP基础
- HTML5的五种客户端离线存储方案