热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

机器学习——SVM支持向量机

一、简介支持向量机(supportvectormachines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,

一、简介

支持向量机(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。模型包括:
当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;
当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;
当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机。

二、线性可分支持向量机

给定训练样本集D=(x1,y1),(x2,y2),⋯,(xm,ym),其中yi∈{−1,+1},分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开。

如果一个线性函数能够将样本分开,称这些数据样本是线性可分的。那么什么是线性函数呢?其实很简单,在二维空间中就是一条直线,在三维空间中就是一个平面,以此类推,如果不考虑空间维数,这样的线性函数统称为超平面。我们看一个简单的二维空间的例子,O代表正类,X代表负类,样本是线性可分的,但是很显然不只有这一条直线可以将样本分开,而是有无数条,我们所说的线性可分支持向量机就对应着能将数据正确划分并且间隔最大的直线。

那么我们考虑第一个问题,为什么要间隔最大呢?一般来说,一个点距离分离超平面的远近可以表示分类预测的确信度,如图中的A B两个样本点,B点被预测为正类的确信度要大于A点,所以SVM的目标是寻找一个超平面,使得离超平面较近的异类点之间能有更大的间隔,即不必考虑所有样本点,只需让求得的超平面使得离它近的点间隔最大。 接下来考虑第二个问题,怎么计算间隔?只有计算出了间隔,才能使得间隔最大化。在样本空间中,划分超平面可通过如下线性方程来描述:
在这里插入图片描述
其中w为法向量,决定了超平面的方向,b为位移量,决定了超平面与原点的距离。假设超平面能将训练样本正确地分类,即对于训练样本(xi,yi),满足以下公式:
在这里插入图片描述
该公式被称为最大间隔假设,yi=+1 表示样本为正样本,yi=−1 表示样本为负样本,式子前面选择大于等于+1,小于等于-1只是为了计算方便,原则上可以是任意常数,但无论是多少,都可以通过对 w 的变换使其为 +1 和 -1。

实际上该公式等价于:
在这里插入图片描述
距离超平面最近的这几个样本点满足yi(WTxi+b)=1,它们被称为“支持向量”。虚线称为边界,两条虚线间的距离称为间隔(margin)。
关于间隔的计算:它就等于两个异类支持向量的差在 W方向上的投影,W方向是直线yi(WTxi+b)=0的法线方向。
在这里插入图片描述
在这里插入图片描述
故有:
在这里插入图片描述
至此,我们求得了间隔,SVM的思想是使得间隔最大化,也就是:
在这里插入图片描述
显然,最大化 2/||w|| 相当于最小化 ||w||,为了计算方便,将公式转化成如下公式,它即为支持向量机的基本型:
在这里插入图片描述
该基本型是一个凸二次规划问题,可以采用拉格朗日乘子法对其对偶问题求解求解,拉格朗日函数:
在这里插入图片描述
对W,b求导,令其分别为0,可得;
在这里插入图片描述
将其带入拉格朗日函数中,可得:
在这里插入图片描述
解出 α 之后,可以求得 w , 进而求得 b,可以得到模型:
在这里插入图片描述
该过程的KTT条件为;
在这里插入图片描述
我们分析一下,对于任意的训练样本 (xi,yi),若 αi=0,则其不会在公式中的求和项中出现,也就是说,它不影响模型的训练;若 αi>0,则yif(xi)−1=0,也就是 yif(xi)=1,即该样本一定在边界上,是一个支持向量。这里显示出了支持向量机的重要特征:当训练完成后,大部分样本都不需要保留,最终模型只与支持向量有关。


推荐阅读
author-avatar
糖在嘴里甜在心离_636
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有