python实现支持向量机之理论基础(一)
SVM是什么?
支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。
SVM算法原理?
SVM学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。如下图所示, 即为分离超平面,对于线性可分的数据集来说,这样的超平面有无穷多个(即感知机),但是几何间隔最大的分离超平面却是唯一的。
定义训练集:
其中,
, ,
为第 个特征向量, 为类标记,当它等于+1时为正例;为-1时为负例。再假设训练数据集是线性可分的。
在超平面wx+b=0确定的情况下,|wx+b|能够相对地表示x距超平面的远近。而wx+b的符号与类标记y的符号是否一致能够表示分类是否正确,所以可以用y(wx+b)来表示分类的正确性以及置信度,这就是函数间隔。
假设我们成比例的改变w和b,比如变为2w和2b,超平面没有变,但是函数间隔却会变为原来的两倍,因此,可以对法向量w施加某些约束,如规范化||w||=1,使得间隔是确定的,这时函数间隔就变为几何间隔。
我们可以这么理解,点(x1,y1,z1)到平面Ax+ By+Cz=0的距离为:
我们将平面替换为w1x1+w2x2+w3x3+..+wnxn+b=0,用w表示所有系数的向量,x表示所有特征的向量,则有:
再乘以样本的标签就得到了带符号距离。
我们要找到几何间隔最大的超平面,不仅要将不同类样本区分开,并且对于很难区分开的实例(距离超平面最近的点)也要有足够大的置信度将他们分开,
如何求得一个几何间隔最大的分离超平面,即最大间隔分离超平面,可以转化为以下约束最优化问题:
考虑到函数间隔和几何间隔的关系,可以转换为:
也就是说,现在支持向量机转换为以下问题了:
参考:
https://blog.csdn.net/wangyuanshun/article/details/88529773
https://zhuanlan.zhihu.com/p/31886934
统计学习方法