吴恩达机器学习12-支持向量机

吴恩达机器学习12-支持向量机

1 优化目标

支持向量机( SVM),在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。

首线复习逻辑回归:

预测结果如下:

在这里插入图片描述

代价函数如下:

在这里插入图片描述

而支持向量机则是用折线来代替:

在这里插入图片描述

故对比两者可得到对应的优化目标:

min ⁡ θ 1 m [ ∑ i = 1 m y ( i ) ( − log ⁡ h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) ( ( − log ⁡ ( 1 − h θ ( x ( i ) ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 \min _{\theta} \frac{1}{m}\left[\sum_{i=1}^{m} y^{(i)}\left(-\log h_{\theta}\left(x^{(i)}\right)\right)+\left(1-y^{(i)}\right)\left(\left(-\log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right)\right]+\frac{\lambda}{2 m} \sum_{j=1}^{n} \theta_{j}^{2}\right. minθm1[i=1my(i)(loghθ(x(i)))+(1y(i))((log(1hθ(x(i))))]+2mλj=1nθj2

Support vector machine:

min ⁡ θ C ∑ i = 1 m [ y ( i ) cost ⁡ 1 ( θ T x ( i ) ) + ( 1 − y ( i ) ) cost ⁡ 0 ( θ T x ( i ) ) ] + 1 2 ∑ i = 1 n θ j 2 \min _{\theta} C \sum_{i=1}^{m}\left[y^{(i)} \operatorname{cost}_{1}\left(\theta^{T} x^{(i)}\right)+\left(1-y^{(i)}\right) \operatorname{cost}_{0}\left(\theta^{T} x^{(i)}\right)\right]+\frac{1}{2} \sum_{i=1}^{n} \theta_{j}^{2} minθCi=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+21i=1nθj2
在这里插入图片描述

公式简单分析:

  • 除去了1/𝑚这一项,1/𝑚 仅是个常量,对于最小值的求取无影响

  • 把正则化参数 𝜆 去除了,引入了C,可以把这里的参数𝐶 考虑成1/ 𝜆,例如𝐶 × 𝐴 + 𝐵因此,在逻辑回归中,如果给定𝜆,一个非常大的值,意味着给予 B 更大的权重。而这里,就对应于将𝐶 设定为非常小的值,那么,相应的将会给𝐵比给𝐴更大的权重。因此,这只是一种不同的方式来控制这种权衡或者一种不同的方法,即用参数来决定是更关心第一项的优化,还是更关心第二项的优化。

2.大边界的直观理解

在这里插入图片描述

存在一条直线把正负样本分开。当然有多条不同的直线,可以把正样本和负样本完全分开。

但是决策边界有好有坏,支持向量机将会选择这个黑色的决策边界,相较于之前用粉色或者绿色画的决策界。这条黑色的看起来好得多,黑线看起来是更稳健的决策界。在分离正样本和负样本上它显得的更好。数学上来讲,这条黑线有更大的距离,这个距离叫做间距(margin)。当画出这两条额外的蓝线,我们看到黑色的决策界和训练样本之间有更大的最短距离。然而粉线和蓝线离训练样本就非常近,在分离样本的时候就会比黑线表现差。因此,这个距离叫做支持向量机的间距,而这是支持向量机具有鲁棒性的原因,因为它努力用一个最大间距来分离样本。因此支持向量机有时被称为大间距分类器。
在这里插入图片描述

将这个大间距分类器中的正则化因子常数𝐶设置的非常大,我记得我将其设置为了100000,因此对这样的一个数据集,也许我们将选择这样的决策界,从而最大间距地分离开正样本和负样本。那么在让代价函数最小化的过程中,我们希望找出在𝑦 = 1和𝑦 = 0两种情况下都使得代价函数中左边的这一项尽量为零的参数。如果我们找到了这样的参数,则我们的最小化问题便转变成:

在这里插入图片描述

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

如果你加了入一个额外的正样本,为了将样本用最大间距分开,也许我最终会得到这条粉色的线,仅仅基于一个异常值,仅仅基于一个样本,就将我的决策界从这条黑线变到这条粉线,这实在是不明智的。如果你将 C 设置的不要太大,则你最终会得到这条黑线。当𝐶不是非常非常大的时候,它可以忽略掉一些异常点的影响,得到更好的决策界

回顾 𝐶 = 1/𝜆,因此:

𝐶 较大时,相当于 𝜆 较小,可能会导致过拟合,高方差。

𝐶 较小时,相当于 𝜆 较大,可能会导致低拟合,高偏差。

3.大边界分类背后的数学原理

向量内积: u T v u^{T} v uTv = 𝑝∥𝑢∥ 𝑝是𝑣投影到向量𝑢上的长度,𝑝事实上是有符号的,即它可能是正值,也可能是负值

在这里插入图片描述

首先看优化目标:

在这里插入图片描述

支持向量机做的全部事情,就是极小化参数向量𝜃范数的平方,或者说长度的平方。

在这里插入图片描述

θ T x ( i ) > = 1 \theta^{T} x^{(i)}>=1 θTx(i)>=1 或者 θ T x ( i ) < − 1 \theta^{T} x^{(i)}<-1 θTx(i)<1 的,约束 是可以被 p ( i ) ⋅ ∥ θ ∥ > = 1 p^{(i)} \cdot\|\theta\|>=1 p(i)θ>=1 这个约束所代替的。因为 θ T x ( i ) = p ( i ) ⋅ ∥ θ ∥ \theta^{T} x^{(i)}=p^{(i)} \cdot\|\theta\| θTx(i)=p(i)θ , 将其写入我们的优化 目标。我们将会得到没有了约束, θ T x ( i ) \theta^{T} x^{(i)} θTx(i) 而变成了 p ( i ) ⋅ ∥ θ ∥ p^{(i)} \cdot\|\theta\| p(i)θ

在这里插入图片描述

我们假设第一个样本𝑥(1),如果我考察这个样本到参数𝜃的投影,投影是这个短的红线段,等于𝑝(1),它非常短。类似地,这个样本如果它恰好是𝑥(2),第二个训练样本,则它到𝜃的投影在这里。我将它画成粉色,这个短的粉色线段是𝑝(2),即第二个样本到我的参数向量𝜃的投影。因此,这个投影非常短。𝑝(2)事实上是一个负值,𝑝(2)是在相反的方向,这个向量和参数向量𝜃的夹角大于 90 度,𝑝(2)的值小于 0。

如果 𝑝(𝑖)在这里非常小,那就意味着我们需要𝜃的范数非常大,所以要极大化𝑝(𝑖)的值

例如这个绿色的决策界使得正样本和负样本投影到𝜃的值最大大:

在这里插入图片描述

此外:𝜃0 = 0的意思是我们让决策界通过原点

4. 核函数 1

回顾我们之前讨论过可以使用高级数的多项式模型来解决无法用直线进行分隔的分类问题:

在这里插入图片描述

为了获得上图所示的判定边界, 我们的模型可能是 θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 x 2 + θ 4 x 1 2 + θ 5 x 2 2 + ⋯ \theta_{0}+\theta_{1} x_{1}+\theta_{2} x_{2}+\theta_{3} x_{1} x_{2}+\theta_{4} x_{1}^{2}+ \theta_{5} x_{2}^{2}+\cdots θ0+θ1x1+θ2x2+θ3x1x2+θ4x12+θ5x22+ 的形式。

在SVM中,可以利用核函数来计算出新的特征:

给定一个训练实例 𝑥 ,我们利用 𝑥 的各个特征与我们预先选定的 地 标(landmarks)𝑙(1), 𝑙(2), 𝑙(3)的近似程度来选取新的特征𝑓1, 𝑓2, 𝑓3。

f 1 = similarity ⁡ ( x , l ( 1 ) ) = e ( − ∥ x − l ( 1 ) ∥ 2 2 σ 2 ) f_{1}=\operatorname{similarity}\left(x, l^{(1)}\right)=e\left(-\frac{\left\|x-l^{(1)}\right\|^{2}}{2 \sigma^{2}}\right) f1=similarity(x,l(1))=e(2σ2xl(1)2)

其中: ∥ x − l ( 1 ) ∥ 2 = ∑ ∑ j = 1 n ( x j − l j ( 1 ) ) 2 \left\|x-l^{(1)}\right\|^{2}=\sum \sum_{j=1}^{n}\left(x_{j}-l_{j}^{(1)}\right)^{2} xl(1)2=j=1n(xjlj(1))2 , 为实例 x 中所有特征与地标 l^{(1)} 之间的距离的和。具体而言,这里是一个高斯核函数

注: 这个函数与正态分布没什么实际上的关系,只是看上去像而已。

𝑓2, 𝑓3同理。

地标的作用是什么?如果一个训练实例𝑥与地标𝐿之间的距离近似于 0,则新特征 𝑓近似于𝑒−0 = 1,如果训练实例𝑥与地标𝐿之间距离较远,则𝑓近似于𝑒−(一个较大的数) = 0。假设我们的训练实例含有两个特征[𝑥1 𝑥2],给定地标𝑙(1)与不同的𝜎值,见下图:

在这里插入图片描述

图中水平面的坐标为 𝑥1,𝑥2而垂直坐标轴代表𝑓。可以看出,只有当𝑥与𝑙(1)重合时𝑓才
具有最大值。随着𝑥的改变𝑓值改变的速率受到𝜎 2 2 2的控制。越小速率越快

图中红圈所示区域就是选出的判别边界:

在这里插入图片描述

5.核函数 2

地标的选取:

我们通常是根据训练集的数量选择地标的数量, 即如果训练集中有 m 个实例, 则我们选 取 m 个地标, 并且令: l ( 1 ) = x ( 1 ) , l ( 2 ) = x ( 2 ) , … . , l ( m ) = x ( m ) l^{(1)}=x^{(1)}, l^{(2)}=x^{(2)}, \ldots ., l^{(m)}=x^{(m)} l(1)=x(1),l(2)=x(2),.,l(m)=x(m) 。这样做的好处在于:现在我们 得到的新特征是建立在原有特征与训练集中所有其他特征之间距离的基础之上的, 即:

在这里插入图片描述

给定 x , 计算新特征 f , 当 θ T f > = 0 \theta^{T} f>=0 θTf>=0 时, 预测 y=1 , 否则反之。
相应地修改代价函数为:

∑ j = 1 n = m θ j 2 = θ T θ , \sum_{j=1}^{n=m} \theta_{j}^{2}=\theta^{T} \theta , j=1n=mθj2=θTθ,
min ⁡ C ∑ i = 1 m [ y ( i ) cost ⁡ 1 ( θ T f ( i ) ) + ( 1 − y ( i ) ) cost ⁡ 0 ( θ T f ( i ) ) ] + 1 2 ∑ j = 1 n = m θ j 2 \min C \sum_{i=1}^{m}\left[y^{(i)} \operatorname{cost}_{1}\left(\theta^{T} f^{(i)}\right)+\left(1-y^{(i)}\right) \operatorname{cost}_{0}\left(\theta^{T} f^{(i)}\right)\right]+\frac{1}{2} \sum_{j=1}^{n=m} \theta_{j}^{2} minCi=1m[y(i)cost1(θTf(i))+(1y(i))cost0(θTf(i))]+21j=1n=mθj2

在具体实施过程中,我们还需要对最后的正则化项进行些微调整, 在计算 ∑ j = 1 n = m θ j 2 = θ T θ \sum_{j=1}^{n=m} \theta_{j}^{2}=\theta^{T} \theta j=1n=mθj2=θTθ 时, 我们用 θ T M θ \theta^{T} M \theta θTMθ 代替 θ T θ \theta^{T} \theta θTθ , 其中 M 是根据我们选择的核函数而不同的一个矩阵。这样做的原因是为了简化计算。

另外,支持向量机也可以不使用核函数,不使用核函数又称为线性核函数(linear kernel),
当我们不采用非常复杂的函数,或者我们的训练集特征非常多而实例非常少的时候,可以采用这种不带核函数的支持向量机。

下面是支持向量机的两个参数𝐶和𝜎的影响:

𝐶 = 1/𝜆
𝐶 较大时,相当于𝜆较小,可能会导致过拟合,高方差;
𝐶 较小时,相当于𝜆较大,可能会导致低拟合,高偏差;
𝜎较大时,可能会导致低方差,高偏差;
𝜎较小时,可能会导致低偏差,高方差。

6.使用支持向量机

多类分类问题

假设我们利用之前介绍的一对多方法来解决一个多类分类问题。如果一共有𝑘个类,则我们需要𝑘个模型,以及𝑘个参数向量𝜃。我们同样也可以训练𝑘个支持向量机来解决多类分类问题。但是大多数支持向量机软件包都有内置的多类分类功能,我们只要直接使用即可。

  • 参数𝐶的选择

注意其带来的高方差和高偏差问题

  • 选择内核参数或你想要使用的相似函数

核函数有很多:

高斯核函数
多项式核函数
字符串核函数
卡方核函数
直方图交集核函数

下面是一些普遍使用的准则:

𝑛为特征数,𝑚为训练样本数。

(1)如果相较于𝑚而言,𝑛要大许多,即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机。
(2)如果𝑛较小,而且𝑚大小中等,例如𝑛在 1-1000 之间,而𝑚在 10-10000 之间,使用高斯核函数的支持向量机。
(3)如果𝑛较小,而𝑚较大,例如𝑛在 1-1000 之间,而𝑚大于 50000,则使用支持向量机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向量机。

神经网络在以上三种情况下都可能会有较好的表现,但是训练神经网络可能非常慢,选择支持向量机的原因主要在于它的代价函数是凸函数,不存在局部最小值(全局最优)。

除了算法的选择之外,注意:

你有多少数据,
你有多熟练是否擅长做误差分析和排除学习算法,
指出如何设定新的特征变量和找出其他能决定你学习算法的变量等方面

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值