SVM原理(1)
SVM即支持向量机,是一种机器学习内的二类分类方法,是有监督学习方法。
首先我们需要建立一个分类任务:
首先考虑线性可分的情况:(所谓线性可分就是在N维空间上的两类点,可以用N-1个未知数的函数(超平面)把其分为两类的情况),
如下图是一个简单的线性可分,二维平面上的两类点可以被一个y=kx+b的函数区分为两类
如上图,SVM就是要得到一个最好的超平面使得模型拥有最好的泛化能力(泛化能力,即对于新数据标签预测准确率的度量)
根据上图的描述,我们可以看到,在这个二维平面上,我们是要得到一个直线的方程y=kx+b,,使得区分开两类点,并且对于新的数据点划分类别的能力也最强。
那么如何使得泛化能力最强呢?
这里SVN考虑的方式是:
在一个超平面上,我们假设最终得到的最优超平面的方程是:w X + b =0
这里的w、b都是n维空间的向量,n维空间的数据点都是一个n维向量的形式。设方程为Y = w X + b
1.处于超平面上方的点Xi使得w Xi + b>0,并且随着距离增加->无穷大
2.处于超平面上方的点Xj使得w Xj + b<0,并且随着距离增加->负无穷大
由以上两点可以知道,距离超平面越远的点,Y越大。svm认为距离一个点距离分类超平面的远近可以表示分类预测的确信程度。
由此引出函数间隔和几何间隔:
函数间隔还不够,这是因为,根据函数间隔的方程可以看出来,把w、b改为2w、2b后,函数间隔变大了两倍,但是方程却并没有变化,所以这还需要对函数间隔加入一个约束||w||,使得间隔的衡量不会因为w、b改变而变化,这里给出几何间隔的定义:
这样我们的问题就变成了,最优的超平面《==》数据集之间的几何间隔最大:
得到以下方程:(几何间隔最大,条件为所有的数据点的到超平面的距离都大于几何间隔)
根据函数间隔和几何间隔的关系,得到下式:(基本上是一个代入简化的问题)
对于这里还可以进一步优化:
得到的问题是一个经典的凸二次规划问题:(约束最优化,7.13前者是求最优,7.14是给出的约束)
数学书有人对这样的问题提出过很好的统一的解法:KKT方法等,这个我不深入讨论,(因为也不太懂-_-)
我所知道的是,svm从这个最优化问题中可以得到w、b的解,(我们假设出了方程,构造问题求解方程的参数就得到了超平面的方程)
什么是支持向量:
支持向量是如下图中的距离分类超平面最近的点,在虚线上点都是支持向量,其实整个svm的模型构建只与这些个支持向量有关,去掉支持向量以外的点并不会影响模型的构建,即只要支持向量没变,那得到的还是一样的模型。
因为我们前面讨论过了函数间隔对于该最优化问题其实是不影响的,所以我们假设函数间隔=1来处理这个等价的最优化问题。
所以我们看下图的描述,几何间隔就是 1/||w||(定义为点到超平面上的),两类数据之间的最小几何距离为2/||w||
(未完)