支撑矢量机SVM
1.线性SVM
首先,回顾一下SVM问题的定义,如下:

线性约束很烦,不方便优化,是否有一种方法可以将线性约束放到优化问题本身,这样就可以无拘无束的优化,而不用考虑线性约束了。其对应的拉格朗日对偶形式为:



最终的优化结果保证离超平面远的点的权重为0。
经过上面的对偶变化,下面来一步一步的简化我们的原始问题,

首先对b求偏导数,并且为0:

对w求偏导数:
也就是
化简原型

将w带入,并且去掉min,得到如下

执行到这里,现在目标函数只与有关,形式满足QP,可以轻易得到,也就是得到w。但是在计算过程中,需要计算一个中间矩阵Q,维度为N*N,这个是主要计算开销。上一讲无需计算这个Q,因为Q的形式十分简单。
计算出拉格朗日乘子就得到了w:

而对于b的计算,KT条件帮助我们解决这个问题。如果原始问题和对偶问题都有最优解,且解相同,那么会满足KKT条件。这也是一个充分必要条件,其中很重要的一点是complementary
slackness(互补松弛性),该条件有下面等式成立,

由于(对偶条件),且(原始条件),那么两者有一个不为0时,另外一个必然为0。所以,只要找到一个,就可以利用这个性质计算出b,计算方

理论来说,只需要一个点就可以,但是实际上由于计算有误差,可能会计算所有的b,然后求平均。并且这些可以计算出b的点,就是支持向量,因为他们满足了原始问题中支撑向量的定义。但是,并不是所有的支撑向量,都有对应的。一般的,我们只用的向量称为支撑向量:
或者,b这样计算:
2.非线性SVM
对于数据不可分的情况,使用核空间映射方法。即将线性不可分,映射到高维度空间,变为线性可分。在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身不好分的非线性数据分开。
本质上,不知道非线性核映射的具体形式。实际上需要的也只是两个向量在核映射后的内积值而已。常使用的核函数包括SVM核函数。同时,对于新样本,也并未实际需要计算出w。如分类函数所示
3.带松弛变量的SVM
通常,高维数据本身是非线性结构的,而只是因为数据有噪音。经常存在偏离正常位置很远的数据点,我们称之为 outlier ,在我们原来的 SVM 模型里,outlier 的存在有可能造成很大的影响,因为超平面本身就是只有少数几个 support vector 组成的,如果这些 support
vector 里又存在 outlier 的话,其影响就很大了。
松弛变量定义了一个常量,即对于每个支撑样本,容许他距离超平面的距离在1的一定范围内波动,即:
C为松弛系数或者惩罚因子,优化目标方程变为:
其中 C是一个参数,用于控制目标函数中(“寻找margin最大的超平面”和“保证数据点偏差量最小”)之间的权重。注意,其中
ξ 是需要优化的变量(之一),而C是一个事先确定好的常量。对应的拉格朗日对偶形式为:
(2)松弛变量的值实际上标示出了对应的点到底离群有多远,值越大,点就越远。
(3)惩罚因子C决定了你有多重视离群点带来的损失,显然当所有离群点的松弛变量的和一定时,你定的C越大,对目标函数的损失也越大,此时就暗示着你非常不愿意放弃这些离群点,即希望松弛变量越小越好。最极端的情况是你把C定为无限大,这样只要稍有一个点离群,目标函数的值马上变成无限大,马上让问题变成无解,这就退化成了硬间隔问题。
(4)惩罚因子C不是一个变量,整个优化问题在解的时候,C是一个你必须事先指定的值。
参考:
1.机器学习基石--学习笔记02--Hard Dual SVM
4.机器学习算法与Python实践之(二)支持向量机(SVM)初
支撑矢量机SVM的更多相关文章
- 走过路过不要错过 包你一文看懂支撑向量机SVM
假设我们要判断一个人是否得癌症,比如下图:红色得癌症,蓝色不得. 看一下上图,要把红色的点和蓝色的点分开,可以画出无数条直线.上图里黄色的分割更好还是绿色的分割更好呢?直觉上一看,就是绿色的线更好.对 ...
- 8.支撑向量机SVM
1.什么是SVM 下面我们就来介绍一些SVM(Support Vector Machine),首先什么是SVM,它是做什么的?SVM,中文名是支撑向量机,既可以解决分类问题,也可以解决回归问题,我们来 ...
- 第11章 支撑向量机SVM
Support Vector Machine , 问题:如果决策边界不唯一 , , , , , , , , s.t.(such that):之前都是全局最优化问题,这次是有条件的最优化问题 har ...
- SVM学习笔记-线性支撑向量机
对于PLA算法来说,最终得到哪一条线是不一定的,取决于算法scan数据的过程. 从VC bound的角度来说,上述三条线的复杂度是一样的 Eout(w)≤Ein0+Ω(H)dvc= ...
- 统计学习方法:支撑向量机(SVM)
作者:桂. 时间:2017-05-13 21:52:14 链接:http://www.cnblogs.com/xingshansi/p/6850684.html 前言 主要记录SVM的相关知识,参考 ...
- 支撑向量机(SVM)
转载自http://blog.csdn.net/passball/article/details/7661887,写的很好,虽然那人也是转了别人的做了整理(最原始文章来自http://www.blog ...
- SVM支撑向量机原理
转自:http://blog.csdn.net/v_july_v/article/details/7624837 目录(?)[-] 支持向量机通俗导论理解SVM的三层境界 前言 第一层了解SVM 1分 ...
- 机器学习实战笔记(Python实现)-05-支持向量机(SVM)
--------------------------------------------------------------------------------------- 本系列文章为<机器 ...
- Python----支持向量机SVM
1.1. SVM介绍 SVM(Support Vector Machines)——支持向量机.其含义是通过支持向量运算的分类器.其中“机”的意思是机器,可以理解为分类器. 1.2. 工作原理 在最大化 ...
随机推荐
- 十大监视SQL Server性能的计数器
作为DBA,每个人都会用一系列计数器来监视SQLSERVER的运行环境,使用计数器,既可以衡量当前的数据库的性能,还可以和以前的性能进行对比.我们也可以一直以快速和简单的方法把计数器做了一张图表来 ...
- 获得Version和Build版本号
[[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"] ?: [[NSBundle mainBu ...
- 完全分布式安装hadoop集群
0.安装jdk 1.配置hosts文件 2.建立hadoop运行账号 3.配置ssh免密码登录 4.在namenode上配置hadoop 4.1.修改hadoop-env.sh文件 4.2.修改yar ...
- CMMI 3级精简并行过程综述
“精简并行过程”(Simplified Parallel Process,SPP)是基于CMMI以及软件工程和项目管理知识而创作的一种“软件过程改进方法和规范”,它由众多的过程规范和文档模板组成.SP ...
- LeetCode OJ:Binary Tree Right Side View(右侧视角下的二叉树)
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nod ...
- 关于stl advance函数移动步数超过容器大小(越界)的研究
今天使用advance遇到个问题,当advance移动步数超过容器大小时,表现的结果居然不一样. 再来看下stl源码 template<typename _BidirectionalIterat ...
- 总结的一些MySQL数据库面试题
1.sql语句应该考虑哪些安全性? 1.防止sql注入,对特殊字符进行转义,过滤或者使用预编译的sql语句绑定变量. 2.最小权限原则,特别是不要用root账户,为不同的类型的动作或者组建使用不同的账 ...
- JavaWeb框架_Struts2_(四)----->表达式语言OGNL
2. 表达式语言OGNL 2.1 OGNL简介 OGNL(Object-Graph Navigation Language)对象图导航语言的缩写,OGNL是一种表达式语言(Expression L ...
- GWT更改元素样式属性
GWT有时候不像普通网页那样可以自由的添加CSS改变样式,所幸gwt提供了一些底层的方法,通过这些方法来实现DOM操作等.通过gwt部件的getElement()可以取得dom上的元素,这时就能对该元 ...
- clone对象的克隆
用一句简单的话来说就是浅拷贝,只是对指针的拷贝,拷贝后两个指针指向同一个内存空间,深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经深拷贝后的指针是指向两个不同地址的指针. 等多 http:/ ...