这部分内容是我以前接触比较少的,接下来将从线性分类器开始介绍支持向量机SVM
推荐一个支持向量机的理解视频:支持向量机@最清晰简单的解释@一看就懂
对于一组一维的数据,线性分类器的目的就是找到一个超平面(阈值),也就是图中橙色的那条线把它们分成2类
而我们之后的数据如果落在阈值左边就判断它属于红色那类的,如果落在阈值右边就属于绿色那类
在最普通的情况下,我们所选择的阈值的是红和绿的两个边界点的中间位置
而边界点到阈值的举例之和,也就是绿色的虚线和红色的虚线之和称为margin,可能在一维的数据里看的不太清楚,但是在二维空间中,我们就可以很清晰的看到margin的大小,而Maximal margin classifier 顾名思义就是margin取最大值的时候来确定阈值的方法
当然这个方法对异常值过于敏感,如下图所示,异常值会让它的分类不够准确
为了解决Maximal margin classifier的异常值敏感问题,Soft Margin就随之诞生了
Soft Margin允许存在异常点,如下图,是它在异常点存在时的选择
那么它是如何在异常点存在的时候决定选择哪两个点作为衡量阈值标准的呢?
视频里说到它使用了交叉验证的方法(后文会介绍)来衡量如何确定两个点作为边界点
而在这两个确定下来的点中间的那些数据就称为Support Vectors 支持向量
下面展示不同维度的数据
我们可以看到下面的这组数据如果用上面的办法是无法得到一个较好的阈值的,这个时候便需要引入SVM的概念
下面就进入SVM的介绍
对上面的数据,我们可以将它升维到二维,用二维的手段处理一维的数据,如下图
就很容易的可以找到我们想要的那个超平面
书上的
首先,这里y的取值要么是1要么是-1,也就是一个二分类的问题
而
代表的一个向量(x11,x12,x13…)它不是一个数
这段话该如何理解呢,他将我们所求的那个阈值(超平面)转化为一个通用的表达式,下面我举几个例子来说明
对于一维的数据来说,阈值其实就是x = 一个值
对于二维的数据来说,阈值是一条直线
由下图我们可以看出,阈值(划分超平面)可以由法向量w和b来决定
根据上面的公式,我们已经确认出了划分超平面,在此基础上,下图给出了间隔的定义
我们首先看图,很好看出,对于直线上方的点,我们都把它划分为正类,对直线下方的点,我们都把它分为负类,而我们认为距离划分超平面直线最近的那两个点为 +1/-1 也就是图中圈出的三个点,其他的样本点都大于1或者小于-1
而间隔的定义就是两个临界点到划分超平面的距离
距离公式已经给出了,而临界点(也就是距离超平面最近的训练样本点).它们的wx+b=1/-1,所以我们很好看出,间隔的值就是两倍的r
我们的目的是使间隔最大,间隔刚刚我们已经求了是
,下图中将其倒数了一下,就变成了求
的最小值
公式中满足的条件是
很显然,因为yi要么是1要么是-1,而wx+b的最小值是-1,最大值是1,所以这个条件的意思就是符合之前图中的超平面划分