吴恩达机器学习--支持向量机(SVM)

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

1.优化目标

1.1 逻辑斯蒂回归

以逻辑回归的Sigmoid函数谈起,它的函数形式如下图。

如果有一个𝑦=1的样本 ,会希望 ℎ𝜃(𝑥) 趋近 1。因为我们想要正确地将此样本分类,这就意味着当 ℎ𝜃(𝑥)趋近于 1时, 𝜃𝑇𝑥 应当远大于 0,这里的 >>意思是远远大于 0。相反地,如果我们有另一个样本,即 𝑦=0。我们希望假设函数的输出值将趋近于 0,这对应于 𝜃𝑇𝑥,或者就是 𝑧 会远小于 0 。

上图为逻辑斯蒂回归的代价函数,可以看到,当y = 1,即样本为正样本时,只有 \log h_{\theta }x作用于代价函数的值。同理,当y = 0,即样本为负样本时,只有 1- \log h_{\theta }x作用于代价函数。即当预测值与实际值越接近时,代价函数的值越接近于0,从而达到优化目标的实现。

1.2 从逻辑斯蒂到SVM

在上述逻辑斯蒂回归的基础上,对函数进行一点小小的变化,即将光滑的圆弧线变为两条线段。

将 y = 1时的函数记为 cost1(Z) ,将y = 0时的函数记为 cost0(Z)

在此基础上,我们开始构建支持向量机,只需要在逻辑斯蒂回归的代价函数基础上修改一点。将参数1/m 变为C,再加上正则项,同时将sigmoid函数变为cost函数,便大功告成!

2.大边界的直观理解

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

可以看到此处用红色笔将0化为1,这是逻辑斯蒂回归与SVM的一大区别。

逻辑斯蒂回归中,只是希望𝜃𝑇𝑥>>0 || <<0,没有强制地边界要求。此外,他的\log h_{\theta }x永远无法达到 0 值。

而在SVM中,如果你有一个正样本,我们会希望𝜃𝑇𝑥>=1,反之,如果 𝑦=0,我们观察一下,函数 cos𝑡0(𝑧),它只有在 𝑧<=−1的区间里函数值为 0。这是支持向量机的一个有趣性质。

事实上,如果你有一个正样本 𝑦=1,则其实我们仅仅要求 𝜃𝑇𝑥大于等于 0,就能将该样本恰当分出,这是因为如果 𝜃𝑇𝑥>0大的话,我们的模型代价函数值为 0,类似地,如果你有一个负样本,则仅需要 𝜃𝑇𝑥<=0就会将负例正确分离。但是,支持向量机的要求更高,不仅仅要能正确分开输入的样本,即不仅仅要求 𝜃𝑇𝑥>0,我们需要的是比 0值大很多,比如大于等于 1,我也想这个比 0小很多,比如我希望它小于等于 -1,这就相当于在支持向量机中嵌入了一个额外的安全因子,或者说安全的间距因子

要让上述值越小越好,即想办法让第一项为0。

对于标签为y=1的样本,需要𝜃𝑇𝑥 >= 1,反之若标签为y=0,需要𝜃𝑇𝑥 <= -1,在这个基础上我们能够最优化代价函数,从而得到一条决策边界,能够将正负样本分开。

但是对于上述的绿线和粉线,距离正负样本的距离均太近了,倘若周围多出一个样本,可能就会产生错误,而图中的黑线,则显得很舒适,它的决策也会表现更好。当画出这两条额外的蓝线(右图),我们看到黑色的决策界和训练样本之间有更大的最短距离。这个间距叫做支持向量机的间距。

此处,还有一个值得一提的点。我们再观察一下SVM的代价函数,对于正则化因子常数C,设置的大小对分类会产生不一样的影响。

我们需要最小化上式,即尽量让前项为0,则上式便可以转化为:

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

如果我们想要将所有的正负样本点都分离开来,得到的必须是这样一条粉色的线。但是,仅仅因为一个异常点,就将决策边界进行大规模地转变,是不明智的。将我的决策界从这条黑线变到这条粉线,这实在是不明智的。而如果正则化参数 𝐶,设置的非常大,这事实上正是支持向量机将会做的。它将决策界,从黑线变到了粉线,但是如果 𝐶设置的小一点,如果你将 C设置的不要太大,则你最终会得到这条黑线。这便是正则化参数权重的考虑。

观察此式,当正则化参数C非常大时,前项的权重值被拉的非常大。因此对于一个异常点,倘若不将其考虑在内,那一个异常点所能引起代价函数较大程度的增大,导致适得其反,因此,对于权重C越大,越会将正负样本分离开来。反之,若权重C相对较小,引起的代价函数变化也较小,对偶尔的错误样本则置之不理了。换句话说:

𝐶 较大时,可能会导致过拟合,高方差。
𝐶 较小时,可能会导致低拟合,高偏差。

3.核函数

逻辑回归时得出的结论:当分类问题无法用简单的直线实现分割时,可以使用高级数的多项式模型来解决该问题。

为了获得上图所示的判定边界,我们的模型可能是
𝜃0+𝜃1𝑥1+𝜃2𝑥2+𝜃3𝑥1𝑥2+𝜃4𝑥12+𝜃5𝑥22+⋯的形式。
我们可以用一系列的新的特征f来替换模型中的 每一项。例如令: 𝑓1=𝑥1,𝑓2=𝑥2,𝑓3=𝑥1𝑥2,𝑓4=𝑥12,𝑓5=𝑥22

得到:

ℎ𝜃(𝑥)=𝜃1𝑓1+𝜃2𝑓2+...+𝜃𝑛𝑓𝑛

除了对原有特征进行组合外,还有没有更好的方法去构造f ?

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

例如:

上例中的 𝑠𝑖𝑚𝑖𝑙𝑎𝑟𝑖𝑡𝑦(𝑥,𝑙(1)) 就是核函数。具体而言,这里是一个 高斯核函数 (Gaussian Kernel)。

通过该核函数可以看出,若一个训练实例x与地标L之间的距离近似于0,则新特征 f 近似于 1。反之近似于0。

举例说明: 假设我们的训练实例含有两个特征[𝑥1 𝑥2],给定地标 𝑙 与不同的 𝜎值,见下图:

可以看到,三幅图的最高点均为(3,5,1);不同的是由于\sigma值的不同,改变的速率不同。

在下图中,当实例处于洋红色的点位置处,因为其离𝑙(1)更近,但是离 𝑙(2)和 𝑙(3)较远,因此 𝑓1接近 1,而 𝑓2,𝑓3接近 0。因此 ℎ𝜃(𝑥)=𝜃0+𝜃1𝑓1+𝜃2𝑓2+𝜃1𝑓3>0,因此预测 𝑦=1。同理可以求出,对于离 𝑙(2)较近的绿色点,也预测 𝑦=1,但是对于蓝绿色的点,因为其离三个地标都较远,预测 𝑦=0。

这样,图中红色的封闭曲线所表示的范围,便是我们依据一个单一的训练实例和我们选取的地标所得出的判定边界,在预测时,我们采用的特征不是训练实例本身的特征,而是通过核函数计算出的新特征 𝑓1,𝑓2,𝑓3。

很多人看到这里,肯定会想,如何选择地标呢?

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

给定 𝑥,计算新特征 𝑓,当 𝜃𝑇𝑓>=0 时,预测 𝑦=1,否则反之。

下面是支持向量机的两个参数
𝐶和 𝜎的影响:
𝐶=1/𝜆
𝐶 较大时,相当于 𝜆较小,可能会导致过拟合,高方差;
𝐶 较小时,相当于 𝜆较大,可能会导致低拟合,高偏差;
𝜎较大时,可能会导致低方差,高偏差;
𝜎较小时,可能会导致低偏差,高方差。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值