支持向量(support vector)就是离分割超平面最近的点。而支持向量的学习就是求解最大化支持向量到分割面的距离的问题。
首先确定 n 维的数据空间中的超平面方程: w^Tx + b = 0 其中x是数据点。如下图所示:
两种颜色的点分别代表两个类别,红颜色的线表示一个可行的超平面。在进行分类的时候,我们将数据点x
代入 f(x) 中,如果得到的结果小于 0 ,则赋予其类别 -1 ,如果大于 0 则赋予类别 1 。事实上,对于 f(x) 的绝对值很小的情况,我们都很难处理,因为细微的变动(比如超平面稍微转一个小角度)就有可能导致结果类别的改变。理想情况下,我们希望 f(x) 的值都是很大的正数或者很小的负数,这样我们就能更加确信它是属于其中某一类别的。
从几何直观上来说,由于超平面是用于分隔两类数据的,越接近超平面的点越“难”分隔,因为如果超平面稍微转动一下,它们就有可能跑到另一边去。反之,如果是距离超平面很远的点,例如图中的右上角或者左下角的点,则很容易分辩出其类别。
定义数据点到分割超平面的函数距离为:,之所以乘上类别y是为了确保距离的非负性,因为当w^Tx + b<0时,y=-1,两者之积为正。现在定义几何距离:如图所示:
对于一个点 x ,令其垂直投影到超平面上的对应的为 x0 ,由于 w 是垂直于超平面的一个向量(请自行验证),我们有,因为点x0在超平面上将点x0代入超平面解得 ,同样为了去除符号,我们定义几何距离也乘上y,几何距离为:
,我们的目标则是求maxγ˜,然
maxγ˜
因此,下面的重点就是如何求解这个多约束问题了