了解SVM OpenCV-Python v4.7.0

目标

本章内容

  • 我们将直观地了解 SVM

理论

线性可分离数据

请看下图,图中有红色和蓝色两种数据。在 kNN 中,对于测试数据,我们习惯于测量它与所有训练样本的距离,然后取距离最小的样本。测量所有距离需要大量时间,存储所有训练样本也需要大量内存。但考虑到图像中给出的数据,我们需要这么多吗?

在这里插入图片描述
考虑另一个想法。我们找到一条 f ( x ) = a x 1 + b x 2 + c f\left( x \right) =ax_1+bx_2+c f(x)=ax1+bx2+c
的直线,它将两个数据划分为两个区域。当我们得到一个新的测试数据 X 时,只需将其代入 f(x)。如果 f(X)>0 则属于蓝色组,否则属于红色组。我们可以称这一行为 “决策边界”(Decision Boundary)。它非常简单且节省内存。这种可以用一条直线(或更高维度的超平面)一分为二的数据被称为线性可分数据

因此,在上图中,你可以看到很多这样的直线。我们要选择哪一条呢?凭直觉,我们可以说这条直线应该尽可能地经过所有点。为什么呢?因为输入的数据中可能存在噪音。这些数据不应该影响分类的准确性。因此,选取一条最远的线可以提供更强的抗干扰能力。因此,SVM 要做的就是找到一条与训练样本距离最小的直线(或超平面)。请看下图中穿过中心的粗线。

在这里插入图片描述
因此,要找到这个决策边界,你需要训练数据。需要所有数据吗?不需要。只需要接近相反组的数据就足够了。在我们的图片中,它们就是一个蓝色填充的圆圈和两个红色填充的方块。我们可以称它们为支持向量,穿过它们的线称为支持平面。它们足以帮助我们找到决策边界。我们无需担心所有数据。这有助于减少数据。

首先找到最能代表数据的两个超平面。例如,蓝色数据用 ω T x + b 0 > 1 \omega ^Tx+b_0>1 ωTx+b0>1
表示,红色数据用 ω T x + b 0 < − 1 \omega ^Tx+b_0<-1 ωTx+b01
表示,其中 w 是权重向量 , ( w = [ w 1 , w 2 , . . . , w n ] ), w 是权重向量,(w=\left[ w_1,w_2,...,w_n \right] ), w是权重向量,w=[w1,w2,...,wn]),
x 是特征向量 , ( x = [ x 1 , x 2 , . . . , x n ] ), x 是特征向量,(x=\left[ x_1,x_2,...,x_n \right] ), x是特征向量,x=[x1,x2,...,xn]),
b 0 是偏置。 b_0是偏置。 b0是偏置。权重向量决定决策边界的方向,而偏置点决定其位置。
现在,决策边界被定义为这些超平面之间的中间位置,因此表示为 ω T x + b 0 = 0 \omega ^Tx+b_0=0 ωTx+b0=0支持向量到决策边界的最小距离为: d i s t a n c e s u p p o r t   v e c t o r s = 1 ∣ ∣ w ∣ ∣ distance_{support\ vectors}=\frac{1}{||w||} distancesupport vectors=∣∣w∣∣1
也就是说,我们需要最小化一个新函数 L(w,b0),该函数带有一些约束条件,具体如下:

min ⁡ ω , b 0 L ( w , b 0 ) = 1 2 ∣ ∣ w ∣ ∣ 2 s u b j e c t   t o   t i ( w T x + b 0 ) ≥ 1 ∀ i \min_{\omega ,b_0}L\left( w,b0 \right) =\frac{1}{2}||w||^2subject\ to\ t_i\left( w^Tx+b_0 \right) \ge 1\forall i ω,b0minL(w,b0)=21∣∣w2subject to ti(wTx+b0)1∀i

其中,ti 是每个类别的标签,ti∈[-1,1]。

非线性可分数据

考虑一些无法用直线将其一分为二的数据。例如,考虑一个一维数据,其中 "X "位于-3 和 +3,"O "位于-1 和 +1。显然,这不是线性可分的。但有一些方法可以解决这类问题。如果我们能用函数 f(x)=x2 映射这个数据集,我们就能得到 "X "在 9 处,"O "在 1 处,这是线性可分的。

否则,我们可以将这个一维数据转换为二维数据。我们可以使用 f ( x ) = ( x , x 2 ) f\left( x \right) =\left( x,x^2 \right) f(x)=(x,x2)
函数来映射这些数据。然后,"X "变成(-3,9)和(3,9),而 "O "变成(-1,1)和(1,1)。这也是线性可分的。简而言之,低维空间中的非线性可分数据在高维空间中变成线性可分数据的几率更大。

一般来说,可以将 d 维空间中的点映射到某个 D 维空间(D>d),以检验线性可分性的可能性。有一种方法可以通过在低维输入(特征)空间中进行计算来帮助计算高维(内核)空间中的点积。我们可以用下面的例子来说明。

考虑二维空间中的两个点:p=(p1,p2) 和 q=(q1,q2)。让 ϕ 成为一个映射函数,按如下方式将二维点映射到三维空间:

ϕ ( p ) = ( p 1 2 , p 2 2 , 2 p 1 p 2 ) ϕ ( q ) = ( q 1 2 , q 2 2 , 2 q 1 q 2 ) \begin{equation} \phi \left( p \right) =\left( p_1^2,p_2^2,\sqrt{2}p_1p_2 \right) \phi \left( q \right) =\left( q_1^2,q_2^2,\sqrt{2}q_1q_2 \right) \end{equation} ϕ(p)=(p12,p22,2 p1p2)ϕ(q)=(q12,q22,2 q1q2)

让我们定义一个核函数 K(p,q),它在两点之间做点积,如下所示:
K ( p , q ) = ϕ ( p ) . ϕ ( q ) = ϕ ( p ) T ϕ ( q ) = ( p 1 2 , p 2 2 , 2 p 1 p 2 ) . ( q 1 2 , q 2 2 , 2 q 1 q 2 ) = p 1 2 q 1 2 + p 2 2 q 2 2 + 2 p 1 q 1 p 2 q 2 = ( p 1 q 1 + p 2 q 2 ) 2 ϕ ( p ) . ϕ ( q ) = ( p . q ) 2 \begin{equation} \begin{aligned} K\left( p,q \right) &=\phi \left( p \right) .\phi \left( q \right) =\phi \left( p \right) ^T\phi \left( q \right) \\ & =\left( p_1^2,p_2^2,\sqrt{2}p_1p_2 \right) .\left( q_1^2,q_2^2,\sqrt{2}q_1q_2 \right) \\ & =p_1^2q_1^2+p_2^2q_2^2+2p_1q_1p_2q_2\\ & =\left( p_1q_1+p_2q_2 \right) ^2 \\ \phi \left( p \right) .\phi \left( q \right) & =\left( p.q \right) ^2 \end{aligned} \end{equation} K(p,q)ϕ(p).ϕ(q)=ϕ(p).ϕ(q)=ϕ(p)Tϕ(q)=(p12,p22,2 p1p2).(q12,q22,2 q1q2)=p12q12+p22q22+2p1q1p2q2=(p1q1+p2q2)2=(p.q)2

这意味着,三维空间中的点积可以用二维空间中的平方点积来实现。这可以应用于更高维度的空间。因此,我们可以从低维度本身计算出更高维度的特征。一旦我们将它们映射到一起,就会得到一个更高维的空间。

除了所有这些概念,还有误分类的问题。因此,仅仅找到最大边际的决策边界是不够的。我们还需要考虑误分类错误的问题。有时,我们可能会找到一个边际值较小但误判率较低的决策边界。总之,我们需要修改我们的模型,使它能找到边际最大但误判较少的判定边界。最小化标准修改为

m i n ∣ ∣ w ∣ ∣ 2 + C ( d i s t a n c e   o f   m i s c l a s s i f i e d   s a m p l e s   t o   t h e i r   c o r r e c t   r e g i o n s ) \begin{equation} min||w||^2+C\left( distance\ of\ misclassified\ samples\ to\ their\ correct\ regions \right) \end{equation} min∣∣w2+C(distance of misclassified samples to their correct regions)

(误分类样本到正确区域的距离)
下图展示了这一概念。对于每个训练数据样本,都要定义一个新参数 ξi。它是对应的训练样本到正确判定区域的距离。对于那些没有被错误分类的样本,它们位于相应的支持平面上,因此它们的距离为零。

在这里插入图片描述

因此,新的优化问题是 :

min ⁡ w , b 0 L ( w , b 0 ) = ∣ ∣ w ∣ ∣ 2 + C ∑ i ξ i   s u b j e c t   t o   y i ( w T x i + b 0 ) ≥ 1 − ξ i   a n d   ξ i ≥ 0 ∀ i \begin{equation} \min_{w,b_0}L\left( w,b_0 \right) =||w||^2+C\sum_i^{}{\xi _i}\ subject\ to\ y_i\left( w^Tx_i+b_0 \right) \ge 1-\xi _i\ and\ \xi _i\ge 0\forall i \end{equation} w,b0minL(w,b0)=∣∣w2+Ciξi subject to yi(wTxi+b0)1ξi and ξi0∀i

如何选择参数 C?显然,这个问题的答案取决于训练数据的分布情况。虽然没有通用的答案,但考虑这些规则是有用的:

  • C 值越大,误分类误差越小,但余量也越小。考虑到在这种情况下,误分类错误的代价是昂贵的。由于优化的目的是最小化参数,因此允许的误分类错误较少。
  • C 值越小,解的余量越大,分类错误也越多。在这种情况下,最小化并不会考虑太多的和项,因此它更侧重于寻找一个具有较大边距的超平面。

其他资源

NPTEL 统计模式识别笔记,第 25-29 章。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值