一、SVM--简介
支持向量机(Support Vector Machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。
在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别、分类以及回归分析。
由简至繁的模型包括:
1、当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;
2、当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;
3、当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机;
SVM--思想
建立一个最优决策超平面,使得该平面两侧距离平面最近的两类样本之间的距离最大化,从而对分类问题提供良好的泛化能力。
说白了就是:当样本点的分布无法用一条直线或几条直线分开时(即线性不可分)SVM提供一种算法,求出一个曲面用于划分。这个曲面,就称为最优决策超平面。
而且,SVM采用二次优化,因此最优解是唯一的,且为全局最优。前面提到的距离最大化就是说,这个曲面让不同分类的样本点距离最远,即求最优分类超平面等价于求最大间隔。
二、SVM--原理
SVM大致原理:
①假设我们要通过三八线把星星和红点分成两类。
②那么有无数多条线可以完成这个任务。
③在SVM中,我们寻找一条最优的分界线使得它到两边的Margin都最大。
④在这种情况下边缘的几个数据点就叫做Support Vector,这也是这个分类算法名字的来源。
三、线性可分支持向量机
1、定义
给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为 wx+b=0 以及相应的分类决策函数 f(x)=sign(wx+b) 称为线性可分支持向量机。
图1
由于训练数据线性可分,如图1所示,这时有许多超平面能将两类数据正确划分,线性可分支持向量机的目的就是从中找到最佳的超平面,使得预测新数据时有较好的表现。
以二维空间为例,相对于把超平面方程 wx+b=0 理解为一条平面直线 y=kx+b,个人更倾向于将其理解为空间平面z=ax+by+c与平面z=0的交线。将训练数据集中的样本点带入wx+b 得到的值表示空间平面z=ax+by+c上的点与z=0之间的距离,距离为正的样本为正例,距离为负的样本为负例。注意,二维空间中的超平面是图2中的红色直线。
图2 二维空间中的超平面
2、函数间隔和几何间隔
图3 二类分类问题
在如上图所示的二维空间中,假设已经找到了超平面将二维空间划分为两类,“○”表示正例,“×”表示负例。其中A,B,C三个点表示3个样本点。一般来说,一个点距离超平面的远近可以表示分类预测的确信程度。比如,预测这三个点的类别的时候,点A距离超平面较远,若预测该点为正例,就有比较大的把握。相反,点C距离超平面较近,若预测该点为正例就不那么确定,因为有可能是超平面选择的不合理而导致点C被误分为正例。因此,相比距离超平面较远的点,距离较近的点对超平面的选择有更大的影响,我们将其称之为支持向量。支持向量决定了我们如何选择超平面,可见支持向量的重要性。函数间隔和几何间隔的提出,为找到最佳的超平面提供了依据。
2.1、函数间隔
对于给定的训练数据集T和超平面(ω,b),定义超平面(ω,b)关于样本点(,)的函数间隔为
定义超平面(ω,b)关于训练数据集T的函数间隔为超平面(ω,b)关于T中所有样本点(,)的函数间隔的最小值,即
函数间隔越小的点离超平面越近,因此通过最大化训练数据集的函数间隔,即找到一条直线离两类样本点尽量的远,来找到最佳的超平面听起来似乎很合理。但是,用函数间隔来选择超平面存在一个问题:只要成比例地改变ω和b,超平面并没有改变但是函数间隔却会改变。在二维空间中,成比例地改变ω和b就是将空间平面z=ax+by+c以超平面为轴心进行转动。因此,需要对ω进行规范化,从而引出了几何间