吴恩达机器学习笔记(十三)

原创博客,转载请注明出处!

1、优化目标

在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法A还是学习算法B,而更重要的是,应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的水平。比如:你为学习算法所设计的特征量的选择,以及如何选择正则化参数,诸如此类的事。

还有一个更加强大的算法广泛的应用于工业界和学术界,它被称为支持向量机(Support Vector Machine)。与逻辑回归和神经网络相比,支持向量机,或者简称SVM,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。

从逻辑回归开始展示我们如何一点一点修改来得到本质上的支持向量机。我们用z表示ΘTx

我们取z = 1这个点,新的代价函数将会水平的从这里到右边(图外),然后我再画一条同逻辑回归非常相似的直线,但是,在这里是一条直线,也就是我用紫红色画的曲线,就是这条紫红色的曲线。那么,到了这里已经非常接近逻辑回归中使用的代价函数了。只是这里是由两条线段组成,即位于右边的水平部分和位于左边的直线部分,先别过多的考虑左边直线部分的斜率,这并不是很重要。但是,这里我们将使用的新的代价函数,是在 y = 1的前提下的。

另外一种情况是当 y = 0 时,得到图右的图像。

果我们用一个新的代价函数来代替,即这条从0点开始的水平直线,然后是一条斜线,像下图。那么,现在让我给这两个方程命名,左边的函数,我称之为cost1(z),同时,右边函数我称它为cost0(z)。这里的下标是指在代价函数中,对应的 y=1 和 y=0 的情况,拥有了这些定义后,现在,我们就开始构建支持向量机

这是我们在逻辑回归中使用代价函数,把负号放进了里面,然后用cost1(ΘTxi)和cost0(ΘTxi)代进去,去掉1/m这项,对于支持向量机,将使用一个不同的参数替换这里使用的λ来权衡这两项,改为C*A+B,这就得到了在支持向量机中我们的整个优化目标函数。然后最小化这个目标函数,得到SVM 学习到的参数

最后有别于逻辑回归输出的概率。在这里,我们的代价函数,当最小化代价函数,获得参数Θ时,支持向量机所做的是它来直接预测 y 的值等于1,还是等于0。因此,这个假设函数会预测1。当ΘTx大于或者等于0时,或者等于0时,所以学习参数Θ支持向量机假设函数的形式。那么,这就是支持向量机数学上的定义

2、直观上对大间隔的理解

有时将支持向量机看作是大间距分类器。在这一部分,我将介绍其中的含义,这有助于我们直观理解SVM模型的假设是什么样的。

这是我的支持向量机模型的代价函数,在左边这里我画出了关于 z 的代价函数cost1(z) ,此函数用于正样本,而在右边这里我画出了关于 z 的代价函数cost0(z),横轴表示 z ,现在让我们考虑一下,最小化这些代价函数的必要条件是什么。如果你有一个正样本,y=1 ,则只有在 z>=1 时,代价函数 cost1(z) 才等于0

支持向量机的要求更高,不仅仅要能正确分开输入的样本,即不仅仅要求 ΘTx > 0,我们需要的是比0值大很多,比如大于等于1,我也想这个比0小很多,比如我希望它小于等于-1,这就相当于在支持向量机中嵌入了一个额外的安全因子,或者说安全的间距因子

当然,逻辑回归做了类似的事情。但是让我们看一下,在支持向量机中,这个因子会导致什么结果。

如果 C 非常大,则最小化代价函数的时候,我们将会很希望找到一个使第一项为0的最优解

这样当你求解这个优化问题的时候,当你最小化这个关于变量 Θ 的函数的时候,你会得到一个非常有趣的决策边界

具体而言,如果你考察这样一个数据集,其中有正样本,也有负样本,可以看到这个数据集是线性可分的。我的意思是,存在一条直线把正负样本分开。当然有多条不同的直线,可以把正样本和负样本完全分开。

支持向量机将会选择这个黑色的决策边界,相较于之前我用粉色或者绿色画的决策界。这条黑色的看起来好得多,黑线看起来是更稳健的决策界。在分离正样本和负样本上它显得的更好。数学上来讲,这是什么意思呢?这条黑线有更大的距离,这个距离叫做支持向量机的间距

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

如果你加了这个样本,为了将样本用最大间距分开,也许我最终会得到一条类似这样的决策界,对么?就是这条粉色的线,仅仅基于一个异常值,仅仅基于一个样本,就将我的决策界从这条黑线变到这条粉线,这实在是不明智的。而如果正则化参数 C 设置的非常大,这事实上正是支持向量机将会做的它将决策界,从黑线变到了粉线。但是如果 C 设置的小一点,如果你将C设置的不要太大,则你最终会得到这条黑线

回顾 C=1/λ,因此:

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

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

3、大间隔分类器的数学原理

先复习一下关于向量内积的知识

向量u和v的内积:将向量v投影到向量u中,这条红线的长度p,有以下公式(注意p有符号,夹角大于90°时是负)

这就是我们先前给出的支持向量机模型中的目标函数,做些简化

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

这就是支持向量机最终会找到大间距分类器的原因

4、核函数1

还记得我们可以使用高级数的多项式模型来解决无法用直线进行分隔的分类问题

给定一个训练样本 x ,我们利用 x 的各个特征与我们预先选定的地标 l1, l2 , l3的近似程度来选取新的特征 f1,  f2 , f3。

就是核函数,具体而言,这里是一个高斯核函数(Gaussian Kernel)。 注:这个函数与正态分布没什么实际上的关系,只是看上去像而已

可以知道,如果训练样本 x 很接近地标 l ,则新特征f近似为1,相反,如果训练样本 x 和地标 l 距离很远,则 f 为0

假设我们有两个训练特征 x1 x2,如图可以看出,只有当 x 与l1重合时 f1 才具有最大值。随着 x 的改变 f1 值改变的速率受到 б² 的控制

这就是标记点和核函数训练出来的非常复杂的非线性决策边界的方法

5、核函数2

如何选择地标?

通常是根据训练集的数量选择地标的数量,即如果训练集中有 m 个样本,则我们选取 m 个地标,我们之间令那m个地标就是等于那m个训练样本,这样做的好处在于:现在我们得到的新特征是建立在原有特征与训练集中所有其他特征之间距离的基础之上的,即

给定 x ,计算新特征 f ,当 θ^Tf>=0 时,预测 y = 1,否则反之

用 θ^TMθ代替 θ^Tθ ,其中 M 是根据我们选择的核函数而不同的一个矩阵。这样做的原因是为了简化计算

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

C=1/λ

C 较大时,相当于λ较小,可能会导致过拟合,高方差;

C 较小时,相当于λ较大,可能会导致欠拟合,高偏差;

σ较大时,可能会导致低方差,高偏差;

σ较小时,可能会导致低偏差,高方差。

6、使用SVM

运用SVM,有许多好的软件库,我正好用得最多的两个是liblinearlibsvm

在高斯核函数之外我们还有其他一些选择,如:

多项式核函数(Polynomial Kernel)

字符串核函数(String kernel)

卡方核函数( chi-square kernel)

直方图交集核函数(histogram intersection kernel)

等等...

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

这些核函数的目标也都是根据训练集和地标之间的距离来构建新特征,这些核函数需要满足Mercer's定理,才能被支持向量机的优化软件正确处理。

你需要做几件事:

1、是提出参数 C 的选择。我们在之前的视频中讨论过误差/方差在这方面的性质。

2、你也需要选择内核参数或你想要使用的相似函数,其中一个选择是:我们选择不需要任何内核参数,没有内核参数的理念,也叫线性核函数。因此,如果有人说他使用了线性核的SVM(支持向量机),这就意味这他使用了不带有核函数的SVM(支持向量机)。

如果决定用高斯核函数,接下来要做的是根据使用的支持向量机软件包,你可能需要实现一个核函数或者实现相似函数

\

不是所有你可能提出来的相似函数都是有效的核函数,高斯核函数和线性核函数以及你有时可能会用到的核函数,这些函数都需要满足一个技术条件,叫做默赛尔定理,因为支持向量机的算法或者SVM的实现函数有许多熟练的数值优化技巧,为了有效的求解参数Θ,这个定理所做的是确保所有的SVM包都能用大类的软件优化方法并从而迅速得到参数Θ

在输出多个类别间的分类恰当的判定边界,很多svm包以及内置了,多分类的函数

现在讨论多分类的范式

从逻辑回归模型,我们得到了支持向量机模型,在两者之间,我们应该如何选择呢?

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

①如果相较于 m 而言, n 要大许多,即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机。

②如果 n 较小,而且 m 大小中等,例如 n 在 1-1000 之间,而 m 在10-10000之间,使用高斯核函数的支持向量机。

③如果 n 较小,而 m 较大,例如 n 在1-1000之间,而 m 大于50000,则使用支持向量机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向量机。

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

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值