机器学习 | 吴恩达机器学习第七周学习笔记

课程视频链接

第七周PPT 下载密码:tmss

上周主要讲解了如何设计机器学习系统和如何改进机器学习系统,包括一些模型选择的方法,模型性能的评价指标,模型改进的方法等。本周主要讲解支持向量机SVM的原理包括优化目标、大间隔以及核函数等SVM核心内容,以及SVM的使用。

 

 

目录

 

1.优化目标

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

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

4.核函数1

5.核函数2

6.使用SVM

7.实验


1.优化目标

  • 逻辑回归算法回顾

逻辑回归假设函数:

z=\Theta ^{T}x,得到假设函数的图像如下:

假设我们现在有一个训练样本,接下来看一下逻辑回归到底在做什么:

如果该样本的标签y=1,我们希望h_{\Theta }(x)\approx 1,即\Theta ^{T}x>>0 ;

如果该样本的标签y=0,我们希望h_{\Theta }(x)\approx 0,即\Theta ^{T}x<<0 ;

 

对于某一个训练样本(x,y),给出它的代价函数:

如果标签y=1(希望\Theta ^{T}x>>0),此时上述代价函数将只有左边第一项,绘制出此时的图像,如下所示:

其中的曲线代表逻辑回归的代价函数,SVM的代价函数对逻辑回归代价函数做了一些简化,由两条直线段构成,记为cost_{1}(z).

同理,如果标签y=0(希望\Theta ^{T}x<<0),此时上述代价函数将只有右边第二项,绘制出此时的图像,如下所示:

其中的曲线代表逻辑回归的代价函数,SVM的代价函数对逻辑回归代价函数做了一些简化,由两条直线段构成,记为cost_{0}(z).

逻辑回归代价函数:

由两部分组成,代价和正则化惩罚项。基本形式为A+\lambda B,\lambda参数控制两部分的权重。

SVM代价函数(优化目标):

与逻辑回归稍有不同,去除了常数项1/m,这对最优值的求解没有影响;形式为CA+B,可以把C想象成1/\lambda,  C参数控制两部分的权重。

与逻辑回归不同的是SVM的假设函数h_{\Theta }(x)不会输出一个概率,而是直接进行分类。

首先通过最小化代价函数得到一组最优的参数,SVM的假设函数如下:

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

SVM分类器也被叫做大间隔分类器,本小节将用直观的图像,帮你理解这句话的含义。

  • SVM代价函数

左图为cost_{1}(z)图像,右图为cost_{0}(z)图像。为了使代价函数的值最小:

y=1时,我们希望\Theta ^{T}x\geqslant 1(而不仅仅是\Theta ^{T}x\geqslant 0),此时cost_{1}(z)=0。实际上预测时当\Theta ^{T}x\geqslant 0就能正确分类,此时假设函数h_{\Theta }(x)=1,但训练时SVM有更高的要求,比如\Theta ^{T}x\geqslant 1,不是恰好正确分类,而是在正确分类基础上还要构建一个安全间距。

y=0时,我们希望\Theta ^{T}x\leq -1(而不仅仅是\Theta ^{T}x\leqslant 0),此时cost_{0}(z)=0。实际上预测时当\Theta ^{T}x\leqslant 0就能正确分类,此时假设函数h_{\Theta }(x)=0,但训练时SVM有更高的要求,比如\Theta ^{T}x\leq -1,不是恰好正确分类,而且在正确分类基础上还要构建一个安全间距。

  • SVM决策边界

假设我们把参数C设置的非常大,比如C=100000,此时为了使代价函数最小,那么篮框中的第一项应该为0,才能把大参数C的增加效果抵消掉。也就是说此时:

当训练样本标签y^{(i)}=1时,满足\Theta ^{T}x^{(i)}\geqslant 1,才能使第一项为0;

同理,当训练样本标签y^{(i)}=0时,满足\Theta ^{T}x^{(i)}\leq -1,才能使第一项为0。

在这种情况下,我们通过选择一个很大的参数C,使得上述优化问题以及约束条件变成如下形式:

当最小化这个关于参数\Theta的代价函数时,可以得到一个非常有趣的决策边界:

上图是一个线性可分的数据集,其中洋红色、绿色和黑色的决策边界都能把正负样本分开;实际上利用SVM,会得到黑色的决策边界,从直观上来看,黑色决策边界比其他2者更稳健,鲁棒性更好。它不仅能正确分类,而且还可以以一个最大的安全间距进行分类,即它距离正负样本的最小距离最大。

我们把决策边界距离正负样本的最小距离称为间距,SVM可以得到间距最大的决策边界,因此SVM也被称作大间距分类器。

当参数C非常大时,我们可以对大间距分类器有一个直观的理解,如上图的黑色决策边界所示,但是此时很容易受到异常点的影响:

当C非常大时,由于上图左下角异常点的存在,决策边界会从黑色直线变成洋红色直线,这是我们不希望看到的。一般我们会把C设置的没那么大,此时他可以忽略异常点的影响,即使是线性不可分的情况,也可以得到上图中黑色的大间距决策边界。

可以把参数C想象成1/\lambda,当C非常大时,相当于\lambda非常小,此时容易出现高方差或过拟合的情况。

本小节,只是对大间距分类器有一个直观的理解,下一小节将具体探讨大间距分类器的数学原理。

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

  • 向量内积回顾

现有u,v两个列向量:

u^{T}v表示向量u,v的内积,从代数角度来看,u^{T}v=u_{1}v_{1}+u_{2}v_{2}

接下来我们从几何角度看u^{T}v

将向量u,v可视化,横纵轴数值代表他们在各自坐标轴上的分量。

||u||代表向量u的范数,即u的长度,||u||=\sqrt{u_{1}^{2}+u_{2}^{2}};

上图中的p代表向量v在向量u上的投影长度,这个长度可正可负,取决于向量u,v的夹角。当夹角小于90时,p为正;当夹角大于90时,p为负。下图为夹角大于90的情况:

此时u^{T}v=p\cdot ||u||,并且与之前代数角度获得的内积值是一样的。

  • SVM决策边界

当参数C非常大时,我们可以对大间隔分类器有一个直观的理解。此时的优化问题,变成如下形式:

对上述优化问题做一些简化,假设\Theta _{0}=0,并且n=2,即只有两个特征,那么该优化问题可以写成如下形式:

对于\Theta ^{T}x^{(i)},根据之前向量内积的性质,可以表示成如下形式:

我们最终可以得到如下的优化问题:

其中p^{(i)}是样本x^{(i)}在参数\Theta上的投影,依旧使用之前的简化,\Theta _{0}=0,n=2.

首先我们来解释一下SVM为什么不会产生小间距(决策边界到正负样本间的最小距离)的决策边界(下图绿色直线):

上图中,❌代表正样本,蓝圈代表负样本;x^{(1)},x^{(2)}分别代表其中的某个正负样本;绿色的直线是某一个决策边界(由于\Theta _{0}=0,它会过原点),利用线性代数的知识,我们知道参数向量\Theta的方向与决策边界是正交的;p^{(1)},p^{(2)}分别是正负样本x^{(1)},x^{(2)}\Theta上的投影。

y^{(1)}=1时,由约束条件可知,p^{(1)}\cdot ||\Theta ||\geqslant 1,由上图可知投影p^{(1)}(>0)非常小,这就要求||\Theta ||非常大,而这与优化目标最小化

||\Theta ||相悖;

同理,当y^{(2)}=0时,由约束条件可知,p^{(2)}\cdot ||\Theta ||\leq -1,由上图可知投影p^{(2)}(<0)非常小,这就要求||\Theta ||非常大,而这与优化目标最小化||\Theta ||也相悖;

因此,综上,SVM不会产生如上图绿线所示的小间距决策边界。

至于SVM为什么会产生大间距的决策边界(下图绿色直线),也是一个道理:

y^{(1)}=1时,由约束条件可知,p^{(1)}\cdot ||\Theta ||\geqslant 1,由上图可知投影p^{(1)}(>0)比较大,与之前相比,此时要求||\Theta ||可以小一些,这与优化目标最小化||\Theta ||相同;

同理,当y^{(2)}=0时,由约束条件可知,p^{(2)}\cdot ||\Theta ||\leq -1,由上图可知投影p^{(2)}(<0)比较大,此时要求||\Theta ||可以小一些,这与优化目标最小化||\Theta ||也相同;

因此,综上,SVM会产生如上图绿线所示的大间距决策边界。

之前的讨论一直做了简化,即\Theta _{0}=0,当\Theta _{0}\neq 0时,决策边界将是一条不通过原点的直线,产生大间距决策边界的分类效果是一样的。

4.核函数1

通过核函数改造SVM算法,得到新的特征变量,来构造复杂的非线性分类器:

考虑下图的数据集:

很显然该数据集是线性不可分的,如果想得到如上图所示的决策边界,仅用原始的两个输入特征是不够的。在这种情况下,可以增加新的多项式特征,比如:

我们用符号f_{i}为新的特征编号:

现在问题在于,多项式的组合有很多,是否存在一种最好的特征选择。之前学习逻辑回归时,对于这种情况,一般选择若干个不同的组合方式,得到不同的假设函数,通过在验证集上进行模型选择,从而选择最好的那一个。而在SVM中我们可以通过核函数对原始输入特征进行映射,得到一组更好的新特征。

  • Kernel

给定一个训练样本的输入变量x(有两个原始输入特征x_{1},x_{2},我们接下来会通过一些标记基于原始输入特征计算出一些新的特征。其中标记数=新的特征数,假设有三个标记l^{(1)},l^{(2)},l^{(3)}(至于标记具体如何选,下节课再讲解),此时会产生三个新特征f_{1},f_{2},f_{3}.

其中每一个新特征,都是原始输入特征向量与标记向量的相似度计算值,每一个标记向量都会产生一个新特征。我们把这个相似度函数称为核函数,而上图中采用的是高斯核函数。

  • 核函数和相似度

接下来我们看一下核函数到底做了什么:

核函数实际上在衡量样本的原始输入特征向量x和表标记向量l的距离。当2者非常接近时,返回的相似度值接近于1,产生的新特征也接近于1;当2者差距非常大时,返回的相似度值接近于0,产生的新特征也接近于0;

绘制核函数图像:

图像z轴代表相似度值,即f1.最高点在地面的投影坐标即为标记l^{(1)}的位置(3,5)。当特征向量x在(3,5)时,此时2者相似度最大为1,当x向周围移动时,相似度会减小。

接下来,观察一下\sigma值对核函数的影响:

\sigma比较小时,图像中突起的部分会比较窄,当xl^{(1)}外移动时,相似度下降的会比较快;

\sigma比较大时,图像中突起的部分会比较宽,当xl^{(1)}外移动时,相似度下降的会比较慢。

  • 假设函数

通过核函数我们对原始特征向量x进行映射,得到新的特征向量ff的维度等于标记向量的数量。上例中我们使用了3个标记向量,所以会得到三个新特征,此时的假设函数如下:

假设对于新的假设函数已经通过训练得到了一组最优的参数取值:\Theta _{0}=-0.5,\Theta _{1}=1,\Theta _{2}=1,\Theta _{3}=0.接下来对新的样本进行预测:

对于第一个新样本,上图洋红色的标记,它距离标记l^{(1)}比较近,离l^{(2)}l^{(3)}比较远,此时:

它会被预测为正类。

对于第二个新样本,上图蓝色的标记,它距离标记l^{(1)}l^{(2)}l^{(3)}都比较远,此时:

它会被预测为负类。

最后你会发现,对于一个新样本只要接近标记l^{(1)}l^{(2)}就会被预测为正类,否则为负类。那么,此时训练得到的决策边界可能如下图所示:

5.核函数2

  • 如何选择标记l

实际上,对于一个机器学习问题,每个样本的输入特征变量x都对应一个标记向量l,二者是一样的;如果有m个训练样本,将会有m个标记向量。

对于每一个样本来说,得到的新的特征变量的不同维度,实际上在描述该样本与样本集中其他样本的距离。

  • SVM with Kernels

对于一个训练集,首先选择标记点:

对于一个样本的输入特征x,对其做如下映射,得到新的输入特征f:

对于一个训练样本(x^{(i)},y^{(i)}),对其输入特征x^{(i)}做上述映射,得到新的输入特征f^{(i)}:

这样原始输入特征就从n+1维,映射成了m+1维(其中的+1指偏置项,恒等于1)。

  • SVM with Kernels的假设函数和代价函数

首先对原始输入特征x通过核函数映射为新特征f,然后用新的代价函数进行训练,得到最优的参数后,再带入新的假设函数进行预测。

使用内核后的假设函数还稍有些不同,对于后一项可以表示为:

\sum \Theta_{j}^{2}=\Theta ^{T}\Theta=||\Theta ||^{2} (此时忽略\Theta _{0}),但是\Theta的维度是m,即等于训练样本的数量,当训练样本非常多时,计算成本是很高的,所以此时的代价函数的后一项实际上为:\Theta ^{T}M\Theta,来提高运行效率,矩阵M的选择和使用的核函数有关。

当使用SVM时,不必担心代价函数如何编写代码,也不建议自己编写代码,直接调用别人已经写好的程序包,里面已经包含了许多优化技巧。

  • SVM参数

6.使用SVM

调用成熟的优化算法来求解SVM的参数,不要自己写代码:

当使用上述软件包时,需要考虑两个问题:

一种做法是不使用核函数,n比较大,m比较小的情况:

也可以使用核函数(高斯核函数),适用于n比较小,m比较大时:

如何选择由具体情况决定,后面会详细讨论。

 

高斯核函数也可以直接调用软件包,下图中输入是两个向量,输出为一个实数:

在使用高斯核函数之前,一定要对原始输入特征进行缩放:

否则,如上图所示,特征不同分量的取值范围差异很大的话,不同特征分量对计算新特征的影响程度是不同的。

  • 核函数的选择

并不是所有的核函数都可以用在SVM上,只有满足莫塞尔定理的核函数才可以。除了之前提到的高斯核函数和线性核函数之外,还有如下的核函数也满足莫塞尔定理:

不过这些核函数都不太常用,其中多项式核函数的形式可以有多种,它有constant和degree两个参数,效果不是很好。

  • 使用SVM进行多分类

许多SVM的软件包都实现了多分类的函数,可以直接调用。

除此之外,也可以采取之前讲解的利用逻辑回归实现多分类的方案:对于一个多分类,等价于做多次2分类,每次把其中的一个类别作为正类,其余类别为负类,最终预测时,看新样本属于哪个正类的假设函数值最大,就属于哪个类别。

  • 逻辑回归 vs. SVMs

逻辑回归和不带核函数的SVM很相似:

SVM虽然效果可能不如神经网络,但是训练速度很快,有很多成熟的软件包,神经网络训练很慢;而且SVM是一个凸优化问题,一定可以得到全局最优解,神经网络可能得到局部最优解(对于NN来说,是一个不大不小的问题)

7.实验

第七周实验

猜你喜欢

转载自blog.csdn.net/sdu_hao/article/details/84138502