算法工程师修仙之路:吴恩达机器学习(十五)

吴恩达机器学习笔记及作业代码实现中文版

第十章 支持向量机


大间隔分类器的数学原理

  • 假设我有两个二维向量 u u v v u T v u^Tv 也叫做向量 u u v v 之间的内积。

    • 向量 u u 在横轴上取值为某个 u 1 u_1 ,而在纵轴上,高度是某个 u 2 u_2 作为 u u 的第二个分量。
    • u ∥u∥ 表示 u u 的范数,即 u u 的长度,即向量 u u 的欧几里得长度。 u = u 1 2 + u 2 2 ∥u∥=\sqrt{u_1^2+u_2^2} ,这是向量 u u 的长度,它是一个实数。
    • 现在让我们回头来看向量 v v v v 是另一个向量,它的两个分量 v 1 v_1 v 2 v_2 是已知的。
    • 我们将向量 v v 做一个直角投影到向量 u u 上,接下来度量投影的长度 p p ,或
      者说是向量 v v 投影到向量 u u 上的量,因此可以将 u T v = p u u^Tv=p*∥u∥
    • 另一个计算公式是: u T v u^Tv 就是 [ u 1 , u 2 ] [u_1, u_2] 这个一行两列的矩阵乘以 v v 。因此可以得到 u 1 v 1 + u 2 v 2 u_1*v_1+u_2*v_2
    • u T v = v T u u^Tv=v^Tu ,因此如果你将 u u v v 交换位置,将 u u 投影到 v v 上,而不是将 v v 投影到 u u 上,然后做同样地计算,事实上可以得到同样的结果。
    • p p 事实上是有符号的,即它可能是正值,也可能是负值。
    • 在内积计算中,如果 u u v v 之间的夹角小于 90 度,那么 p p 是正值。然而如果这个夹角大于 90度,则 p p 将会是负的,两个向量之间的内积也是负的。
      在这里插入图片描述
  • 支持向量机模型中的目标函数:
    在这里插入图片描述

    • 接下来忽略掉截距,令 θ 0 = 0 \theta_0 = 0 ,这样更容易画示意图。我将特征数n置为2,因此我们仅有两个特征 x 1 , x 2 x_1, x_2 ,当我们仅有两个特征时,这个式子可以写作: 1 2 ( θ 1 2 + θ 2 2 ) = 1 2 ( θ 1 2 + θ 2 2 ) 2 \frac{1}{2}(\theta_1^2+\theta_2^2)=\frac{1}{2}(\sqrt{\theta_1^2+\theta_2^2})^2 。括号里面的这一项是向量 θ \theta 的范数,或者说是向量 θ \theta 的长度。
    • 因此支持向量机做的全部事情,就是极小化参数向量 θ \theta 范数的平方,或者说长度的平方。
      在这里插入图片描述
    • 我们考察一个单一的训练样本,我有用一个叉来表示一个正样本 x ( i ) x^{(i)} ,意思是在水平轴上取值为 x 1 ( i ) x_1^{(i)} ,在竖直轴上取值为 x 2 ( i ) x_2^{(i)}
      在这里插入图片描述
    • 我们计算的方式就是将训练样本投影到参数向量 θ \theta ,然后我来看一看这个线段的长度,我将它画成红色。我将它称为 p ( i ) p^{(i)} 用来表示这是第 i i 个训练样本在参数向量 θ \theta 上的投影。
    • θ T x ( i ) \theta^Tx^{(i)} 将会等于 p p 乘以向量 θ \theta 的长度或范数,即 θ 1 x 1 ( i ) + θ 2 x 2 ( i ) \theta_1*x_1^{(i)}+\theta_2*x_2^{(i)}
    • 这里表达的意思是: θ T x ( i ) > = 1 \theta^Tx^{(i)}>=1 或者 θ T x ( i ) < 1 \theta^Tx^{(i)}<1 的约束是可以被 p ( i ) x > = 1 p^{(i)}x>=1 这个约束所代替的。因为 θ T x ( i ) = p ( i ) θ \theta^Tx^{(i)}=p^{(i)}∥\theta∥ ,将其写入优化目标会得到没有了约束的 p ( i ) θ p^{(i)}∥\theta∥
      在这里插入图片描述
    • 优化目标函数可以被写成 1 2 ( θ 1 2 + θ 2 2 ) = 1 2 ( θ 1 2 + θ 2 2 ) 2 = 1 2 θ 2 \frac{1}{2}(\theta_1^2+\theta_2^2)=\frac{1}{2}(\sqrt{\theta_1^2+\theta_2^2})^2=\frac{1}{2}||\theta||^2
    • 对于选择的参数 θ \theta ,可以看到参数向量 θ \theta 事实上是和决策界是90度正交的, θ 0 = 0 \theta_0 = 0 的简化仅仅意味着决策界必须通过原点(0, 0)。
    • 现在看一下这对于优化目标函数意味着什么:
      在这里插入图片描述
    • 比如第一个样本 x ( 1 ) x^{(1)} ,这个样本到参数 θ \theta 的投影是短的红线段,就等于 p ( 1 ) p^{(1)} ,它非常短。类似地,第二个训练样本 x ( 2 ) x^{(2)} θ \theta 的投影是短的粉色线段 p ( 2 ) p^{(2)} 。这个投影非常短, p ( 2 ) p^{(2)} 事实上是一个负值。
    • 我们会发现这些 p ( i ) p^{(i)} 将会是非常小的数,因此当我们考察优化目标函数的时候,对于正样本而言,如果 p ( 1 ) p^{(1)} 在这里非常小,那就意味着我们需要 θ \theta 的范数非常大。类似地,对于负样本而言, p ( 2 ) p^{(2)} 是一个非常小的数,因此唯一的办法就是 θ \theta 的范数变大。
    • 但是我们的目标函数是希望找到一个参数 θ \theta ,它的范数是小的。因此,这看起来不像是一个好的参数向量 θ \theta 的选择。
      在这里插入图片描述
    • 因此这意味着通过选择右边的决策界,而不是左边的那个,支持向量机可以使参数 θ \theta 的范数变小很多。如果我们想令 θ \theta 的范数变小,从而令 θ \theta 范数的平方变小,就应该让支持向量机选择右边的决策界。这就是支持向量机如何能有效地产生大间距分类的原因。
    • 我们希望正样本和负样本投影到 θ \theta 的值大。要做到这一点的唯一方式就是选择这条绿线做决策界。这是大间距决策界来区分开正样本和负样本这个间距的值。这个间距的值就是 p ( 1 ) , p ( 2 ) , p ( 3 ) p^{(1)}, p^{(2)}, p^{(3)} 等等的值。通过让间距变大,支持向量机最终可以找到一个较小的 θ \theta 范数。这正是支持向量机中最小化目标函数的目的。
    • 以上就是为什么支持向量机最终会找到大间距分类器的原因。因为它试图极大化这些 p ( i ) p^{(i)} 的范数,它们是训练样本到决策边界的距离。
    • 最后一点,我们的推导自始至终使用了一个简化假设,就是参数 θ 0 = 0 \theta_0=0 θ 0 = 0 \theta_0=0 的意思是我们让决策界通过原点。如果你令 θ 0 ̸ = 0 \theta_0\not=0 的话,含义就是你希望决策界不通过原点。实际上,支持向量机产生大间距分类器的结论,会被证明同样成立,证明方式是非常类似的,是我们刚刚做的证明的推广。
  • 即便 θ 0 \theta_0 不等于0,支持向量机要做的事情都是优化这个目标函数对应着 C C 值非常大的情况,支持向量机仍然会找到正样本和负样本之间的大间距分隔。

猜你喜欢

转载自blog.csdn.net/faker1895/article/details/85012114