SVM-线性可分支持向量机
SVM-线性可分支持向量机
如果您想体验更好的阅读:请戳这里littlefish.top
函数间隔和几何间隔
给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为
$$w^* \cdot x+b^* =0 $$
以及相应的分类决策函数
$$f(x) = sign (w^* \cdot x + b^*)$$
称为线性可分支持向量机。
对于给定训练集合T和超平面$(w,b)$,定义超平面$(w,b)$关于样本点$(x _i,y_i)$的函数间隔为
$$\hat\gamma_i = y_i(w \cdot x_i + b)$$
定义超平面$(w,b)$关于训练数据集T的函数间隔为超平面$(w,b)$关于T中所有样本点$(x_i,y_i)$的函数间隔之最小值,
$$\hat\gamma = min_{i=1,...,N}\hat\gamma_i$$
对于给定的训练数据集和超平面$(w,b)$,定义超平面$(w,b)关于$样本$(x_i,y_i)$的几何间隔为
$$\hat\gamma_i = y_i(\frac w{||w||} \cdot x_i + \frac b{||w||})$$
定义超平面$(w,b)$关于训练数据集T的几何间隔为超平面$(w,b)$关于T中所有样本点$(x_i,y_i)$的几何间隔之最小值
$$\gamma = min_{i=1,...,N}\gamma_i$$
从而得到几何间隔和函数间隔的关系:
$$\gamma = \frac{\hat\gamma_i}{||w||}$$
间隔最大化
对数据集合找到几何间隔最大的超平面意味着以充分大的确信度来对训练数据进行分类。
最大化超平面可表示为:
$$max_{w,b} \quad {\gamma}\
s.t.\quad y_i(\frac w{||w||} \cdot x_i + \frac b{||w||}) \ge \gamma,\quad i=1,...,N$$
即最大化超平面$(w,b)$关于训练结合的间隔$\gamma$,约束条件表示的超平面$(w,b)$关于每个训练样本点的几何间隔至少为$\gamma$。
而函数间隔对于上述公式并没有影响,假设按比例改变为$\lambda w$和$\lambda b$,那么函数间隔改变为$\lambda \hat\gamma$
改变为相应的函数距离,如下
$$max_{w,b} \quad \frac{\hat\gamma}{||w||}\
s.t.\quad y_i(w \cdot x_i + b) \ge \hat\gamma,\quad i=1,...,N$$
由于分母和分子同时拥有$\lambda$,因此成比例改变并不会对函数间隔产生影响,从而对目标函数的优化也没有影响。
令$\hat\gamma$=1,代入上式,最大化$\frac1{||w||}$等价于最小化$\frac12||w||$,从而得到线性可分支持向量机学习的最优化问题
$$min_{w,b}\quad \frac12{||w||}^2\
s.t.\quad y_i(w\cdot x_i + b) - 1 \ge 0, \quad i=1,2,...,N$$
这是一个凸二次规划问题。
支持向量
在线性可分的情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量(support vector),即
$$y_i(w\cdot x_i+b) =1$$
对于y=+1的正例来说,支持向量在超平面
$$H_1:w\cdot x + b= 1$$
对于y=-1的负例来说,支持向量在超平面
$$H_2:w\cdot x + b = -1$$
如图中, H1和H2平行,之间形成一条长带,其宽度为$\frac 2 {||w||}$。在决定分离超平面时只有支持向量起作用,而其他实例点并不起作用,如果移动支持向量改变所求的解,但是如果在间隔边界(H1和H2)以外移动其他实例点,解都不会发生改变。
对偶算法
为了求解线性可分支持向量机的最优化问题,应用拉格朗日对偶性,通过求解对偶问题得到最优解。
定义拉格朗日函数:
$$L(w,b,\alpha) = \frac 1 2 {||w||}^2 - \sum_{i=0}^n \alpha_i y_i(w\cdot x_i + b) + \sum_{i=1}^N\alpha_i$$
其中,$\alpha = (\alpha_1, \alpha_2,...,\alpha_N)^T$为拉格朗日乘子向量。
根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题需要先求$L(w,b,\alpha)$对(w,b)求极小,再对$\alpha$求极大:
$$\max_\alpha \min_{w,b} L(w,b,\alpha)$$
- $\min_{w,b} L(w,b,\alpha)$
分别对$w,b,\alpha$求偏导数,并令其等于0,将结果带入原公式中即得
$$\min_{w,b} L(w,b,\alpha) = -\frac 1 2 \sum_{i-=1}^N \sum_{j-=1}^N \alpha_i \alpha_j y_i y_j (x_i \cdot x_j) + \sum_{i=1}^N \alpha_i$$
- 求$\min_{w,b} L(w, b, \alpha)$对$\alpha$的极大
$$\max_\alpha -\frac 1 2 \sum_{i-=1}^N \sum_{j-=1}^N \alpha_i \alpha_j y_i y_j (x_i \cdot x_j) + \sum_{i=1}^N \alpha_i \
s.t.\quad \sum_{i=1}^N\alpha_i y_i=0, \quad \alpha_i > 0,i=1,2,...,N$$
等价于:
$$\min_\alpha \frac 1 2 \sum_{i-=1}^N \sum_{j-=1}^N \alpha_i \alpha_j y_i y_j(x_i \cdot x_j) - \sum_{i=1}^N \alpha_i \
s.t.\quad \sum_{i=1}^N\alpha_i y_i=0, \quad \alpha_i > 0, i=1,2,...,N$$
线性可分支持向量机学习算法
(1)构造并求解约束最优化问题
$$\min_\alpha \frac 1 2 \sum_{i-=1}^N \sum_{j-=1}^N \alpha_i \alpha_j y_i y_j(x_i \cdot x_j) - \sum_{i=1}^N \alpha_i \
s.t.\quad \sum_{i=1}^N\alpha_i y_i=0, \quad \alpha_i > 0, i=1,2,...,N$$
(2)计算
$$w^* = \sum_{i=1}^N \alpha_i^* y_i x_i$$
并选择$\alpha^*$的一个正分量$\alpha_j^*$,计算
$$b^* = y_i - \sum_{i=1}^N \alpha_i^*y_i(x_i \cdot x_j)$$
(3)求得分离超平面
$$w^* \cdot x + b^* = 0$$
分类决策函数
$$f(x) = sign(w^* \cdot x + b^*)$$
SVM-线性可分支持向量机的更多相关文章
- 线性可分支持向量机与软间隔最大化--SVM(2)
线性可分支持向量机与软间隔最大化--SVM 给定线性可分的数据集 假设输入空间(特征向量)为,输出空间为. 输入 表示实例的特征向量,对应于输入空间的点: 输出 表示示例的类别. 我们说可以通过间隔最 ...
- 线性可分支持向量机--SVM(1)
线性可分支持向量机--SVM (1) 给定线性可分的数据集 假设输入空间(特征向量)为,输出空间为. 输入 表示实例的特征向量,对应于输入空间的点: 输出 表示示例的类别. 线性可分支持向量机的定义: ...
- svm 之 线性可分支持向量机
定义:给定线性可分训练数据集,通过间隔最大化或等价的求解凸二次规划问题学习获得分离超平面和分类决策函数,称为线性可分支持向量机. 目录: • 函数间隔 • 几何间隔 • 间隔最大化 • 对偶算法 1. ...
- 统计学习:线性可分支持向量机(SVM)
模型 超平面 我们称下面形式的集合为超平面 \[\begin{aligned} \{ \bm{x} | \bm{a}^{T} \bm{x} - b = 0 \} \end{aligned} \tag{ ...
- 统计学习2:线性可分支持向量机(Scipy实现)
1. 模型 1.1 超平面 我们称下面形式的集合为超平面 \[\begin{aligned} \{ \bm{x} | \bm{a}^{T} \bm{x} - b = 0 \} \end{aligned ...
- SVM清晰讲解——线性可分问题
转载作者:liangdas 引言: 1995年Cortes和Vapnik于首先提出了支持向量机(Support Vector Machine),由于其能够适应小样本的分类,分类速度快等特点,性能不差于 ...
- SVM明确的解释1__
线性可分问题
笔者:liangdas 出处:简单点儿,通俗点儿,机器学习 http://blog.csdn.net/liangdas/article/details/44251469 引言: 1995年Cor ...
- 线性可分SVM中线性规划问题的化简
在网上找了许多关于线性可分SVM化简的过程,但似乎都不是很详细,所以凭借自己的理解去详解了一下. 线性可分SVM的目标是求得一个超平面(其实就是求w和b),在其在对目标样本的划分正确的基础上,使得到该 ...
- 模式识别之svm()---支持向量机svm 简介1995
转自:http://www.blogjava.net/zhenandaci/archive/2009/02/13/254519.html 作者:Jasper 出自:http://www.blogjav ...
随机推荐
- 在Xcode中使用Git进行源码版本控制
http://www.cocoachina.com/ios/20140524/8536.html 资讯 论坛 代码 工具 招聘 CVP 外快 博客new 登录| 注册 iOS开发 Swift Ap ...
- js判断字符串中是否含有指定汉语
核心代码: function haveChinese(str,c){ if(escape(str).indexOf(escape(c))!=-1){ retrun true; } return fal ...
- FibonacciSequence
import java.util.Scanner; public class Fibonacci { public static void main(String[] args) { int n; f ...
- centOS升级python3.5
CentOS自带的版本是2.7.5 目前在看廖老师的教学,他给的新版本是3以上了,果断升级到最新的Python版本 (windows下面多线程里面有点问题没解决,所以才换到linux下继续学习) 一 ...
- virtualbox下面安装ubuntu后外网如何远程ssh访问
这两天在折腾virtualbox安装linux的事情,想多弄几个节点,装hadoop, 环境如下 两台thinkpad, 一台正常上班用的,win7 一台装的ubuntu kylin 16.04, 上 ...
- css两列自适应布局的多种实现方式及原理。
两列布局是非常常见的需求在实际项目中,实现的方式也有很多.究其原理也都不算复杂.这里主要提出几种实现方式和原理. html页面基本布局如下代码所示: 1 <div class="mai ...
- Java猜拳小游戏(剪刀、石头、布)
1.第一种实现方法,调用Random数据包,直接根据“1.2.3”输出“剪刀.石头.布”.主要用了9条输出判断语句. import java.util.Random; import java.util ...
- new的原罪
一直以为在开发阶段能够直接调用的,速度而言一定是最优秀的,因为总比后期通过反射之类来调用来得快吧. 下面请看一个SB的例子,重新编译以后,这个类在创建100,000,000实体时居然耗费了16秒的时间 ...
- bochs上网及配置
下载并安装bochs2.6:(不能是更高版本) 创建bochs 时注意勾选Dlx linux Demo,但是其文件bochsrc.bxrc中无Ne2k网卡选项,这一段要自己添加,详情见后. 先确定我们 ...
- 个人博客作业week2——代码复审
1.代码规范 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 代码规范并不是从官僚制度下产生,它是为了提高项目团队开发效率而产生的一种工具,能够极大的增强代码可读 ...