SVM学习
2018-03-24 00:49 伦lun 阅读(141) 评论(0) 收藏 举报这俩天在做沈老师课上的project,要用到SVM,所以看了一下午相关的东西。总结备忘。
SVM全称support vector machine,中文是支持向量机,主要用于目标分类,是机器学习中非常重要的一个算法。SVM实现的是一种线性二分类,给定数据向量x∈Rm*n,以及标签向量y∈Ln,其中yi(i=1,2,..,n)∈{-1,1},希望学习到参数w∈R1n,b∈R,使得预测结果y=sgn(wx+b)准确。
SVM的目标与logistic regression非常相似,logistic的目标函数为y=sgn(sigmoid(wx+b)),只不过在符号函数前加了一个非线性的sigmoid映射。logistic regression本质上是一种神经网络(最简单的)算法,由于遍历了所有样本且每个样本对目标的贡献一致,所以要求样本对数据的真实分布有很好的的拟合,也就是说样本真实反映了数据在真实世界的分布。而SVM不是如此,在数据量较小的时候,SVM也能计算出一个直观上非常优秀的分类边界。
直观来讲,SVM计算得到的边界使得离边界最近的点与边界的距离最大,这些最近的点称为support vector(支持向量),边界完全由这些点完全确定。
接下来数学的讲一下SVM的数学推导:
定义几何距离 D=yi*(wx+b)/||w||。前面提到标签的取值范围为{-1,1},所以对理想的分类边界来上,边界将点分为俩个部分,位于边界上方的点满足wxi+b>0,设它的标签为1,那么D>0,同理得当标签为-1时,D仍然是正数(与logistic regression的loss函数推导相似)。也就是我们希望得到这样的w,b,使得对于所有的点D>0,同时要求最小距离Dmin最大,也就是如下优化问题:
max(w,b) D;subject to yi*(wx+b)/||w||≥D,
显然D是所有点离平面最近的距离,设这个点为x0,那么D=yi*(wx0+b)//||w||,由于w,b的尺度不确定性,总能找到这样的w,b,使得yi*(wx0+b)=1,而D保持不变,因此我们直接设yi*(wx0+b)=1,那么优化问题就变为了:
max(w,b) 1/||w||; subject to yi*(wx+b)/||w||≥1/||w||, 即
max(w,b) 1/||w||; subject to yi*(wx+b)≥1。
浙公网安备 33010602011771号