5.6算法-分类-svm-支持向量机

https://blog.youkuaiyun.com/u011630575/article/details/78916747
SVM
SVM:Support Vector Machine
中文名:支持向量机
学习模型
有监督学习:需要事先对数据打上分类标签,这样机器就知道数据属于哪一类。
无监督学习:数据没有打上分类标签,有可能因为不具备先验知识,或打标签的成本很高,需要机器代替我们部分完成改工作,比如将数据进行聚类,方便后人工对每个类进行分析。
SVM 是有监督的学习模型:可以进行模式识别、分类以及回归分析。
SVM工作原理
示例: 桌面上有两种颜色混乱的小球,我们将这两种小球来区分开,我们猛拍桌子小球会腾起,在腾空的那一刹那,会出现一个水平切面,将两种颜色的球分开来。
原因: 二维平面无法找出一条直线来区分小球颜色,但是在三位空间。我们可以找到一个平面来区分小球颜色,该平面我们叫做超平面。
SVM计算过程: 就是帮我们找到一个超平面的过程,该超平面就是 SVM分类器。
分类间隔
我们在示例中,会找到一个决策面来将小球颜色分离,在保证决策面C不变,且分类不产生错误的情况下,我们可以移动决策面,来产生两个极限位置:决策面A和决策面B,分界线C就是最优决策面,极限位置到最优决策面的距离就是 分类间隔 。
我们可以转动最优决策面,会发现存在多个最优决策面,它们都能把数据集正确分开,这些最优决策面的分类间隔可能是不同的,拥有最大间隔的决策面就是 SVM 需要的最优解。
点到超平面距离公式
决策面在一维空间就是一个点、二维空间就是一条直线、三维空间就是一个平面,当空间维度更多,这个线性函数名称叫做 “超平面”:g(x)=wTx+bg(x)=wTx+b,其中w,x∈Rnw,x∈Rn
w、x是n维空间里的向量,其中x是函数变量,w是法向量。法向量指的是垂直于平面直线所表示的向量,决定超平面的方向。
SVM就是帮我们找到一个超平面 ,这个超平面能将不同样本划分,使得样本集中的点到这个分类超平面的最小距离(分类间隔)最大化,在这个过程中 支持向量 就是离 分类超平面 最近的样本点,如果确定了支持向量也就确定了这个超平面,所以支持向量决定了分类间隔是多少,在最大间隔以外的样本点,对分类都没有意义。
SVM就是求解 最大分类间隔的过程,我们还要对分类间隔大小进行定义。
定义某类样本集到超平面的距离就是这个样本集合内的样本到超平面的最短距离,用di代表点xi到超平面wxi+b=0的欧氏距离。因此我们求di最小值,计算公式di=∣wxi+b∣∣∣w∣∣di=∣∣w∣∣∣wxi+b∣,其中∣∣w∣∣∣∣w∣∣为超平面的范数,di可以用解析几何知识进行推导。
最大间隔优化模型
目标: 找出所有分类间隔中最大的那个值对应的超平面。
硬间隔、软间隔和非线性SVM
数据线性可分:模型称为硬间隔支持向量机
1.硬间隔:完全分类准确,不存在分类错误的情况
2.软间隔:允许一定量的样本分类错误
非线性数据:模型称为非线性支持向量机
非线性数据集合: 两种颜色的小球,呈现大小圆环的形状。
非线性数据集合,不论多高级的分类器,只要映射函数是线性的,就没办法处理,SVM也处理不了。
核函数: 可以将样本从原始空间映射到一个更高的特质空间中,使得样本在新空间中线性可分,我们就以可以使用原来的推到进行计算,所有推到都是在新空间,而不是在原来的空间中进行。
在非线性SVM中,核函数的选择就是影响SVM最大的变量,下面是常用的核函数
1.线性核
2.多项式核
3.高斯核
4.拉普拉斯核
5.sigmoid核
这些函数的区别在于映射方式的不同,通过核函数就能把样本空间投射到新的高维空间中。
结果: 软间隔和核函数的提出,都是为了方便对超平面公式中的w和b进行求解,得到最大分类间隔的超平面。
SVM解决多分类问题
SVM本身就是一个二值分类器,最初是为二分类问题设计的,就是回答Yes/No,但是实际解决的问题,可能是多分类情况,比如:文本进行分类、图像进行识别。
多分类情况,可以将多个二分类器组合起来形成一个多分类器,常见方法有一对多法、一对一法两种。
一对多法
我们将物体分为A、B、C、D四种分类,先把其中的一类作为分类1,其他类归为分类2,我们来构造4种SVM,分为以下情况:
1.样本A作为正集,B、C、D作为负集
2.样本B作为正集,A、C、D作为负集
3.样本C作为正集,A、B、D作为负集
4.样本D作为正集,A、B、C作为负集
优点: 针对K个分类,需要训练K个分类器,分类速度较快
缺点: 训练速度慢,每个分类器需要对全部样本进行训练,而且负样本数量远大于正样本数量,会造成样本不对称情况,而且增加新的非累,需要重新对分类器进行构造。
一对一法
任意两类样本之间构造一个SVM,这样针对K类的样本,就会有C(k,2)C(k,2)类分类器,训练的时候更加灵活。
我们划分A、B、C三个类,可以构造3个分类器:
1.分类器:A、B
2.分类器:A、C
3.分类器:B、C
当对一个未知样本进行分类,每一个分类器有一个分类器结果,为1票,最终得票最多的类就是整个未知样本的类别。
优点: 新增一类,不需要重新训练所有的SVM,只需要训练和新增这一类样本的分类器,在训练单个SVM模型的时候,训练速度很快。
缺点: 分类器的个数与K的平方成正比,当K较大时,训练和测试的时间会比较慢。
 
 
   如果你是一名模式识别专业的研究生,又或者你是机器学习爱好者,SVM是一个你避不开的问题。如果你只是有一堆数据需要SVM帮你处理一下,那么无论是Matlab的SVM工具箱,LIBSVM还是python框架下的SciKit Learn都可以提供方便快捷的解决方案。但如果你要追求的不仅仅是会用,还希望挑战一下“理解”这个层次,那么你就需要面对一大堆你可能从来没听过的名词,比如:非线性约束条件下的最优化、KKT条件、拉格朗日对偶、最大间隔、最优下界、核函数等等。
      以下我会分为四个步骤对最基础的线性SVM问题加以介绍,分别是1)问题原型,2)数学模型,3)最优化求解,4)几何解释。我尽可能用最简单的语言和最基本的数学知识对上述问题进行介绍。
一、SVM算法要解决什么问题
      SVM的全称是Support Vector Machine,即支持向量机,主要用于解决模式识别领域中的数据分类问题,属于有监督学习算法的一种。SVM要解决的问题可以用一个经典的二分类问题加以描述。如图1所示,红色和蓝色的二维数据点显然是可以被一条直线分开的,在模式识别领域称为线性可分问题。然而将两类数据点分开的直线显然不止一条。图1(b)和©分别给出了A、B两种不同的分类方案,其中黑色实线为分界线,术语称为“决策面”。每个决策面对应了一个线性分类器。虽然在目前的数据上看,这两个分类器的分类结果是一样的,但如果考虑潜在的其他数据,则两者的分类性能是有差别的。

图1 二分类问题描述
       SVM算法认为图1中的分类器A在性能上优于分类器B,其依据是A的分类间隔比B要大。这里涉及到第一个SVM独有的概念“分类间隔”。在保证决策面方向不变且不会出现错分样本的情况下移动决策面,会在原来的决策面两侧找到两个极限位置(越过该位置就会产生错分现象),如虚线所示。虚线的位置由决策面的方向和距离原决策面最近的几个样本的位置决定。而这两条平行虚线正中间的分界线就是在保持当前决策面方向不变的前提下的最优决策面。两条虚线之间的垂直距离就是这个最优决策面对应的分类间隔。显然每一个可能把数据集正确分开的方向都有一个最优决策面(有些方向无论如何移动决策面的位置也不可能将两类样本完全分开),而不同方向的最优决策面的分类间隔通常是不同的,那个具有“最大间隔”的决策面就是SVM要寻找的最优解。而这个真正的最优解对应的两侧虚线所穿过的样本点,就是SVM中的支持样本点,称为“支持向量”。对于图1中的数据,A决策面就是SVM寻找的最优解,而相应的三个位于虚线上的样本点在坐标系中对应的向量就叫做支持向量。
  &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值