赞
踩
支持向量机(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。由简至繁的模型包括:
1、间隔最大化和支持向量
如果一个线性函数能够将样本分开,称这些数据样本是线性可分的。那么什么是线性函数呢?在二维空间中就是一条直线,在三维空间中就是一个平面,以此类推,如果不考虑空间维数,这样的线性函数统称为超平面。上图中二维空间的样本就是线性可分的,但是很显然不只有这一条直线可以将样本分开,而是有无数条,我们所说的线性可分支持向量机就对应着能将数据正确划分并且间隔最大的直线(上图中的wx+b=0)。
SVM的目标是寻找一个超平面,使得离超平面最近的点到超平面的距离(间隔)最大,而不必考虑所有的样本点。离超平面最近的点所在的平面称为支持向量(上图中的wx+b=+1和wx+b=-1)。
计算间隔(间隔即为两个支持向量间的距离):
参考https://blog.csdn.net/sinat_20177327/article/details/79729551
可以理解为两条平行线wx+b+1=0和wx+b-1=0之间的距离,即|b+1-(b-1)| / ||w|| = 2 / ||w||
至此,我们求得了间隔,SVM的思想是使得间隔最大化,也就是:
显然,最大化 2 / ||w|| 相当于最小化 ||w||,为了计算方便,将公式转化成如下:
上述公式即为支持向量机的基本型。
2、对偶问题
上述公式本身是一个凸二次规划问题,可以使用现有的优化计算包来计算,但我们选择更为高效的方法。根据拉格朗日的对偶性,原始问题的对偶问题是极大极小问题:
其中, (8)
首先求得:
上式分别对 w 和 b求偏导:
令其分别为0,可以得到:
将公式(9)(10)代入公式(8),可得:
然后求对α的极大,也就是:
上面两图中的xixj均为(xi,xj),即xi和xj的内积
解出 α 之后,进而求出w和b(参考:统计学习方法P105 定理7.2):
推导过程:https://blog.csdn.net/sinat_20177327/article/details/79729551
KKT条件:https://blog.csdn.net/chensheng312/article/details/73166909
参考https://blog.csdn.net/sinat_20177327/article/details/79729551和统计学习方法7.2
参考https://blog.csdn.net/sinat_20177327/article/details/79729551和统计学习方法7.3
至此,关于SVM的三类问题:线性可分支持向量机与硬间隔最大化,非线性支持向量机与核函数,线性支持向量机与软间隔最大化一一介绍完毕,最后附上对SVM使用范围的一段总结:
我们所面对的所有的机器学算法,都是有适用范围的,或者说,我们所有的机器学习算法都是有约束的优化问题。而这些约束,就是我们在推导算法之前所做的假设。
比如:Logistics Regression,在Logistics Regression中,假设后验概率为Logistics 分布;再比如:LDA假设fk(x)是均值不同,方差相同的高斯分布;这些都是我们在推导算法之前所做的假设,也就是算法对数据分布的要求。
而对于SVM而言,它并没有对原始数据的分布做任何的假设,这就是SVM和LDA、Logistics Regression区别最大的地方。这表明SVM模型对数据分布的要求低,那么其适用性自然就会更广一些。如果我们事先对数据的分布没有任何的先验信息,即,不知道是什么分布,那么SVM无疑是比较好的选择。
但是,如果我们已经知道数据满足或者近似满足高斯分布,那么选择LDA得到的结果就会更准确。如果我们已经知道数据满足或者近似满足Logistics 分布,那么选择Logistics Regression就会有更好的效果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。