SVM支持向量机
来源:互联网 发布:java类加载器有哪些 编辑:程序博客网 时间:2024/06/06 08:35
通俗来讲,SVM是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
从线性回归讲起
SVM主要是用来做分类工作,诸如文本分类,图像分类,生物序列分析和生 物数据挖掘, 手写字符识别等领域都有很多的应用。
对分类最简单的即线性分类器
用X表示数据点,Y表示类别(二分类中,y取1或-1),一个线性分类器的目标是在数据空间中找到一个分隔平面,这个分隔平面方程可以表示为:
为使目标函数值在-1到1之间,我们使用Logistic函数作为假设函数。
假设函数:
其中,x是n维特征向量,所以假设函数就是y=1的概率:
从而,有
接下来,将结果中y = 0 和 y = 1 替换为 y =-1,y = 1,然后将
函数间隔与几何间隔
在超平面
给定的训练数据集T和超平面w,b),定义超平面(w,b)关于样本点(xi,yi)的函数间隔为:
但这样定义的函数间隔有问题,即如果成比例的改变 w 和 b(如将它们改成 2w 和 2b),则函数间隔的值 f(x) 却变成了原来的 2 倍(虽然此时超平面没有改变),所以只 有函数间隔还远远不够。
平面法向单位化的函数间隔,即几何间隔
假定对于一个点 x ,令其垂直投影到超平面上的对应点为
从上述的定义可以看出:几何间隔就是函数间隔除以
最大间隔分类器
对一个数据点进行分类, SVM的思想是当超平面离数据点的“间隔”越大, 分类的确信度 (confidence)也越大。
定义目标函数:
回顾一下几何间隔的定义
从而上述目标函数转化成了:
这个目标函数便是在相应的约束条件
拉格朗日乘子法
由于求
因为现在的目标函数是二次的, 约束条件是线性的, 所以它是一个凸二次规划问题。这个问题可以用现成的 QP (Quadratic Programming) 优化包进行求解。一言以蔽之:在一定的约束条件下,目标最优,损失最小。
此外,由于这个问题的特殊结构,还可以通过拉格朗日对偶性(Lagrange Duality) 变换到对偶变量 (dual variable) 的优化问题, 即通过求解与原问题等价的对偶问题 (dual problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算 法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数, 进而推广到非线性分类问题。
那什么是拉格朗日对偶性呢?简单来讲,通过给每一个约束条件加上一个拉格朗日 乘子(Lagrange multiplier),定义拉格朗日函数
原问题是极小极大问题
原始问题的对偶问题,是极大极小问题
将拉格朗日函数L(w,b,α)分别对w,b求偏导并令其为0,
将上式带入拉格朗日函数L(w,b,α)中,得到:
继续求
整理目标函数,求解出最优的
上式为一般的含不等式约束问题,存在最优化解法的必要和充分条件即KKT条件(详情可查看等式约束与不等式约束问题):
为方便理解,我们把所有的不等式约束、等式约束和目标函数全部写为一个式子,简化为
KKT条件是说最优值必须满足以下条件:
1)∂L/∂xi=0对x求导为零;
2)h(x) =0;
3)a*g(x) = 0;
求取这些等式之后就能得到候选最优值。其中第三个式子非常有趣,因为g(x)<=0,如果要满足这个等式,必须
所谓 支撑向量Supporting Vector 也在这里显示出来——事实上,所有 非 Supporting Vector 所对应的系数 都是等于零的,因此对于新点的内积计算实际上 只要针对少量的“支持向量”而不是所有的训练数据即可。
核函数
对于线性不可分的情况,可以使用核函数,将输入空间映射到特征空间(通俗说来是从低维空间映射到高维空间),从而使得原本线性不可分的样本可以在特征空间可分。
在实际应用中,往往依赖先验领域知识才能选择有效的核函数
常见的核函数有
多项式核函数:
高斯核函数:
参考链接:
[1].统计学习方法,李航著,清华大学出版社,2012年
[2].http://blog.csdn.net/v_july_v/article/details/7624837
http://www.cnblogs.com/zjgtan/archive/2013/09/03/3298213.html
- 支持向量机SVM
- SVM支持向量机
- svm支持向量机
- SVM支持向量机
- [SVM]支持向量机
- SVM 支持向量机
- 支持向量机SVM
- SVM 支持向量机
- svm支持向量机
- 支持向量机SVM
- svm支持向量机
- SVM (支持向量机)
- SVM支持向量机
- SVM支持向量机
- 支持向量机SVM
- 支持向量机(SVM)
- 支持向量机-SVM
- 支持向量机SVM
- 当你输入在浏览器输入网址发生了什么
- 367. Valid Perfect Square
- 2016蓝桥杯第二题答案
- BZOJ 3729 splay维护DFS序+博弈论
- 一位资深程序员大牛给予Java初学者的学习建议
- SVM支持向量机
- 105. Construct Binary Tree from Preorder and Inorder Traversal\106. Construct Binary Tree from Inor
- 当FragmentTransaction在add和replace时,它们之间的区别
- 物联网操作系统HelloX V1.81发布公告
- 原型模式
- IPC机制--概述
- Flume 1.7 源码分析(一)源码编译
- IJ IDEA创建Spring Boot项目初始化失败-无法下载
- 《自顶向下法》学习笔记——第四章:网络层