理解SVM

作者|OpenCV-Python Tutorials
编译|Vincent
来源|OpenCV-Python Tutorials

目标

在这一章中

  • 我们将对SVM有一个直观的了解

理论

线性可分数据

考虑下面的图像,它具有两种数据类型,红色和蓝色。在kNN中,对于测试数据,我们用来测量其与所有训练样本的距离,并以最小的距离作为样本。测量所有距离都需要花费大量时间,并且需要大量内存来存储所有训练样本。但是考虑到图像中给出的数据,我们是否需要那么多?

8_3_理解SVM - 图1

考虑另一个想法。我们找到一条线8_3_理解SVM - 图2%3Dax_1%20%2B%20bx_2%2Bc#card=math&code=f%28x%29%3Dax_1%20%2B%20bx_2%2Bc),它将两条数据都分为两个区域。当我们得到一个新的test_data 8_3_理解SVM - 图3时,只需将其替换为8_3_理解SVM - 图4#card=math&code=f%28x%29)即可。如果8_3_理解SVM - 图5%3E%200#card=math&code=f%28X%29%3E%200),则属于蓝色组,否则属于红色组。我们可以将此行称为“决策边界”。它非常简单且内存高效。可以将这些数据用直线(或高维超平面)一分为二的数据称为线性可分离数据。

因此,在上图中,你可以看到很多这样的行都是可能的。我们会选哪一个?非常直观地,我们可以说直线应该从所有点尽可能远地经过。为什么?因为传入的数据中可能会有噪音。此数据不应影响分类准确性。因此,走最远的分离线将提供更大的抗干扰能力。因此,SVM要做的是找到到训练样本的最小距离最大的直线(或超平面)。请参阅下面图像中穿过中心的粗线。

8_3_理解SVM - 图6

因此,要找到此决策边界,你需要训练数据。那么需要全部吗?并不用。仅接近相反组的那些就足够了。在我们的图像中,它们是一个蓝色填充的圆圈和两个红色填充的正方形。我们可以称其为支撑向量,通过它们的线称为支撑平面。它们足以找到我们的决策边界。我们不必担心所有数据。它有助于减少数据量。

接下来,找到了最能代表数据的前两个超平面。例如,蓝色数据由8_3_理解SVM - 图7表示,红色数据由8_3_理解SVM - 图8表示,其中8_3_理解SVM - 图9权重向量(8_3_理解SVM - 图10),8_3_理解SVM - 图11是特征向量(8_3_理解SVM - 图12)。8_3_理解SVM - 图13偏置。权重矢量确定决策边界的方向,而偏置点确定其位置。现在,将决策边界定义为这些超平面之间的中间,因此表示为8_3_理解SVM - 图14。从支持向量到决策边界的最小距离由8_3_理解SVM - 图15给出。间隔是此距离的两倍,因此我们需要最大化此间隔。也就是说,我们需要使用一些约束来最小化新函数8_3_理解SVM - 图16#card=math&code=L%28w%2Cb_0%29),这些约束可以表示如下:

8_3_理解SVM - 图17%20%3D%20%5Cfrac%7B1%7D%7B2%7D%7C%7Cw%7C%7C%5E2%20%5C%3B%20%5Ctext%7Bsubject%20to%7D%20%5C%3B%20ti(w%5ETx%2Bb_0)%20%5Cgeq%201%20%5C%3B%20%5Cforall%20i%0A#card=math&code=%5Cmin%7Bw%2C%20b_0%7D%20L%28w%2C%20b_0%29%20%3D%20%5Cfrac%7B1%7D%7B2%7D%7C%7Cw%7C%7C%5E2%20%5C%3B%20%5Ctext%7Bsubject%20to%7D%20%5C%3B%20t_i%28w%5ETx%2Bb_0%29%20%5Cgeq%201%20%5C%3B%20%5Cforall%20i%0A)

其中8_3_理解SVM - 图18是每类的标签,8_3_理解SVM - 图19.

非线性可分数据

考虑一些不能用直线分成两部分的数据。例如,考虑一维数据,其中’X’位于-3和+3,而’O’位于-1和+1。显然,它不是线性可分离的。但是有解决这些问题的方法。如果我们可以使用函数8_3_理解SVM - 图20%3Dx%5E2#card=math&code=f%28x%29%3Dx%5E2)映射此数据集,则在线性可分离的9处获得’X’,在1处获得’O’。

否则,我们可以将此一维数据转换为二维数据。我们可以使用8_3_理解SVM - 图21%3D(x%2Cx%5E2)#card=math&code=f%28x%29%3D%28x%2Cx%5E2%29)函数来映射此数据。然后,’X’变成(-3,9)和(3,9),而’O’变成(-1,1)和(1,1)。这也是线性可分的。简而言之,低维空间中的非线性可分离数据更有可能在高维空间中变为线性可分离。

通常,可以将d维空间中的点映射到某个D维空间8_3_理解SVM - 图22#card=math&code=%28D%3E%20d%29),以检查线性可分离性的可能性。有一个想法可以通过在低维输入(特征)空间中执行计算来帮助在高维(内核)空间中计算点积。我们可以用下面的例子来说明。

考虑二维空间中的两个点,8_3_理解SVM - 图23#card=math&code=p%3D%28p_1%2Cp_2%29)和8_3_理解SVM - 图24#card=math&code=q%3D%28q_1%2Cq_2%29)。令8_3_理解SVM - 图25为映射函数,它将二维点映射到三维空间,如下所示:

8_3_理解SVM - 图26%3D(p%5E2_1%2Cp%5E2_2%2C%5Csqrt%7B2%7Dp_1p_2)%CF%95(q)%3D(q%5E2_1%2Cq%5E2_2%2C%5Csqrt%7B2%7Dq_1q_2)%24%24%E8%AE%A9%E6%88%91%E4%BB%AC%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA%E6%A0%B8%E5%87%BD%E6%95%B0%24K(p%2Cq)%24%EF%BC%8C%E8%AF%A5%E5%87%BD%E6%95%B0%E5%9C%A8%E4%B8%A4%E7%82%B9%E4%B9%8B%E9%97%B4%E5%81%9A%E4%B8%80%E4%B8%AA%E7%82%B9%E7%A7%AF%EF%BC%8C%E5%A6%82%E4%B8%8B%E6%89%80%E7%A4%BA%EF%BC%9A%0A%0A#card=math&code=%CF%95%28p%29%3D%28p%5E2_1%2Cp%5E2_2%2C%5Csqrt%7B2%7Dp_1p_2%29%CF%95%28q%29%3D%28q%5E2_1%2Cq%5E2_2%2C%5Csqrt%7B2%7Dq_1q_2%29%24%24%E8%AE%A9%E6%88%91%E4%BB%AC%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA%E6%A0%B8%E5%87%BD%E6%95%B0%24K%28p%2Cq%29%24%EF%BC%8C%E8%AF%A5%E5%87%BD%E6%95%B0%E5%9C%A8%E4%B8%A4%E7%82%B9%E4%B9%8B%E9%97%B4%E5%81%9A%E4%B8%80%E4%B8%AA%E7%82%B9%E7%A7%AF%EF%BC%8C%E5%A6%82%E4%B8%8B%E6%89%80%E7%A4%BA%EF%BC%9A%0A%0A)

\begin{aligned} K(p,q) = \phi(p).\phi(q) &= \phi(p)^T \phi(q) \ &= (p{1}2,\sqrt{2} p_1 p_2).(q{1}2,\sqrt{2} q_1 q_2) \ &= p_1 q_1 + p_2 q_2 + 2 p_1 q_1 p_2 q_2 \ &= (p_1 q_1 + p_2 q_2)^2 \ \phi(p).\phi(q) &= (p.q)^2 \end{aligned}

8_3_理解SVM - 图27%0A%0A%E5%9B%A0%E6%AD%A4%EF%BC%8C%E6%96%B0%E7%9A%84%E4%BC%98%E5%8C%96%E5%87%BD%E6%95%B0%E4%B8%BA%EF%BC%9A%0A%24%24%5Cmin%7Bw%2C%20b%7B0%7D%7D%20L(w%2Cb0)%20%3D%20%7C%7Cw%7C%7C%5E%7B2%7D%20%2B%20C%20%5Csum%7Bi%7D%20%7B%5Cxi%7Bi%7D%7D%20%5Ctext%7B%20subject%20to%20%7D%20y%7Bi%7D(w%5E%7BT%7D%20x%7Bi%7D%20%2B%20b%7B0%7D)%20%5Cgeq%201%20-%20%5Cxi%7Bi%7D%20%5Ctext%7B%20and%20%7D%20%5Cxi%7Bi%7D%20%5Cgeq%200%20%5Ctext%7B%20%7D%20%5Cforall%20i#card=math&code=%0A%E8%BF%99%E6%84%8F%E5%91%B3%E7%9D%80%EF%BC%8C%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E4%BA%8C%E7%BB%B4%E7%A9%BA%E9%97%B4%E4%B8%AD%E7%9A%84%E5%B9%B3%E6%96%B9%E7%82%B9%E7%A7%AF%E6%9D%A5%E5%AE%9E%E7%8E%B0%E4%B8%89%E7%BB%B4%E7%A9%BA%E9%97%B4%E4%B8%AD%E7%9A%84%E7%82%B9%E7%A7%AF%E3%80%82%E8%BF%99%E5%8F%AF%E4%BB%A5%E5%BA%94%E7%94%A8%E4%BA%8E%E6%9B%B4%E9%AB%98%E7%BB%B4%E5%BA%A6%E7%9A%84%E7%A9%BA%E9%97%B4%E3%80%82%E5%9B%A0%E6%AD%A4%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E4%BB%8E%E8%BE%83%E4%BD%8E%E5%B0%BA%E5%AF%B8%E6%9C%AC%E8%BA%AB%E8%AE%A1%E7%AE%97%E8%BE%83%E9%AB%98%E5%B0%BA%E5%AF%B8%E7%9A%84%E7%89%B9%E5%BE%81%E3%80%82%E4%B8%80%E6%97%A6%E5%B0%86%E5%AE%83%E4%BB%AC%E6%98%A0%E5%B0%84%EF%BC%8C%E6%88%91%E4%BB%AC%E5%B0%86%E8%8E%B7%E5%BE%97%E6%9B%B4%E9%AB%98%E7%9A%84%E7%A9%BA%E9%97%B4%E3%80%82%0A%0A%E9%99%A4%E4%BA%86%E6%89%80%E6%9C%89%E8%BF%99%E4%BA%9B%E6%A6%82%E5%BF%B5%E4%B9%8B%E5%A4%96%EF%BC%8C%E8%BF%98%E5%AD%98%E5%9C%A8%E5%88%86%E7%B1%BB%E9%94%99%E8%AF%AF%E7%9A%84%E9%97%AE%E9%A2%98%E3%80%82%E5%9B%A0%E6%AD%A4%EF%BC%8C%E4%BB%85%E6%89%BE%E5%88%B0%E5%85%B7%E6%9C%89%E6%9C%80%E5%A4%A7%E9%97%B4%E9%9A%94%E7%9A%84%E5%86%B3%E7%AD%96%E8%BE%B9%E7%95%8C%E6%98%AF%E4%B8%8D%E5%A4%9F%E7%9A%84%E3%80%82%E6%88%91%E4%BB%AC%E8%BF%98%E9%9C%80%E8%A6%81%E8%80%83%E8%99%91%E5%88%86%E7%B1%BB%E9%94%99%E8%AF%AF%E7%9A%84%E9%97%AE%E9%A2%98%E3%80%82%E6%9C%89%E6%97%B6%EF%BC%8C%E5%8F%AF%E8%83%BD%E4%BC%9A%E6%89%BE%E5%88%B0%E9%97%B4%E9%9A%94%E8%BE%83%E5%B0%91%E4%BD%86%E5%88%86%E7%B1%BB%E9%94%99%E8%AF%AF%E5%87%8F%E5%B0%91%E7%9A%84%E5%86%B3%E7%AD%96%E8%BE%B9%E7%95%8C%E3%80%82%E6%97%A0%E8%AE%BA%E5%A6%82%E4%BD%95%EF%BC%8C%E6%88%91%E4%BB%AC%E9%9C%80%E8%A6%81%E4%BF%AE%E6%94%B9%E6%88%91%E4%BB%AC%E7%9A%84%E6%A8%A1%E5%9E%8B%EF%BC%8C%E4%BB%A5%E4%BE%BF%E5%AE%83%E5%8F%AF%E4%BB%A5%E6%89%BE%E5%88%B0%E5%85%B7%E6%9C%89%E6%9C%80%E5%A4%A7%E9%97%B4%E9%9A%94%E4%BD%86%E5%88%86%E7%B1%BB%E9%94%99%E8%AF%AF%E8%BE%83%E5%B0%91%E7%9A%84%E5%86%B3%E7%AD%96%E8%BE%B9%E7%95%8C%E3%80%82%E6%9C%80%E5%B0%8F%E5%8C%96%E6%A0%87%E5%87%86%E4%BF%AE%E6%94%B9%E4%B8%BA%EF%BC%9A%24%5Cmin%20%5C%7Cw%5C%7C%5E2%2BC%24%EF%BC%88%E5%88%86%E7%B1%BB%E9%94%99%E8%AF%AF%E7%9A%84%E6%A0%B7%E6%9C%AC%E5%88%B0%E5%85%B6%E6%AD%A3%E7%A1%AE%E5%8C%BA%E5%9F%9F%E7%9A%84%E8%B7%9D%E7%A6%BB%EF%BC%89%E4%B8%8B%E5%9B%BE%E6%98%BE%E7%A4%BA%E4%BA%86%E6%AD%A4%E6%A6%82%E5%BF%B5%E3%80%82%E5%AF%B9%E4%BA%8E%E8%AE%AD%E7%BB%83%E6%95%B0%E6%8D%AE%E7%9A%84%E6%AF%8F%E4%B8%AA%E6%A0%B7%E6%9C%AC%EF%BC%8C%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA%E6%96%B0%E7%9A%84%E5%8F%82%E6%95%B0%24%CE%BEi%24%E3%80%82%E5%AE%83%E6%98%AF%E4%BB%8E%E5%85%B6%E7%9B%B8%E5%BA%94%E7%9A%84%E8%AE%AD%E7%BB%83%E6%A0%B7%E6%9C%AC%E5%88%B0%E5%85%B6%E6%AD%A3%E7%A1%AE%E5%86%B3%E7%AD%96%E5%8C%BA%E5%9F%9F%E7%9A%84%E8%B7%9D%E7%A6%BB%E3%80%82%E5%AF%B9%E4%BA%8E%E9%82%A3%E4%BA%9B%E6%9C%AA%E5%88%86%E7%B1%BB%E9%94%99%E8%AF%AF%E7%9A%84%E6%A0%B7%E6%9C%AC%EF%BC%8C%E5%AE%83%E4%BB%AC%E8%90%BD%E5%9C%A8%E7%9B%B8%E5%BA%94%E7%9A%84%E6%94%AF%E6%92%91%E5%B9%B3%E9%9D%A2%E4%B8%8A%EF%BC%8C%E5%9B%A0%E6%AD%A4%E5%AE%83%E4%BB%AC%E7%9A%84%E8%B7%9D%E7%A6%BB%E4%B8%BA%E9%9B%B6%E3%80%82%0A%0A%21%5B%5D%28http%3A%2F%2Fqiniu.aihubs.net%2Fsvm_basics3.png%29%0A%0A%E5%9B%A0%E6%AD%A4%EF%BC%8C%E6%96%B0%E7%9A%84%E4%BC%98%E5%8C%96%E5%87%BD%E6%95%B0%E4%B8%BA%EF%BC%9A%0A%24%24%5Cmin%7Bw%2C%20b%7B0%7D%7D%20L%28w%2Cb_0%29%20%3D%20%7C%7Cw%7C%7C%5E%7B2%7D%20%2B%20C%20%5Csum%7Bi%7D%20%7B%5Cxi%7Bi%7D%7D%20%5Ctext%7B%20subject%20to%20%7D%20y%7Bi%7D%28w%5E%7BT%7D%20x%7Bi%7D%20%2B%20b%7B0%7D%29%20%5Cgeq%201%20-%20%5Cxi%7Bi%7D%20%5Ctext%7B%20and%20%7D%20%5Cxi%7Bi%7D%20%5Cgeq%200%20%5Ctext%7B%20%7D%20%5Cforall%20i)

如何选择参数C?显然,这个问题的答案取决于训练数据的分布方式。尽管没有一般性的答案,但考虑以下规则是很有用的:

  • C的值越大,解决方案的分类错误越少,但宽度也越小。考虑到在这种情况下,进行错误分类错误是昂贵的。由于优化的目的是最小化参数,因此几乎没有误分类的错误。
  • C的值越小,解决方案的宽度就越大,分类误差也越大。在这种情况下,最小化对总和项的考虑不多,因此它更多地集中在寻找具有大间隔的超平面上。

附加资源

  1. NPTEL notes on Statistical Pattern Recognition, Chapters 25-29.

练习