支持向量机由于其优异的性能,在机器学习中与神经网络共享美誉。
支持向量机的前身是最优间隔分类问题,在后者基础上加上核函数,便摇身一变为了SVM。
本文参考周志华《机器学习》以及吴恩达网易公开课《机器学习》
问题描述
给定训练样本训练集D={(x1,y1),(x2,y2),...,(xm,ym)},yi∈{-1,+1},分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平面,将不同类别样本分开,如下图所示。
超平面很多,应该如何选取呢?直观来看,应该去找位于两类训练样本“正中间”的划分超平面,即上图中加粗的那个,因为该划分超平面使得对训练数据样本局部扰动的“容忍”性最好。最大化间隔,并限制训练样本数据(+例,-例)都与超平面的距离大于该间隔。
假设由(w,b)确定的超平面能将训练样本正确分类,即对于(xi,yi)∈D,若yi=+1,我们希望z = wx+b>0,即会有sigmoid(z)>0.5,为正例概率大于0.5;反之,若yi=-1,我们希望z =wx+b<0,即会有simoid(z)<0.5,为反例的概率大于0.5。令:
用图来描述上式,就是:
因此,为了最大化间隔(2/||w||),等价于最小化||w||,于是就有了支持向量机(SVM)的基本型:
对偶问题
SVM基本型本身就是一个凸二次规划问题,能直接用现成的优化计算包求解,但是有更高效的方法。
使用拉格朗日