机器学习- 吴恩达Andrew Ng Week7 知识总结Support Vector Machines

Posted 架构师易筋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习- 吴恩达Andrew Ng Week7 知识总结Support Vector Machines相关的知识,希望对你有一定的参考价值。

Coursera课程地址

因为Coursera的课程还有考试和论坛,后续的笔记是基于Coursera
https://www.coursera.org/learn/machine-learning/home/welcome

Support Vector Machines 支持向量机

1. Optimization Objective 优化目标

在支持向量机(SVM)是另一种类型的监督机器学习算法。它有时更干净、更强大。

回想一下,在逻辑回归中,我们使用以下规则:
在这里插入图片描述

  • 如果y=1,那么
    在这里插入图片描述

  • 如果 y=0,则
    在这里插入图片描述

回想一下(非正则化)逻辑回归的成本函数:
在这里插入图片描述

为了制作支持向量机,我们将修改成本函数的第一项
在这里插入图片描述

在这里插入图片描述

θ(T)x (从现在开始,我们将把它称为 z) 大于1,它输出 0。此外,对于 z 小于 1 的值,我们将使用直线下降线而不是 sigmoid 曲线。(在文献中,这称为铰链损失(https://en.wikipedia.org/wiki/Hinge_loss)))函数。)
在这里插入图片描述
同样,我们修改成本函数的第二项
在这里插入图片描述

所以当 z小于-1 时,它输出 0。我们还修改它,以便对于大于 -1 的 z 值,我们使用直线增加线而不是 sigmoid 曲线。

在这里插入图片描述
我们将这些表示为cost1(z) 和 cost0(z) (分别注意, cost1(z) 是当 y=1 时的分类成本,并且 cost0(z) 是当 y=0 时的分类成本),我们可以将它们定义如下(其中 k 是定义直线斜率大小的任意常数):
在这里插入图片描述
回忆一下(正则化)逻辑回归中的完整成本函数:
在这里插入图片描述
请注意,负号已分配到上述等式中的总和中。

我们可以通过代入将其转化为支持向量机的成本函数cost0(z) 和 cost1(z) :
在这里插入图片描述
我们可以通过将其乘以 m 来优化它(从而去除分母中的 m 因子)。请注意,这不会影响我们的优化,因为我们只是将成本函数乘以一个正常数(例如,minimizing (u-5)^2 + 1 给我们 5;乘以 10 使其成为10(u-5)^2 + 10 最小化时仍然给我们 5)。
在这里插入图片描述
此外,约定要求我们使用因子 C 而不是 λ 进行正则化,如下所示:
在这里插入图片描述
这相当于将方程乘以 C = 1 / λ ,因此在优化时会产生相同的值。现在,当我们希望更多地正则化(即减少过拟合)时,我们减小C,而当我们希望更少地正则化(即减少欠拟合)时,我们增加C。

最后,请注意支持向量机的假设不被解释为 y 为 1 或 0 的概率(就像逻辑回归假设一样)。相反,它输出 1 或 0。(用技术术语来说,它是一个判别函数。)
在这里插入图片描述

2. 大边距直觉 Large Margin Intuition

考虑支持向量机的一种有用方法是将它们视为大边距分类器。
在这里插入图片描述

在这里插入图片描述

现在,当我们将常数 C 设置为一个非常大的值(例如 100,000)时,我们的优化函数将约束 Θ,使得方程 A(每个示例的成本总和)等于 0。我们对 Θ 施加以下约束:
在这里插入图片描述

如果 C 非常大,我们必须选择 Θ 参数使得:
在这里插入图片描述
在这里插入图片描述

这将我们的成本函数减少为:

在这里插入图片描述

回想一下逻辑回归中的决策边界(分隔正例和负例的线)。在 SVM 中,决策边界具有一个特殊的特性,即它尽可能远离正例和反例。
在这里插入图片描述

决策边界到最近示例的距离称为边距。由于 SVM 最大化了这个裕度,所以它通常被称为大裕度分类器。

SVM 将负例和正例分开很大。

只有在C 非常大时才能实现如此大的裕度。

当一条直线可以将正例和负例分开时,数据是线性可分的。

如果我们有不想影响决策边界的异常样本,那么我们可以减少C。

增加和减少C类似于分别减少和增加λ,可以简化我们的决策边界。
在这里插入图片描述

3. 大边距分类背后的数学(可选)Mathematics Behind Large Margin Classification (Optional)

矢量内积
假设我们有两个向量,u 和 v:
在这里插入图片描述

向量 v的长度表示为||v||,它描述了图上从原点 (0,0) 到 (v1,v2)
在这里插入图片描述

向量 v 的长度可以计算为
在这里插入图片描述

根据勾股定理。

向量 v 到向量 u的投影是通过从 u 到 v 的末端取直角,创建一个直角三角形来找到的。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
如果v 和 u 的线之间的角度大于 90 度,则投影 p 将为负。

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

在这里插入图片描述

4. 内核 I

内核允许我们使用支持向量机制作复杂的非线性分类器。
在这里插入图片描述

给定 x,根据与地标的接近程度计算新特征 L(1), L(2), L(3).
为此,我们找到 x 和某个地标的“相似性” L(i).
在这里插入图片描述
这种“相似性”函数称为Gaussian Kernel高斯内核。它是内核的一个具体示例。
在这里插入图片描述
在这里插入图片描述

相似度函数也可以写成:

在这里插入图片描述
相似度函数有几个属性
在这里插入图片描述

在这里插入图片描述
换句话说,如果 x 和地标相近,那么相似度就会接近 1,如果 x 和地标相距很远,那么相似度就会接近于 0。

每个地标都为我们提供了假设中的特征:

在这里插入图片描述

σ^2是高斯核的一个参数,可以修改它来增加或减少我们特征的下降f(i). 结合查看 Θ 内部的值,我们可以选择这些地标来获得决策边界的大致形状。
在这里插入图片描述
在这里插入图片描述

5. 内核II

获取地标的一种方法是将它们放在与所有训练示例完全相同的位置。这为我们提供了 m 个地标,每个训练示例有一个地标。
在这里插入图片描述

给定示例 x:
在这里插入图片描述
使用内核生成 f(i) 不仅限于 SVM,也可以应用于逻辑回归。然而,由于 SVM 上的计算优化,内核与 SVM 结合比其他算法快得多,因此几乎总是发现内核仅与 SVM 结合。
在这里插入图片描述
在这里插入图片描述

5.1 选择 SVM 参数

在这里插入图片描述

选择 C(回想一下 C = 1 / λ

  • 如果 C 很大,那么我们会得到更高的方差/更低的偏差
  • 如果 C 很小,那么我们会得到较低的方差/较高的偏差
    我们必须选择的另一个参数是 σ^2 从高斯核函数:

带着大 σ^2 ,特征 fi 变化更平滑,导致更高的偏差和更低的方差。

带着小 σ^2,特征 fi 变化不太平滑,导致较低的偏差和较高的方差。

6. 使用 SVM

已经编写了很多好的 SVM 库。A. Ng 经常使用“liblinear”和“libsvm”。在实际应用中,您应该使用这些库之一,而不是重写函数。
在这里插入图片描述

在实际应用中,您需要做出的选择是:

  • 参数C的选择
  • 核的选择(相似函数)
  • 无核(“线性”核)——给出标准的线性分类器
  • 当 n 大时选择 m 小时
  • Gaussian Kernel(上)——需要选择 σ^2
  • 当 n 较小且 m 较大时选择

该库可能会要求您提供内核函数。
在这里插入图片描述

注意:在使用高斯核之前一定要进行特征缩放。

注意:并非所有相似度函数都是有效的内核。它们必须满足“Mercer 定理”,以保证 SVM 包的优化正确运行并且不会发散。
在这里插入图片描述

您想使用训练和交叉验证数据集训练 C 和核函数的参数。

6.1 多类分类

许多 SVM 库都内置了多类分类。
在这里插入图片描述

您可以使用一对多的方法,就像我们对逻辑回归所做的那样,其中y ∈1 、2 、3 、… K with Θ(1) ,Θ(2) ,…,Θ(K)

我们选择最大的类 在这里插入图片描述

6.2 逻辑回归与 SVM

在这里插入图片描述

如果 n 很大(相对于 m),则使用逻辑回归或没有内核的 SVM(“线性内核”)

如果 n 很小而 m 是中间值,则使用带有高斯核的 SVM

如果 n 小而 m 大,则手动创建/添加更多特征,然后使用逻辑回归或没有内核的 SVM。

在第一种情况下,我们没有足够的例子来需要复杂的多项式假设。在第二个例子中,我们有足够多的例子,我们可能需要一个复杂的非线性假设。在最后一种情况下,我们希望增加我们的特征,以便逻辑回归变得适用。

注意:神经网络可能适用于任何这些情况,但训练速度可能较慢。

6.3 其他参考

“支持向量机的白痴指南”:http://web.mit.edu/6.034/wwwbob/svm-notes-long-08.pdf

参考

https://www.coursera.org/learn/machine-learning/resources/Es9Qo

https://www.coursera.org/learn/machine-learning/supplement/pSe2X/lecture-slides

以上是关于机器学习- 吴恩达Andrew Ng Week7 知识总结Support Vector Machines的主要内容,如果未能解决你的问题,请参考以下文章

机器学习- 吴恩达Andrew Ng Coursera学习总结合集,编程作业技巧合集

机器学习- 吴恩达Andrew Ng Coursera学习总结合集,编程作业技巧合集

Machine Learning|Andrew Ng|Coursera 吴恩达机器学习笔记

机器学习- 吴恩达Andrew Ng 编程作业技巧

机器学习- 吴恩达Andrew Ng - week3-1 Classification

机器学习- 吴恩达Andrew Ng Week8 知识总结 Clustering