支持向量机(SVM)
支持向量机(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解
当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;
当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;
当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机;
线性可分支持向量机
给定训练样本集D=(x1,y1),(x2,y2),⋯,(xm,ym)D=(x1,y1),(x2,y2),⋯,(xm,ym),其中yi∈{−1,+1}yi∈{−1,+1},分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开。
那什么是线性可分呢?
如果一个线性函数能够将样本分开,称这些数据样本是线性可分的。在二维空间中就是一条直线,在三维空间中就是一个平面,以此类推,如果不考虑空间维数,这样的线性函数统称为超平面。O代表正类,X代表负类,样本是线性可分的,但是很显然不只有这一条直线可以将样本分开,而是有无数条,我们所说的线性可分支持向量机就对应着能将数据正确划分并且间隔最大的直线。
为什么要间隔最大呢?一般来说,一个点距离分离超平面的远近可以表示分类预测的确信度,如图中的A B两个样本点,B点被预测为正类的确信度要大于A点,所以SVM的目标是寻找一个超平面,使得离超平面较近的异类点之间能有更大的间隔,即不必考虑所有样本点,只需让求得的超平面使得离它近的点间隔最大。
怎么计算间隔?只有计算出了间隔,才能使得间隔最大化。在样本空间中,划分超平面可通过如下线性方程来描述:
其中w为法向量,决定了超平面的方向,b为位移量,决定了超平面与原点的距离。假设超平面能将训练样本正确地分类,即对于训练样本满足
如图6.2所示,距离超平面最近的这几个样本点满足,它们被称为“支持向量”。虚线称为边界,两条虚线间的距离称为间隔(margin)。
关于间隔的计算:它就等于两个异类支持向量的差在 W方向上的投影 ,W方向是指图6.2所示实线的法线方向。
支持向量机的重要特征:当训练完成后,大部分样本都不需要保留,最终模型只与支持向量有关。
支持向量机实现