第7周


十三、支持向量机(Support Vector Machines)

13.1感知机与支持向量机

感知机是二分类的线性分类模型,旨在求出将数据线性划分的分离超平面,利用梯度下降法对损失函数极小化。

支持向量机是定义在特征空间上的间隔最大的的线性分类器,间隔最大使它有别于感知机,还包括核技巧,通过把数据映射到更高维度来进行分类,使得它可以解决非线性问题。

支持向量机包括:线性可分支持向量机,线性支持向量机,非线性支持向量机。

对于线性可分支持向量机,通过硬间隔最大化学习线性分类器。

对于近似线性支持向量机,通过软间隔最大化学习线性分类器。

对于非线性支持向量机,通过核技巧在高维特征空间进行分类。

13.2函数间隔与几何间隔

在分离超平面固定为 w T x + b = 0 w^Tx + b = 0 wTx+b=0的时候, ∣ w T x + b ∣ |w^Tx + b | ∣wTx+b∣表示点 x x x到超平面的相对距离。通过观察 w T x + b w^Tx + b wTx+b和 y y y( y y y取1或-1)是否同号,判断分类是否正确,因此定义函数间隔为 γ ′ = y ( w T x + b ) \gamma^{'} = y(w^Tx + b) γ′=y(wTx+b).

如果 w , b w,b w,b都变为原来的两倍,超平面没有发生变化,但是函数间隔变为两倍,因此定义几何间隔: γ = y ( w T x + b ) ∣ ∣ w ∣ ∣ 2 = γ ′ ∣ ∣ w ∣ ∣ 2 \gamma = \frac{y(w^Tx + b)}{||w||_2} = \frac{\gamma^{'}}{||w||_2} γ=∣∣w∣∣2​y(wTx+b)​=∣∣w∣∣2​γ′​

几何间隔才是点到超平面的真正间隔。

13.3 支持向量

在线性可分的情况下,经过分离超平面最近的样本点,且与分离超平面平行的向量称为支持向量,也称作决策边界。

在这里插入图片描述

13.4 间隔最大化的直观理解

在这里插入图片描述

如果数据集是线性可分的,即存在一条直线把正负样本分开。当然有多条不同的直线可以把正样本和负样本完全分开,这些直线都可以作为决策边界。

在这里插入图片描述

但是有些决策边界看起来都不是特别好的选择,支持向量机将会选择黑色的决策边界,相较于粉色或者绿色画的决策界,黑线看起来是更稳健的决策界。在分离正样本和负样本上它显得的更好。数学上来讲,这条黑线距离样本点有更大的距离,这个距离叫做间距(margin)。

在这里插入图片描述

当画出这两条额外的蓝线,可以看到黑色的决策界和训练样本之间有更大的最短距离。然而粉线和蓝线离训练样本就非常近,在分离样本的时候就会比黑线表现差。因此,这个距离叫做支持向量机的间距,而这是支持向量机具有鲁棒性(可以分开最难分的点)的原因,因为它努力用一个最大间距来分离样本。因此支持向量机有时被称为最大间距分类器。

并且支持向量很少,所以支持向量机由很少的“重要的”样本确定,使得支持向量机能很好地应用于小样本数据。

事实上,支持向量机现在要比这个大间距分类器所体现得更成熟,尤其是当学习算法会受异常点(outlier) 的影响。比如我们加入一个额外的正样本。

在这里插入图片描述

在这里,为了将样本用最大间距分开,也许最终会得到粉色的线,仅仅因为一个异常值,就将决策界从这条黑线变到这条粉线,这显然是不明智的。事实上,如果正则化参数设置的非常大,支持向量机会把决策界从黑线变到粉线,但如果将正则化参数设置的小一点,最终还是会得到黑线,此时为软间隔最大化。实际上应用支持向量机的时候,**当参数不是非常非常大的时候,它可以忽略掉一些异常点的影响,得到更好的决策界。**甚至数据不是线性可分的时候,支持向量机也可以给出好的结果。

13.5 大边界分类背后的数学

支持向量机是最大化间隔,所有目标函数为:

m a x      γ = y ( w T x + b ) ∣ ∣ w ∣ ∣ 2      s . t      y i ( w T x i + b ) = γ ′ ( i ) ≥ γ ′ ( i = 1 , 2 , . . . m ) max \;\; \gamma = \frac{y(w^Tx + b)}{||w||_2} \;\; s.t \;\; y_i(w^Tx_i + b) = \gamma^{'(i)} \geq \gamma^{'} (i =1,2,...m) maxγ=∣∣w∣∣2​y(wTx+b)​s.tyi​(wTxi​+b)=γ′(i)≥γ′(i=1,2,...m)

一般,我们让函数间隔为1,所以分子为1:

m a x      1 ∣ ∣ w ∣ ∣ 2      s . t      y i ( w T x i + b ) ≥ 1 ( i = 1 , 2 , . . . m ) max \;\; \frac{1}{||w||_2} \;\; s.t \;\; y_i(w^Tx_i + b) \geq 1 (i =1,2,...m) max∣∣w∣∣2​1​s.tyi​(wTxi​+b)≥1(i=1,2,...m)

由于 1 ∣ ∣ w ∣ ∣ 2 \frac{1}{||w||_2} ∣∣w∣∣2​1​的最大化等同于 1 2 ∣ ∣ w ∣ ∣ 2 2 \frac{1}{2}||w||_2^2 21​∣∣w∣∣22​的最小化。这样SVM的优化函数等价于:

在这里插入图片描述

为了简化,仅仅是为了让目标函数更容易被分析。

在这里插入图片描述

接下来忽略掉截距,令 θ 0 = 0 {{\theta }_{0}}=0 θ0​=0。将特征数 n n n置为2,因此仅有两个特征 x 1 , x 2 {{x}_{1}},{{x}_{2}} x1​,x2​,目标函数可以写作: 1 2 ( θ 1 2 + θ 2 2 ) = 1 2 ( θ 1 2 + θ 2 2 ) 2 \frac{1}{2}\left({\theta_1^2+\theta_2^2}\right)=\frac{1}{2}\left(\sqrt{\theta_1^2+\theta_2^2}\right)^2 21​(θ12​+θ22​)=21​(θ12​+θ22​ ​)2

因此支持向量机做的全部事情,就是极小化参数向量 θ {{\theta }} θ范数的平方,或者说长度的平方。

现在我将要看看这些项: θ T x \theta^{T}x θTx更深入地理解它们的含义。给定参数向量$\theta 给定一个样本 给定一个样本 给定一个样本x$

在这里插入图片描述

考察一个单一的训练样本,用一个叉来表示正样本 x ( i ) x^{(i)} x(i),意思是在水平轴上取值为 x 1 ( i ) x_1^{(i)} x1(i)​,在竖直轴上取值为 x 2 ( i ) x_2^{(i)} x2(i)​。将 θ 1 θ_1 θ1​画在横轴,将 θ 2 θ_2 θ2​ 画在纵轴,那么内积 θ T x ( i ) θ^T x^{(i)} θTx(i) 将会是什么呢?

内积计算的方式就是将训练样本投影到参数向量 θ {{\theta }} θ,把投影画成红色。将它称为 p ( i ) p^{(i)} p(i),用来表示这是第 i i i个训练样本在参数向量 θ {{\theta }} θ上的投影。 θ T x ( i ) θ^Tx^{(i)} θTx(i)将会等于 p p p 乘以向量 θ θ θ 的长度或范数。这就等于 θ 1 ⋅ x 1 ( i ) + θ 2 ⋅ x 2 ( i ) \theta_1\cdot{x_1^{(i)}}+\theta_2\cdot{x_2^{(i)}} θ1​⋅x1(i)​+θ2​⋅x2(i)​。这两种方式是等价的,都可以用来计算 θ θ θ和 x ( i ) x^{(i)} x(i)之间的内积。

这告诉了我们什么呢?这里表达的意思是:这个 θ T x ( i ) > = 1 θ^Tx^{(i)}>=1 θTx(i)>=1 或者 θ T x ( i ) < − 1 θ^Tx^{(i)}<-1 θTx(i)<−1的,约束是可以被 p ( i ) ⋅ x > = 1 p^{(i)}\cdot{x}>=1 p(i)⋅x>=1这个约束所代替的。因为 θ T x ( i ) = p ( i ) ⋅ ∥ θ ∥ θ^Tx^{(i)}=p^{(i)}\cdot{\left\| \theta \right\|} θTx(i)=p(i)⋅∥θ∥ ,将其写入我们的优化目标。我们将会得到没有了约束, θ T x ( i ) θ^Tx^{(i)} θTx(i)而变成了 p ( i ) ⋅ ∥ θ ∥ p^{(i)}\cdot{\left\| \theta \right\|} p(i)⋅∥θ∥。

在这里插入图片描述

需要提醒一点,我们之前优化目标函数被写成等于 1 2 ∥ θ ∥ 2 \frac{1}{2}\left\| \theta \right\|^2 21​∥θ∥2。现在,继续使用之前的简化,即 θ 0 = 0 {{\theta }_{0}}=0 θ0​=0,我们来看一下决策边界(绿线)离训练样本的距离很近,为什么支持向量机不会选择它。

对于选择的参数 θ {{\theta }} θ(蓝色向量),事实上参数向量 θ {{\theta }} θ是和决策界是90度正交的,因此可以知道决策边界的方向。顺便提一句 θ 0 = 0 {{\theta }_{0}}=0 θ0​=0的简化仅仅意味着决策界必须通过原点 ( 0 , 0 ) (0,0) (0,0)。现在让我们看一下这对于优化目标函数意味着什么。

在这里插入图片描述

假设第一个样本 x ( 1 ) x^{(1)} x(1),这个样本到参数 θ {{\theta }} θ的投影是短的红线段 p ( 1 ) p^{(1)} p(1),它非常短。类似地,第二个训练样本 x ( 2 ) x^{(2)} x(2)到 θ {{\theta }} θ的投影画成粉色 p ( 2 ) p^{(2)} p(2),这个投影非常短。 p ( 2 ) p^{(2)} p(2)事实上是一个负值, p ( 2 ) p^{(2)} p(2)是在相反的方向,这个向量和参数向量 θ {{\theta }} θ的夹角大于90度, p ( 2 ) p^{(2)} p(2)的值小于0。

我们会发现这些 p ( i ) p^{(i)} p(i)将会是非常小的数,因此当我们考察优化目标函数的时候,对于正样本而言,我们需要 p ( i ) ⋅ ∥ θ ∥ > = 1 p^{(i)}\cdot{\left\| \theta \right\|}>=1 p(i)⋅∥θ∥>=1,但是如果 p ( i ) p^{(i)} p(i)在这里非常小,那就意味着需要 θ {{\theta }} θ的范数非常大.因为如果 p ( 1 ) p^{(1)} p(1) 很小,而我们希望 p ( 1 ) ⋅ ∥ θ ∥ > = 1 p^{(1)}\cdot{\left\| \theta \right\|}>=1 p(1)⋅∥θ∥>=1,令其实现的唯一的办法就是这两个数较大。如果 p ( 1 ) p^{(1)} p(1) 小,我们就希望 θ {{\theta }} θ的范数大。类似地,对于负样本而言我们需要 p ( 2 ) ⋅ ∥ θ ∥ < = − 1 p^{(2)}\cdot{\left\|\theta \right\|}<=-1 p(2)⋅∥θ∥<=−1。我们已经在这个样本中看到 p ( 2 ) p^{(2)} p(2)会是一个非常小的数,因此唯一的办法就是 θ {{\theta }} θ的范数变大。但是我们的目标函数是找到一个参数 θ {{\theta }} θ,它的范数是最小的。因此,这看起来不像是一个好的参数向量 θ {{\theta }} θ的选择。

在这里插入图片描述

相反的,来看一个不同的决策边界(右图)。这时注意到现在 p ( 1 ) p^{(1)} p(1) 和 p ( 2 ) p^{(2)} p(2)这些投影长度是长多了。如果我们仍然要满足这些约束, P ( i ) ⋅ ∥ θ ∥ P^{(i)}\cdot{\left\| \theta \right\|} P(i)⋅∥θ∥>1,则因为 p ( 1 ) p^{(1)} p(1)变大了, θ {{\theta }} θ的范数就可以变小了。因此这意味着通过选择右边的决策界,而不是左边的那个,支持向量机可以使参数 θ {{\theta }} θ的范数变小很多。因此,如果我们想令 θ {{\theta }} θ的范数变小,从而令 θ {{\theta }} θ范数的平方变小,就能让支持向量机选择右边的决策界。这就是支持向量机如何能有效地产生大间距分类的原因。

我们希望正样本和负样本投影到 θ \theta θ的值大。要做到这一点的唯一方式就是选择这条绿线做决策界。这是大间距决策界来区分开正样本和负样本这个间距的值。这个间距的值就是 p ( 1 ) , p ( 2 ) , p ( 3 ) p^{(1)},p^{(2)},p^{(3)} p(1),p(2),p(3)等等的值。通过让间距变大,即通过这些 p ( 1 ) , p ( 2 ) , p ( 3 ) p^{(1)},p^{(2)},p^{(3)} p(1),p(2),p(3)等等的值,支持向量机最终可以找到一个较小的 θ {{\theta }} θ范数。这正是支持向量机中最小化目标函数的目的。

以上就是为什么支持向量机最终会找到大间距分类器的原因。因为它试图极大化这些 p ( i ) p^{(i)} p(i)的范数,它们是训练样本到决策边界的距离。最后一点,我们的推导自始至终使用了这个简化假设,就是参数 θ 0 = 0 θ_0=0 θ0​=0。

在这里插入图片描述

如果令 θ 0 θ_0 θ0​不是0的话,含义就是希望决策界不通过原点。实际上,支持向量机产生大间距分类器的结论,会被证明同样成立,证明方式是非常类似的,是刚刚做的证明的推广。

现在求解目标函数。由于目标函数 1 2 ∣ ∣ w ∣ ∣ 2 2 \frac{1}{2}||w||_2^2 21​∣∣w∣∣22​是凸函数,根据凸优化理论,我们可以通过拉格朗日函数将优化目标转化为无约束的优化函数。

L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 2 − ∑ i = 1 m α i [ y i ( w T x i + b ) − 1 ]    满足 α i ≥ 0 L(w,b,\alpha) = \frac{1}{2}||w||_2^2 - \sum\limits_{i=1}^{m}\alpha_i[y_i(w^Tx_i + b) - 1] \; 满足\alpha_i \geq 0 L(w,b,α)=21​∣∣w∣∣22​−i=1∑m​αi​[yi​(wTxi​+b)−1]满足αi​≥0

根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:

m a x ⏟ α i ≥ 0    m i n ⏟ w , b    L ( w , b , α ) \underbrace{max}_{\alpha_i \geq 0} \;\underbrace{min}_{w,b}\; L(w,b,\alpha) αi​≥0 max​​w,b min​​L(w,b,α)

从上式中,先求优化函数对于 w w w和 b b b的极小值。接着再求拉格朗日乘子 α \alpha α的极大值。

对 w w w和 b b b分别求偏导并令其等于0

∂ L ∂ w = 0    ⇒ w = ∑ i = 1 m α i y i x i \frac{\partial L}{\partial w} = 0 \;\Rightarrow w = \sum\limits_{i=1}^{m}\alpha_iy_ix_i ∂w∂L​=0⇒w=i=1∑m​αi​yi​xi​,这可以求出参数 w w w;

∂ L ∂ b = 0    ⇒ ∑ i = 1 m α i y i = 0 \frac{\partial L}{\partial b} = 0 \;\Rightarrow \sum\limits_{i=1}^{m}\alpha_iy_i = 0 ∂b∂L​=0⇒i=1∑m​αi​yi​=0

代入拉格朗日函数,得

− 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ( x i ∙ x j ) + ∑ i = 1 m α i -\frac{1}{2}\sum\limits_{i=1}^{m}\sum\limits_{j=1}^{m}\alpha_i\alpha_jy_iy_j(x_i \bullet x_j) + \sum\limits_{i=1}^{m} \alpha_i −21​i=1∑m​j=1∑m​αi​αj​yi​yj​(xi​∙xj​)+i=1∑m​αi​

将上面函数对 α \alpha α求极大转化为极小得到目标函数:
m i n ⏟ α 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ( x i ∙ x j ) − ∑ i = 1 m α i \underbrace{min}_{\alpha} \frac{1}{2}\sum\limits_{i=1}^{m}\sum\limits_{j=1}^{m}\alpha_i\alpha_jy_iy_j(x_i \bullet x_j) - \sum\limits_{i=1}^{m} \alpha_i α min​​21​i=1∑m​j=1∑m​αi​αj​yi​yj​(xi​∙xj​)−i=1∑m​αi​

s . t .    ∑ i = 1 m α i y i = 0 s.t. \; \sum\limits_{i=1}^{m}\alpha_iy_i = 0 s.t.i=1∑m​αi​yi​=0

α i ≥ 0    i = 1 , 2 , . . . m \alpha_i \geq 0 \; i=1,2,...m αi​≥0i=1,2,...m

具体怎么极小化上式得到对应的 α \alpha α,一般需要用到SMO算法,这个算法比较复杂。

前面已知参数 w w w如何求,对于 b b b,根据KKT条件中的对偶互补条件 α i ( y i ( w T x i + b ) − 1 ) = 0 \alpha_{i}(y_i(w^Tx_i + b) - 1) = 0 αi​(yi​(wTxi​+b)−1)=0,如果 α j > 0 \alpha_j>0 αj​>0,注意到 y j 2 = 1 y_j^2=1 yj2​=1则,将 w w w的表达式代入,则有 b = y j − w T x j b = y_j-w^Tx_j b=yj​−wTxj​。

前面提到设置正则化参数进行软间隔最大化,由于存在样本点的函数间隔小于1,我们让它加上松弛变量使它满足条件,并通过惩罚容忍模型犯一些错。

m i n      1 2 ∣ ∣ w ∣ ∣ 2 2 + C ∑ i = 1 m ξ i min\;\; \frac{1}{2}||w||_2^2 +C\sum\limits_{i=1}^{m}\xi_i min21​∣∣w∣∣22​+Ci=1∑m​ξi​

s . t .      y i ( w T x i + b ) ≥ 1 − ξ i      ( i = 1 , 2 , . . . m ) s.t. \;\; y_i(w^Tx_i + b) \geq 1 - \xi_i \;\;(i =1,2,...m) s.t.yi​(wTxi​+b)≥1−ξi​(i=1,2,...m)

ξ i ≥ 0      ( i = 1 , 2 , . . . m ) \xi_i \geq 0 \;\;(i =1,2,...m) ξi​≥0(i=1,2,...m)

这里, C > 0 C>0 C>0为惩罚参数,按之前的方法进行推导,最后唯一不一样的是约束条件:

m i n ⏟ α 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ( x i ∙ x j ) − ∑ i = 1 m α i \underbrace{min}_{\alpha} \frac{1}{2}\sum\limits_{i=1}^{m}\sum\limits_{j=1}^{m}\alpha_i\alpha_jy_iy_j(x_i \bullet x_j) - \sum\limits_{i=1}^{m} \alpha_i α min​​21​i=1∑m​j=1∑m​αi​αj​yi​yj​(xi​∙xj​)−i=1∑m​αi​

s . t .    ∑ i = 1 m α i y i = 0 s.t. \; \sum\limits_{i=1}^{m}\alpha_iy_i = 0 s.t.i=1∑m​αi​yi​=0

0 ≤ α i ≤ C 0 \leq \alpha_i \leq C 0≤αi​≤C

13.6 合页损失函数

线性支持向量机还有另外一种解释如下:

m i n ⏟ w , b [ 1 − y i ( w ∙ x + b ) ] + + λ ∣ ∣ w ∣ ∣ 2 2 \underbrace{ min}_{w, b}[1-y_i(w \bullet x + b)]_{+} + \lambda ||w||_2^2 w,b min​​[1−yi​(w∙x+b)]+​+λ∣∣w∣∣22​

其中第一项称为合页损失函数,第二项是L2正则化项。

[ z ] + = { z z > 0 0 z ≤ 0 [z]_{+}= \begin{cases} z & {z >0}\\ 0& {z\leq 0} \end{cases} [z]+​={z0​z>0z≤0​

因此,如果点被正确分类,且函数间隔大于1,损失是0,否则损失是 1 − y ( w ∙ x + b ) 1-y(w \bullet x + b) 1−y(w∙x+b),如下图中的绿线。我们在下图还可以看出其他各种模型损失和函数间隔的关系:对于0-1损失函数,如果正确分类,损失是0,误分类损失1, 如下图黑线,可见0-1损失函数是不可导的。对于感知机模型,感知机的损失函数是 [ − y i ( w ∙ x + b ) ] + [-y_i(w \bullet x + b)]_{+} [−yi​(w∙x+b)]+​,这样当样本被正确分类时,损失是0,误分类时,损失是 − y i ( w ∙ x + b ) -y_i(w \bullet x + b) −yi​(w∙x+b),如下图紫线。对于逻辑回归之类和最大熵模型对应的对数损失,损失函数如下图红线所示。

img

13.7 核函数1

回顾我们之前讨论过可以使用高级数的多项式模型来解决无法用直线进行分隔的分类问题:

在这里插入图片描述

为了获得上图所示的判定边界,我们的模型可能是 θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 x 2 + θ 4 x 1 2 + θ 5 x 2 2 + ⋯ {{\theta }_{0}}+{{\theta }_{1}}{{x}_{1}}+{{\theta }_{2}}{{x}_{2}}+{{\theta }_{3}}{{x}_{1}}{{x}_{2}}+{{\theta }_{4}}x_{1}^{2}+{{\theta }_{5}}x_{2}^{2}+\cdots θ0​+θ1​x1​+θ2​x2​+θ3​x1​x2​+θ4​x12​+θ5​x22​+⋯的形式。

我们可以用一系列的新的特征 f f f来替换模型中的每一项。例如令:
f 1 = x 1 , f 2 = x 2 , f 3 = x 1 x 2 , f 4 = x 1 2 , f 5 = x 2 2 {{f}_{1}}={{x}_{1}},{{f}_{2}}={{x}_{2}},{{f}_{3}}={{x}_{1}}{{x}_{2}},{{f}_{4}}=x_{1}^{2},{{f}_{5}}=x_{2}^{2} f1​=x1​,f2​=x2​,f3​=x1​x2​,f4​=x12​,f5​=x22​

…得到 h θ ( x ) = θ 1 f 1 + θ 2 f 2 + . . . + θ n f n h_θ(x)={{\theta }_{1}}f_1+{{\theta }_{2}}f_2+...+{{\theta }_{n}}f_n hθ​(x)=θ1​f1​+θ2​f2​+...+θn​fn​。然而,除了对原有的特征进行组合以外,有没有更好的方法来构造 f 1 , f 2 , f 3 f_1,f_2,f_3 f1​,f2​,f3​?我们可以利用核函数来计算出新的特征。

给定一个训练样本 x x x,我们利用 x x x的各个特征与我们预先选定的地标(landmarks) l ( 1 ) , l ( 2 ) , l ( 3 ) l^{(1)},l^{(2)},l^{(3)} l(1),l(2),l(3)的近似程度来选取新的特征 f 1 , f 2 , f 3 f_1,f_2,f_3 f1​,f2​,f3​。

在这里插入图片描述

例如: f 1 = s i m i l a r i t y ( x , l ( 1 ) ) = e ( − ∥ x − l ( 1 ) ∥ 2 2 σ 2 ) {{f}_{1}}=similarity(x,{{l}^{(1)}})=e(-\frac{{{\left\| x-{{l}^{(1)}} \right\|}^{2}}}{2{{\sigma }^{2}}}) f1​=similarity(x,l(1))=e(−2σ2∥x−l(1)∥2​)

其中: ∥ x − l ( 1 ) ∥ 2 = ∑ j = 1 n ( x j − l j ( 1 ) ) 2 {{\left\| x-{{l}^{(1)}} \right\|}^{2}}=\sum{_{j=1}^{n}}{{({{x}_{j}}-l_{j}^{(1)})}^{2}} ​x−l(1) ​2=∑j=1n​(xj​−lj(1)​)2,为实例 x x x中所有特征与地标 l ( 1 ) l^{(1)} l(1)之间的距离的和。上例中的 s i m i l a r i t y ( x , l ( 1 ) ) similarity(x,{{l}^{(1)}}) similarity(x,l(1))就是核函数,具体而言,这里是一个高斯核函数(Gaussian Kernel)。 注:这个函数与正态分布没什么实际上的关系,只是看上去像而已。

这些地标的作用是什么?如果一个训练样本 x x x与地标 l l l之间的距离近似于0,则新特征 f f f近似于 e − 0 = 1 e^{-0}=1 e−0=1,如果训练样本 x x x与地标 l l l之间距离较远,则 f f f近似于 e − ( 一个较大的数 ) = 0 e^{-(一个较大的数)}=0 e−(一个较大的数)=0。

假设我们的训练样本含有两个特征[ x 1 x_{1} x1​ x 2 x{_2} x2​],给定地标 l ( 1 ) l^{(1)} l(1)与不同的 σ \sigma σ值,见下图:

在这里插入图片描述

图中水平面的坐标为 x 1 x_{1} x1​, x 2 x_{2} x2​,而垂直坐标轴代表 f f f。可以看出,只有当 x x x与 l ( 1 ) l^{(1)} l(1)重合时 f f f才具有最大值。随着 x x x的改变 f f f值改变的速率受到 σ 2 \sigma^2 σ2的控制。

在下图中,当样本处于洋红色的点位置处,因为其离 l ( 1 ) l^{(1)} l(1)更近,但是离 l ( 2 ) l^{(2)} l(2)和 l ( 3 ) l^{(3)} l(3)较远,因此 f 1 f_1 f1​接近1,而 f 2 f_2 f2​, f 3 f_3 f3​接近0。因此 h θ ( x ) = θ 0 + θ 1 f 1 + θ 2 f 2 + θ 1 f 3 > 0 h_θ(x)=θ_0+θ_1f_1+θ_2f_2+θ_1f_3>0 hθ​(x)=θ0​+θ1​f1​+θ2​f2​+θ1​f3​>0,因此预测 y = 1 y=1 y=1。同理可以求出,对于离 l ( 2 ) l^{(2)} l(2)较近的绿色点,也预测 y = 1 y=1 y=1,但是对于浅蓝色的点,因为其离三个地标都较远,预测 y = 0 y=0 y=0。

在这里插入图片描述

这样,图中红色的封闭曲线所表示的范围,便是我们依据一个单一的训练样本和我们选取的地标所得出的判定边界,在预测时,我们采用的不是训练样本本身的特征,而是通过核函数计算出的新特征 f 1 , f 2 , f 3 f_1,f_2,f_3 f1​,f2​,f3​。

13.8 核函数2

上一节讨论了核函数这个想法,在这一节中,将补充一些缺失的细节,并简单的介绍一下怎么在实际中使用应用这些想法。

如何选择地标?

通常是根据训练集的数量选择地标的数量,即如果训练集中有 m m m个样本,则选取 m m m个地标,并且令: l ( 1 ) = x ( 1 ) , l ( 2 ) = x ( 2 ) , . . . . . , l ( m ) = x ( m ) l^{(1)}=x^{(1)},l^{(2)}=x^{(2)},.....,l^{(m)}=x^{(m)} l(1)=x(1),l(2)=x(2),.....,l(m)=x(m)。这样做的好处在于:新特征是建立在原有特征与训练集中所有其他特征之间距离的基础之上的,即:

在这里插入图片描述
在这里插入图片描述

下面我们将核函数运用到支持向量机中,修改我们的支持向量机假设为:

• 给定 x x x,计算新特征 f f f,当 θ T f > = 0 θ^Tf>=0 θTf>=0 时,预测 y = 1 y=1 y=1,否则反之。

另外,支持向量机也可以不使用核函数,不使用核函数又称为线性核函数(linear kernel),当我们不采用非常复杂的函数,或者我们的训练集特征非常多而样本非常少的时候,可以采用这种不带核函数的支持向量机。

13.9 使用支持向量机

在高斯核函数之外我们还有其他一些选择,如:

多项式核函数(Polynomial Kernel)

字符串核函数(String kernel)

卡方核函数( chi-square kernel)

直方图交集核函数(histogram intersection kernel)

等等…

这些核函数的目标也都是根据训练集和地标之间的距离来构建新特征,这些核函数需要满足Mercer’s定理,才能被支持向量机的优化软件正确处理。

多类分类问题

假设我们利用之前介绍的一对多方法来解决一个多类分类问题。如果一共有 k k k个类,则我们需要 k k k个模型,以及 k k k个参数向量 θ {{\theta }} θ。我们同样也可以训练 k k k个支持向量机来解决多类分类问题。但是大多数支持向量机软件包都有内置的多类分类功能,我们只要直接使用即可。

从逻辑回归模型和支持向量机模型,在两者之间,应该如何选择呢?

下面是一些普遍使用的准则:

n n n为特征数, m m m为训练样本数。

(1)如果相较于 m m m而言, n n n要大许多,即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机。

(2)如果 n n n较小,而且 m m m大小中等,例如 n n n在 1-1000 之间,而 m m m在10-10000之间,使用高斯核函数的支持向量机。

(3)如果 n n n较小,而 m m m较大,例如 n n n在1-1000之间,而 m m m大于50000,则使用支持向量机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向量机。

值得一提的是,神经网络在以上三种情况下都可能会有较好的表现,但是训练神经网络可能非常慢,选择支持向量机的原因主要在于它的代价函数是凸函数,不存在局部最小值。

逻辑回归和不带核函数的支持向量机它们都是非常相似的算法,通常都会做相似的事情,并给出相似的结果。但是根据实现的情况,其中一个可能会比另一个更加有效。

最后,神经网络使用于什么时候呢? 对于所有的这些问题,设计神经网络也很有可能会非常有效。有一个缺点是,或者说是有时可能不会使用神经网络的原因是:对于许多这样的问题,神经网络训练起来可能会特别慢,但是如果有一个非常好的SVM实现包,它可能会运行得比较快比神经网络快很多,尽管我们在此之前没有展示,但是事实证明,SVM具有的优化问题,是一种凸优化问题。因此,好的SVM优化软件包总是会找到全局最小值,或者接近它的值。对于SVM不需要担心局部最优。

事实上,该用这个算法还是该用那个算法没有太大关系,通常更加重要的是:有多少数据,是否擅长做误差分析和排除学习算法,指出如何设定新的特征变量和找出其他能优化学习算法的方法,通常这些方面会比使用逻辑回归还是SVM这方面更加重要。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐