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

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

第十章 支持向量机


直观上对大间隔的理解

  • 人们有时将支持向量机看作是大间距分类器。

  • 支持向量机模型的代价函数,在左边这里我画出了关于 z 的代价函数 c o s t 1 ( z ) cost_1(z) ,此函数用于正样本,而在右边这里我画出了关于 z 的代价函数 c o s t 0 ( z ) cost_0(z) ,横轴表示 z。
    在这里插入图片描述

  • 最小化代价函数的必要条件

    • 如果你有一个正样本, y = 1 y=1 ,则只有在z >= 1时,代价函数 c o s t 1 ( z ) cost_1(z) 才等于0。换句话说,如果你有一个正样本,我们会希望 θ T x &gt; = 1 \theta^Tx&gt;=1 ,反之,如果 y = 0 y=0 ,函数 c o s t 0 ( z ) cost_0(z) ,它只有在z <= -1的区间里函数值为 0。
    • 事实上,如果你有一个正样本 y = 1 y=1 ,则其实我们仅仅要求 θ T x \theta^Tx 大于等于 0,就能将该样本恰当分出,这是因为如果 θ T x &gt; 0 \theta^Tx&gt;0 的话,我们的模型代价函数值为0,类似地,如果你有一个负样本,则仅需要 θ T x &lt; = 0 \theta^Tx&lt;=0 就会将负例正确分离。
    • 但是,支持向量机的要求更高,不仅仅要能正确分开输入的样本,即不仅仅要求 θ T x &gt; 0 \theta^Tx&gt;0 ,我们需要的是比0值大很多,比如大于等于1,或者比0小很多,比如我希望它小于等于-1,这就相当于在支持向量机中嵌入了一个额外的安全因子,或者说安全的间距因子。
  • 如果 C C 非常大,则最小化代价函数的时候,我们将会很希望找到一个使第一项为 0 的最优解。因此,让我们尝试在代价项的第一项为 0 的情形下理解该优化问题。

    • 首先支持向量机的代价函数表示如下: m i n θ C i = 1 m [ y ( i ) c o s t 1 ( θ T x ( i ) ) + ( 1 y ( i ) ) c o s t 0 ( θ T x ( i ) ) ] + 1 2 i = 1 n θ j 2 min_\theta C\sum_{i=1}^{m}[y^{(i)}cost_1(\theta^Tx^{(i)})+(1-y^{(i)})cost_0(\theta^Tx^{(i)})]+\frac{1}{2}\sum_{i=1}^{n}\theta_j^2
    • 我们已经看到输入一个训练样本标签为 y = 1 y=1 ,你想令第一项为 0,你需要做的是找到一个 θ \theta ,使得 θ T x &gt; = 1 \theta^Tx&gt;=1 ,类似地,对于一个训练样本,标签为 y = 0 y=0 ,为了使 c o s t 0 ( z ) cost_0(z) 函数的值为0,我们需要 θ T x &lt; = 1 \theta^Tx&lt;=-1
    • 因为我们将选择参数使第一项为0,因此这个函数的第一项为0,因此是 C C 乘以 0 加上二分之一乘以第二项。这将遵从以下的约束: θ T x &gt; = 1 \theta^Tx&gt;=1 ,如果 y ( i ) y^{(i)} 是等于 1 的, θ T x &lt; = 1 \theta^Tx&lt;=-1 ,如果样本 y ( i ) y^{(i)} 是一个负样本。
  • 具体而言,如果你考察下面这样一个数据集,其中有正样本,也有负样本,可以看到这个数据集是线性可分的。
    在这里插入图片描述

  • 支持向量机将会选择这个黑色的决策边界,黑线看起来是更稳健的决策界。在分离正样本和负样本上它显得的更好。数学上来讲,这条黑线有更大的距离,这个距离叫做间距(margin)。

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

  • 我们将这个大间距分类器中的正则化因子常数 C C 设置的非常大,因此对这样的一个数据集,也许我们将选择黑线这样的决策界,从而最大间距地分离开正样本和负样本。

  • 在让代价函数最小化的过程中,我们希望找出在 y = 1 y=1 y = 0 y=0 两种情况下都使得代价函数中左边的这一项尽量为零的参数。如果我们找到了这样的参数,则我们的最小化问题便转变成:
    在这里插入图片描述

  • 事实上,支持向量机现在要比这个大间距分类器所体现得更成熟,尤其是当你使用大间距分类器的时候,你的学习算法会受异常点(outlier)的影响。

    • 比如我们加入一个额外的正样本:
      在这里插入图片描述
    • 在这里,如果你加了这个样本,为了将样本用最大间距分开,也许我最终会得到一条类似这样粉色的线的决策界,仅仅基于一个异常值,仅仅基于一个样本,就将我的决策界从这条黑线变到这条粉线,这实在是不明智的。
    • 而如果正则化参数 C C 设置的非常大,这事实上正是支持向量机将会做的。它将决策界,从黑线变到了粉线,但是如果 C C 设置的小一点, 如果你将 C C 设置的不要太大,则你最终会得到这条黑线。
    • 当然数据如果不是线性可分的,如果你在这里有一些正样本或者你在这里有一些负样本,则支持向量机也会将它们恰当分开。因此,大间距分类器的描述,仅仅是从直观上给出了正则化参数 C C 非常大的情形。
    • C C 的作用类似于 1 / λ 1/\lambda λ \lambda 是我们之前使用过的正则化参数。这只是 C C 非常大的情形,或者等价 λ \lambda 非常小的情形。你最终会得到类似粉线这样的决策界,但是实际上应用支持向量机的时候,当 C C 不是非常非常大的时候,它可以忽略掉一些异常点的影响,得到更好的决策界。甚至当你的数据不是线性可分的时候,支持向量机也可以给出好的结果。
  • C C 较大时,相当于 λ \lambda 较小,可能会导致过拟合,高方差; C C 较小时,相当于 λ \lambda 较大,可能会导致低拟合,高偏差。

猜你喜欢

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