SVM清晰讲解——线性可分问题
转载作者:liangdas
引言:
1995年Cortes和Vapnik于首先提出了支持向量机(Support Vector Machine),由于其能够适应小样本的分类,分类速度快等特点,性能不差于人工神经网络,所以在这之后,人们将SVM应用于各个领域。大量使用SVM模型的论文不断涌现,包括国内和国外。
但是,直到现在,很少能见到一个能对SVM的原理准确,详细,通俗,严谨阐述的论文或者资料,所以决定查阅很多的资料,结合自己的思考和理解,来写一篇关于SVM的系列文章。
线性可分问题:
在分类问题中,最简单的分类就是二分类问题,而且这个二分类问题是一个线性可分问题。那么对于一个线性二分类问题,它的目标函数是什么呢?确定目标函数之后,我们又用什么方法来求解呢?
在一维空间,也就是一个坐标轴上面,要分开两个可以分开的点集合,我们只需要找到一个点,如图1:

图1 一维线性可分示意图
在二维空间中,要分开两个线性可分的点集合,我们需要找到一条分类直线即可,如图2:

图2 二维线性可分示意图
在三维空间中,要分开两个线性可分的点集合,我们需要找到一个分类面:如图3:

图3 三维线性可分示意图
在n维空间中,要分开两个线性可分的点集合,我们需要找到一个超平面(Hyper Plane)。
为了直观,我们以上面二维空间为例子来分析:在图2中分布着两类点:淡蓝色和黑色的点,分别代表着不同的两个类别,显然,我们可以找到一条直线来把这两类点分开,高中的时候,常见的直线方程表达式是y=ax+b,我们现在用向量来表示,就是:,把向量(a,-1)用向量符号w来表示,维数向量(x,y)用向量符号x(此时的x是一个向量)来表示,那么直线方程就变成了wx + b = 0。
目标函数:
再次观察图2,可以知道,在这个二维平面中,可以把两类点的分开的直线有很多条,如图4所示,那么这些直线中,哪一条才是最好的呢?也就是如何选择出一条最好的直线呢?

图4 多条分类直线
在图4中,我们先看淡蓝色的点,如果这些点到分类直线的距离越大,分类直线也就越远离蓝色的点,那么再来一个新的点,如果这个点是依照淡蓝色点集合的特性产生的(也就是它不是一个相对于蓝色点集合很奇异的点),那么这个点也很可能和蓝色的点集合一样,分布在直线的同一侧。分布在同一侧,表明它和蓝色集合点属于同一个类别。用同样的思想,图4中,对于黑色的集合点,这条分类直线离它们的距离也要越远越好。所以找最优分类线,就是要找到这条一条直线,使它到两个类别点的距离越大越好。
回忆一下高中所学的点到直线的距离公式:直线(一般式):Ax+By+C=0另外一个点的坐标(x0, y0),那么这点到这直线的距离就是:

那么,对于直线wx+b=0的形式,如果有一个点x,那么它到直线的距离公式就是,把向量
写成二范数的形式,即是:

所以上面的二维线性可分问题的目标函数就可以抽象成如下的数学表达式:

目标函数的简化:
对于一个待分类类别,为了自己的类别能准确地分类,都希望分类直线到自己的距离大些,当有两类的时候,就会形成相互竞争,最后的竞争结果就是让这条分类直线,到两个类别的距离相等,在生活中,通常也是这样达到一种平衡状态的。
如图5,我们作两条直线,和分类直线平行,让这两条直线分别经过下面蓝色和黑色集合的边界,同时,满足这两条直线到中间分类直线的距离相等,那么,我们可以假定这两条直线方程分别是wx+b=c, wx+b=-c。

图5 两类别到分类直线的距离相等
用两条平行直线的距离计算公式, 那么,两个类别集合到分类直线的最近距离
,这个公式,其实和上面点到直线的距离公式是一样的。
对于一条直线,wx+b=c,我们相应的成比例的缩小他们的系数,如变成,这条直线和原来的直线还是同一条直线。现在把它变成
,新的直线还是和以前直线是同一条直线,也就是说,对于直线wx+b=c,我们总可以找到另外的一条新的 w1=w/c, b1=b/c,使w1*x+b1=1, 而且这两条直线其实表达的是同一条直线,这样的话,上面的图5可以变成如下的图6:

图6 两类别到分类直线的距离相等
从图6中,结合我们要寻找的最优分类直线,是到两类类别点集合的距离最大的直线的思想,我们可以抽象出此时的目标函数:
这样,这个目标函数看起来就比原来简洁多了。
目标函数的约束条件:
在图6中,对蓝色样本点而言,不在w1*x+b1=1直线上的点,一定是在直线上面的点,它们满足w1*x+b1>1,所以对所有的蓝色样本点而言,它们都满足w1*x+b1>=1;同理,对所有黑色的样本点,都是满足w1*x+b1<=-1。这两个条件是我们求解的限制条件,也就是我们寻找上面的目标函数的时候,必须满足上面的两个不等式约束。
满足条件:
观察上面的不等式条件表达式,是不是有一种想把两个式子合并成一个式子的冲动?其实,上面蓝色点对应的不等式,我们在不等式两边同时乘以一个y=1;同理,黑色点对应的不等式,在式子两边同时乘以一个y=-1, 那么上面的两个式子可以变成 。
但是,为什么可以在一个不等式的两边乘以一个1,而另外一个乘以-1呢?我们来看蓝色点对应的不等式,式子左边是样本点的维度向量x的表达式,对于一些训练样本点,它们还有一个已知的类别标记量label,这里我们把它叫做y,这样的话,对蓝色点的y值,我们人为将其定为1,而对黑色点的y值,我们将其定为-1,所以,对上面的两个不等式,分别在不等式的两边乘以类别值y,我们就可以自然将两个不等式合并成上面的那一个不等式了。这也是为什么我们在生成SVM训练样本的时候,将两个类别分别定义成1和-1的原因!
到这里,我们目标函数可以写成:
这样的一个目标函数是一个带不等式约束条件的优化问题,它怎么来求解呢?后面一章节来继续讲解这个问题。
SVM清晰讲解——线性可分问题的更多相关文章
- 支持向量机SVM——专治线性不可分
SVM原理 线性可分与线性不可分 线性可分 线性不可分-------[无论用哪条直线都无法将女生情绪正确分类] SVM的核函数可以帮助我们: 假设‘开心’是轻飘飘的,“不开心”是沉重的 将三维视图还原 ...
- SVM之解决线性不可分
SVM之问题形式化 SVM之对偶问题 SVM之核函数 >>>SVM之解决线性不可分 写在SVM之前——凸优化与对偶问题 上一篇SVM之核函数介绍了通过计算样本核函数,实际上将样本映射 ...
- SVM明确的解释1__
线性可分问题
笔者:liangdas 出处:简单点儿,通俗点儿,机器学习 http://blog.csdn.net/liangdas/article/details/44251469 引言: 1995年Cor ...
- 线性可分SVM中线性规划问题的化简
在网上找了许多关于线性可分SVM化简的过程,但似乎都不是很详细,所以凭借自己的理解去详解了一下. 线性可分SVM的目标是求得一个超平面(其实就是求w和b),在其在对目标样本的划分正确的基础上,使得到该 ...
- 线性可分支持向量机与软间隔最大化--SVM(2)
线性可分支持向量机与软间隔最大化--SVM 给定线性可分的数据集 假设输入空间(特征向量)为,输出空间为. 输入 表示实例的特征向量,对应于输入空间的点: 输出 表示示例的类别. 我们说可以通过间隔最 ...
- 线性可分支持向量机--SVM(1)
线性可分支持向量机--SVM (1) 给定线性可分的数据集 假设输入空间(特征向量)为,输出空间为. 输入 表示实例的特征向量,对应于输入空间的点: 输出 表示示例的类别. 线性可分支持向量机的定义: ...
- svm 之 线性可分支持向量机
定义:给定线性可分训练数据集,通过间隔最大化或等价的求解凸二次规划问题学习获得分离超平面和分类决策函数,称为线性可分支持向量机. 目录: • 函数间隔 • 几何间隔 • 间隔最大化 • 对偶算法 1. ...
- 统计学习:线性可分支持向量机(SVM)
模型 超平面 我们称下面形式的集合为超平面 \[\begin{aligned} \{ \bm{x} | \bm{a}^{T} \bm{x} - b = 0 \} \end{aligned} \tag{ ...
- SVM学习笔记-线性支撑向量机
对于PLA算法来说,最终得到哪一条线是不一定的,取决于算法scan数据的过程. 从VC bound的角度来说,上述三条线的复杂度是一样的 Eout(w)≤Ein0+Ω(H)dvc= ...
随机推荐
- ortp 发送RTP实例
参考源代码目录src/tests/rtpsend.c ortp_init(); ortp_scheduler_init(); ortp_set_log_level_mask(O ...
- Java当中的JVM
Java当中JVM 01 在使用控制面板时的实质: Hello.java使用javac,然后变成为Hello.class通过运行java这个命令,在类加载器中(含有加载,验证,准备,解析,初始化,使用 ...
- P2331 [SCOI2005]最大子矩阵 (动规:分类讨论状态)
题目链接:传送门 题目: 题目描述 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 输入输出格式 输入格式: 第一行为n,m,k( ...
- Web安全 概述
转载自 “余弦”大牛的评论 https://www.zhihu.com/question/21606800 大牛的个人blog:http://evilcos.me/ 作者:余弦链接:https://w ...
- Bellman-Ford的队列优化
Bellman-Ford算法在每实施依次松弛后,就会有一些顶点已经求得最短路,此后这些顶点的最短路的估计值就会一直不变,不再收后续松弛操作的影响,但是每次还要判断是否需要松弛,这就浪费时间了. 从上面 ...
- 手把手教你用MATLAB画灰度直方图
hist =[1,2,3,4,5,6,7,8,7,6,5,4,3,2,1] %15个元素 这个行矩阵(数组)输入到命令行 bar(hist) 用列矩阵也行 hist_im=imhis ...
- MySQL DataType--字符串类型
================================================= VARCHAR类型存储空间问题 当MySQL表使用ROW_FORMAT=FIXED时,对于定义VAR ...
- Android开发之GridView的使用(解读谷歌官方API)
GridView将图片显示在二维可移动的网格里.使用ListAdapter能够将Grid项目自己主动填充满整个布局. 以下我们依据官方文档的样例来实现一下使用GridView,点击视图里的 ...
- 深入理解计算机系统 (Randal E.Bryant / David O'Hallaron 著)
第1章 计算机系统漫游 (已看) 1.1 信息就是位+上下文 1.2 程序被其他程序翻译成不同的格式 1.3 了解编译系统如何工作是大有益处的 1.4 处理器读并解释存储在内存中的指令 1.4.1 系 ...
- python之路---10 *args **kwargs 命名空间 作用域 函数的嵌套
二十八.函数进阶 1. "*" 和 "**" ① 在形参位置时 都是聚合的作用 *args 位置参数→元组 **kwargs 关键字参数→ ...