【含课程pdf & 测验答案】吴恩达-机器学习公开课 学习笔记 Week7 Support Vector Machines

7 Support Vector Machines 课程内容

此文为Week7 中Machine Learning System Design的部分。

7-1 Large Margin Classification

Optimization Objective

支持向量机(Support Vector Machine),简称SVM,与逻辑回归和神经网络相比,在学习复杂的非线性方程时提供了一种更为清晰更加强大的方式。

在逻辑回归中, 当 h(x) 趋近于1时 θ 转置乘以 x 应当远大于0,假设函数的输出值趋近于0对应于 θ 转置乘以 x 或者就是 z 会远小于0。
在这里插入图片描述
对于总代价函数,通常会有对所有的训练样本求和,先忽略1/m这一项,这里的这一项就是表示一个训练样本所对应的表达式。
先画出将要用的代价函数,再画一条同逻辑回归非常相似的直线——已经非常接近逻辑回归中使用的代价函数了。现在让我给这两个方程命名:cost1(z)、cost0(z),这里的下标是指在代价函数中对应的 y=1 和 y=0 的情况。
在这里插入图片描述
按照支持向量机的惯例,事实上我们的书写会稍微有些不同。
改为优化目标 C×A+B:将C 设定为非常小的值,那么相应的将会给 B 比给 A 更大的权重。当然你也可以把这里的参数C考虑成 1/λ。
这就得到了在支持向量机中我们的整个优化目标函数然后最小化这个目标函数,得到 SVM 学习到的参数C。
在这里插入图片描述
最后 有别于逻辑回归输出的概率。在这里,我们的代价函数当最小化代价函数获得参数θ时,支持向量机所做的是它来直接预测y的值等于1还是等于0。
在这里插入图片描述

Large Margin Intuition

最小化这些代价函数的必要条件是:如果你有一个正样本则其实我们仅仅要求 θ 转置乘以 x 大于等于0;
如果你有一个负样本则仅需要 θ 转置乘以x 小于等于0。
但是,支持向量机的要求更高。不仅仅要能正确分开输入的样本,即不仅仅 要求 θ 转置乘以 x 大于0,我们需要的是 比0值大很多。这就相当于在支持向量机中嵌入了 一个额外的安全因子,或者说安全的间距因子。
在这里插入图片描述
具体而言,我接下来会考虑一个特例:我们将这个常数 C 设置成 一个非常大的值。
如果 C 非常大则最小化代价函数的时候,我们将会很希望找到一个使第一项为0的 最优解。会得到一个非常有趣的决策边界。
在这里插入图片描述
线性可分的情况:
在这里插入图片描述
黑线看起来是更稳健的决策界,在分离正样本和负样本上它显得的更好。数学上来讲,这条黑线有更大的距离,这个距离叫做间距 (margin)。黑色的决策界和训练样本之间有更大的最短距离。这个距离叫做支持向量机的间距。而这是支持向量机 具有鲁棒性(抗干扰性)的原因。因为它努力用一个最大间距来分离样本。

因此支持向量机有时被称为大间距分类器,而这其实是求解之前的优化问题的结果(C非常大)。

事实上,支持向量机现在要比这个大间距分类器所体现的更成熟。尤其是当你使用大间距分类器的时候,你的学习算法会受异常点 (outlier) 的影响。数据如果不是线性可分的,支持向量机也会将它们恰当分开。
在这里插入图片描述
因此 ,大间距分类器的描述仅是从直观上给出了正则化参数 C 非常大的情形,同时要提醒你 C 的作用:C非常大相当于λ非常小,即正则化影响很小,说明代价函数会出现过拟合,泛化会很差。

但是实际上应用支持向量机的时候,当 C 不是非常非常大的时候,它可以忽略掉一些异常点的影响,得到更好的决策界,甚至当你的数据不是线性可分的时候支持向量机也可以给出好的结果。

Mathematics Behind Large Margin Classification(optional)

向量内积:
在这里插入图片描述
支持向量机做的全部事情就是,极小化参数向量 θ 范数的平方或者说长度的平方。
在这里插入图片描述
将其写入我们的优化目标,我们将会得到没有了约束 θ 转置乘以x(i) 而变成了 p(i) 乘以 θ 的范数。继续使用之前的简化 即 θ0 等于0,我们来看一下支持向量机会选择什么样的决策界。
通过选择右边的决策界而不是左边的那个,支持向量机可以使参数 θ 的范数变小很多 。这就是支持向量机如何能有效地产生大间距分类的原因。
在这里插入图片描述
可以说明的是即便 θ0 不等于 0 支持向量机,仍然会找到 正样本和负样本之间的大间距分隔。总之,我们解释了为什么支持向量机是一个大间距分类器。

7-2 Kernels

Kernels I

这样定义新的特征变量:给出一个样本 x 将第一个特征变量f1 定义为 一种相似度的度量,度量样本 x 与 第一个标记的相似度。
在这里插入图片描述
这个相似度函数用数学术语来说,它就是核函数。这里实际上是高斯核函数,之后我们会见到别的核函数。

这些特征变量的作用是度量 x到标记l的相似度。并且如果x离l非常相近,那么特征变量f 就接近于1 ;如果x 离标记l非常远,那么f会约等于0。每一个标记点会定义一个新的特征变量 f1 f2 f3 ,也就是说给出一个训练样本 x 我们就能计算三个新的特征变量 f1 f2和f3。
在这里插入图片描述
σ平方是高斯核函数的参数,当你改变它的值的时,你会得到略微不同的结果。
在这里插入图片描述

在这里插入图片描述
这就是我们如何通过标记点以及核函数来训练出非常复杂的非线性判别边界的方法,就像我刚才画的那个判别边界。当我们接近两个标记点中任意一个时,预测值就会等于1,否则预测值等于0。

Kernels II

选择标记点,例如 l(1) l(2) l(3) 这些点使我们能够定义相似度函数,也称之为核函数。但是,我们从哪里得到这些标记点?在实际应用时,***怎么选取标记点***是机器学习中必须解决的问题。

我们拥有的每一个训练样本直接作为标记点。
在这里插入图片描述
支持向量机的学习算法:
当给定核函数和相似度函数后,我们按照这个方法来使用支持向量机,如果你已经得到参数 θ 并且想对样本x做出预测。
相比之前使用 θ的转置乘以x(i) 即我们的原始特征做出预测,我们将替换 特征向量x(i) 并使用这个新的特征向量。通过解决这个最小化问题,我们就能得到支持向量机的参数。我们仍然不对θ0 做正则化处理,这就是 j从1累加到m 而不是从0累加到m的原因。
我们用一种略有变化的度量来取代不直接用 θ 的模的平方进行最小化,而是最小化了另一种类似的度量。这是参数向量θ的变尺度形式,这种变化和核函数相关这个数学细节使得支持向量机能够更有效率的运行。
在这里插入图片描述
计算技巧比如具体化技术,对这些细节的修改以及支持向量软件的实现细节使得支持向量机可以和核函数相得益彰,而逻辑回归和核函数则运行得十分缓慢。

如果你使用了 较小的C,这对应着在逻辑回归问题中使用较大的 λ 对应着一个高偏差低方差的模型。所以,使用较大C值的模型为高方差更倾向于过拟合,而使用较小C值的模型为高偏差更倾向于欠拟合
高斯核函数中的σ2较大,那么高斯核函数倾向于变得相对平滑,这会给你的模型带来较高的偏差和较低的方差。在σ2较小的情况下,特征的变化会变得不平滑,最终得到的模型会是低偏差和高方差
在这里插入图片描述

7-3 SVMs in Practice

尽管你不应该去写你自己的 SVM 优化软件,但是你也需要做几件事儿。
首先是要选择参数C。
第二选择核函数或你想要使用的相似度函数。其中一个选择是我们选择不用任何核函数(线性核函数)。对于核函数的第二个选择是这个高斯核函数,如果你选择这个那么你要做的另外一个选择是选择一个σ2
在这里插入图片描述
一些支持向量机的包所做的是期望你能提供一个核函数,能够输入 x1 x2 并返回一个实数。目前看来,高斯核函数和线性核函数确实是最普遍的核函数。
在使用高斯核函数之前,对它们进行
归一化
是很重要的。
如果你的特征变量取值范围很不一样。拿房价预测来举例:如果特征向量 x 的 第一个变量 x1 的取值在上千平方英尺 的范围内,但是如果你的第二个特征变量 x2 是卧室的数量且如果它在 一到五个卧室范围内,那么 x1-l1 将会很大,而 x2-l2 将会变得很小。那么在这个式子中,这些间距将几乎都是由房子的大小来决定的。为了避免这种情况 让向量机得以很好地工作,确实需要对特征变量进行归一化。这将会保证SVM 能够同等地关注到 所有不同的特征变量。
在这里插入图片描述
**不是所有你可能提出来的相似度函数都是有效的核函数。高斯核函数 线性核函数 以及其他人有时会用到的 另外的核函数,它们全部需要满足一个技术条件:它叫作默塞尔定理。这个定理所做的是确保所有的SVM包 所有的SVM软件包能够使用大量的优化方法并且快速地得到参数 θ。

大多数人最后做的是要么用线性核函数,要么用高斯核函数,但是还有一些其他核函数满足默塞尔定理。
在这里插入图片描述
多项式核函数:通常它只用在 当 x 和 l 都是严格的非负数时以保证这些内积值永远不会是负数
字符串核函数:如果你的输入数据是文本字符串或者其他类型的字符串
卡方核函数 、直方图交叉核函数…

  1. 在多类分类中,你有4个类别或者更一般地说是 K 个类别,怎样让 SVM 输出各个类别间合适的判定边界?
  • 大部分 SVM 许多 SVM 包已经内置了多类分类的函数了,因此如果你用的是那种软件包,你可以直接用内置函数。
  • 另一个方式是一对多 (one-vs.-all) 方法。这就与我们在逻辑回归中用到的 一对多方法一样。在逻辑回归中我们只是取使得 θ(i) 转置乘以 x 最大的类 i。
    在这里插入图片描述
  1. 对逻辑回归和支持向量机两个算法,你什么时候应该用哪个呢?
  • 如果特征变量 n 的数量远大于训练样本数 m ,通常会使用逻辑回归或者使用没有核函数的 SVM,或者叫线性核函数。因为,如果你有许多特征变量而有相对较小的训练集,一个线性函数就可能工作得不错而且你也没有足够的数据来拟合非常复杂的非线性函数。
  • 现在如果 n 较小 而 m 是中等大小,通常高斯核函数的SVM会工作得很好。
  • 如果 n 很小 但是 m 很大,尝试手动地创建更多的特征变量,然后使用逻辑回归或者不带核函数的 SVM。因为,高斯核函数的支持向量机运行起来会很慢 。
  • 对于所有这些区间,一个设计得很好的神经网络也很可能会非常有效。它的一个缺点是或者说有时可能不会使用 神经网络的原因是,对于许多这样的问题,神经网络训练起来可能会很慢,但是如果你有一个非常好的 SVM实现包,它会运行得比较快,比神经网络快很多。
    在这里插入图片描述

测验 Support Vector Machines

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

课程链接

https://www.coursera.org/learn/machine-learning/home/week/7

课件

课件链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值