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

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

第十章 支持向量机


大间隔分类器的数学原理

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

    • 向量 u u u在横轴上取值为某个 u 1 u_1 u1,而在纵轴上,高度是某个 u 2 u_2 u2作为 u u u的第二个分量。
    • ∥ u ∥ ∥u∥ 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=u12+u22 ,这是向量 u u u的长度,它是一个实数。
    • 现在让我们回头来看向量 v v v v v v是另一个向量,它的两个分量 v 1 v_1 v1 v 2 v_2 v2是已知的。
    • 我们将向量 v v v做一个直角投影到向量 u u u上,接下来度量投影的长度 p p p,或
      者说是向量 v v v投影到向量 u u u上的量,因此可以将 u T v = p ∗ ∥ u ∥ u^Tv=p*∥u∥ uTv=pu
    • 另一个计算公式是: u T v u^Tv uTv就是 [ u 1 , u 2 ] [u_1, u_2] [u1,u2]这个一行两列的矩阵乘以 v v v。因此可以得到 u 1 ∗ v 1 + u 2 ∗ v 2 u_1*v_1+u_2*v_2 u1v1+u2v2
    • u T v = v T u u^Tv=v^Tu uTv=vTu,因此如果你将 u u u v v v交换位置,将 u u u投影到 v v v上,而不是将 v v v投影到 u u u上,然后做同样地计算,事实上可以得到同样的结果。
    • p p p事实上是有符号的,即它可能是正值,也可能是负值。
    • 在内积计算中,如果 u u u v v v之间的夹角小于 90 度,那么 p p p是正值。然而如果这个夹角大于 90度,则 p p p将会是负的,两个向量之间的内积也是负的。
      算法工程师修仙之路:吴恩达机器学习(十五)_第1张图片
  • 支持向量机模型中的目标函数:
    算法工程师修仙之路:吴恩达机器学习(十五)_第2张图片

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

你可能感兴趣的:(教学,课程)