天天看点

吴恩达机器学习笔记(十一)——支持向量机

1. 优化目标

首先从逻辑回归开始讲起,我们会先定义sigmoid函数

吴恩达机器学习笔记(十一)——支持向量机

然后我们根据sigmoid函数绘制出它的图像,如下图所示:

吴恩达机器学习笔记(十一)——支持向量机

基于上面的图像,我们可以得到下面的结论:

  1. 如果y=1,那么我们期望得到hθ(x)≈1,即要使θTx >>0
  2. 如果y=0,那么我们期望得到hθ(x)≈0,即要使θTx <<0

下面接着讨论逻辑回归中单个样本的代价函数,如下图所示:

吴恩达机器学习笔记(十一)——支持向量机

紧接着,我们根据逻辑回归的代价函数图像类比出支持向量机中代价函数图像,如下图所示:

吴恩达机器学习笔记(十一)——支持向量机

上图中需要注意的地方有以下几个:

  1. 可以观察到,支持向量机代价函数图像和逻辑回归代价函数图像形状是类似的
  2. 从左图可以观察到,y=1时支持向量机的代价函数中,当z<1时,是一条倾斜直线(斜率不重要)。当z>1时,代价函数是等于0的。
  3. 从右图可以观察到,y=0时支持向量机的代价函数中,当z>-1时,是一条倾斜直线(斜率不重要)。当z<-1时,代价函数是等于0的。
  4. 定义y=1时,代价函数为cost1(z)。定义y=0时,代价函数为cost0(z)。

下面是逻辑回归中我们使用的代价函数表达式:

吴恩达机器学习笔记(十一)——支持向量机

进行类比,替换成cost0(z)和cost1(z),得到SVM的代价函数,如下图所示

吴恩达机器学习笔记(十一)——支持向量机

同样对于上面的代价函数,我们有几个方面需要注意:

  1. 我们可以看到逻辑回归代价函数中有1/m,但是在SVM的代价函数中并没有,但是这并不影响取值,因为这不会改变取值。
  2. 我们可以将逻辑回归的代价函数定义为A+λB。但是将SVM的代价函数定义为CA+B。其中C相当于1/λ。两者其实是一样的,只是优化的对象不同而已。

逻辑回归和支持向量机的另一点不同是:**逻辑回归会输出y=1的概率,但是支持向量机中只有0和1两种取值。**如下图所示:

吴恩达机器学习笔记(十一)——支持向量机

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

SVM又称为大间隔分类器。

对于上一小节进行回顾,我们进行总结可以得到下面这张图

吴恩达机器学习笔记(十一)——支持向量机

从上图中,我们可以看到,我们对于θTx的条件变得更加严苛了。

接下来,我们首先考虑C非常大的情况,来看看SVM会发生什么。

因此我们的C很大,所以我们就期待代价函数的第一项趋近于0,因此我们就需要完成下面的工作。

吴恩达机器学习笔记(十一)——支持向量机

这样,我们的代价函数就可以简化成下图:

吴恩达机器学习笔记(十一)——支持向量机

下面是使用SVM分类的结果,如下图所示

吴恩达机器学习笔记(十一)——支持向量机

其中粉色线代表了C非常大的情况,受制于离群点,所以分类结果并不好。

黑色线则代表C不是很大的情况,就不会受到离群点的影响。

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

首先是介绍了一些向量的知识,如下图所示:

吴恩达机器学习笔记(十一)——支持向量机

上图中要注意的点主要有以下几个:

  1. uTv=p*||u|| (向量的内积=v在u上投影的长度*u向量的模长)
  2. uTv=u1v1+u2v2 (线代公式)
  3. p(v在u上投影的长度)是有方向的,如果大于90度则为负值。

为了方便解释,这里先假设θ0=0,且特征数n=2。

对于上一节最后的代价函数进行变形,我们可以得到以下等式:

吴恩达机器学习笔记(十一)——支持向量机

我们将刚刚提到的如何计算uTv类比到计算θTx(i),有如下图所示:

吴恩达机器学习笔记(十一)——支持向量机

于是,我们将刚刚的限制条件代入上图的计算,可得到下图:

吴恩达机器学习笔记(十一)——支持向量机

首先,我们需要了解到,参数θ和决策边界是相互垂直的,具体原理可以看这篇博文:SVM参数θ和决策边界正交的原因

基于此,我们就可以得到下面两幅图,其中绿色代表决策边界,蓝色代表参数θ。

吴恩达机器学习笔记(十一)——支持向量机

其中上图有几点我们需要注意:

  1. 根据我们之前提到的要计算θTx(i),其实就是要计算p(i)*||θ||,从图中可以看到,第一幅图的p(i)会比第二幅图的p(i)更小,因此根据限制条件,第一幅图的||θ||要比第二幅图更大
  2. 但是,我们的代价函数是1/2 ||θ||2。如果是选择第一幅图的决策边界,那么就会使代价函数较大。因此SVM最终会选择大间距的第二幅图。

4.核函数1

首先,我们引入{f1,f2,f3,…,fn}来替代{x1,x2,x1x2,…},如下图所示:

吴恩达机器学习笔记(十一)——支持向量机

但是我们不知道几阶的多项式适合我们,那么我们有没有办法构造新的特征呢?

吴恩达机器学习笔记(十一)——支持向量机

上图中我们需要注意的有以下几个方面:

  1. 首先我们定义了一些标记l(1)、l(2)、l(3)。
  2. 接着我们构建了新的特征f1、f2、f3。
  3. f(i)的表达式见上图,其中上面用到的表达式其实和高斯分布是相关的,在这里这个函数就被称为核函数,它是一种高斯核函数

进一步我们可以得到下图:

吴恩达机器学习笔记(十一)——支持向量机

其中我们可以注意到,当x和l近似相等时,f等于1。当x和l距离比较远的话,f等于0

进一步,我们进行可视化可以得到下图:

吴恩达机器学习笔记(十一)——支持向量机

基于此,我们假设我们已经求出了最优的参数θ,下面就解释一下如何来进行分类:

吴恩达机器学习笔记(十一)——支持向量机

在上图中,需要注意的点有以下几个:

  1. 首先是定义了三个标签l(1)、l(2)、l(3)。接着我们放入样本x,也就是图中粉色的点
  2. 可以观察到x和l(1)比较近,所以相似度比较高,则f1≈1。而x和l(2)、l(3)比较远,所以相似度较低则f2≈0、f3≈0
  3. 接着,我们代入表达式就可以计算出等于0.5,是大于0的,所以会分类为1.
  4. 同理我们可以将其他样本进行分类。

5.核函数2

那么在实际应用中,我们如何选取标签l(1)、l(2)、l(3)呢。

我们的想法是将我们拥有的每一个样本点作为新的标记点,如下图所示:

吴恩达机器学习笔记(十一)——支持向量机

下面列出具体的过程,如下图所示:

吴恩达机器学习笔记(十一)——支持向量机

构建完成后,我们就可以使用支持向量机来进行预测了:

吴恩达机器学习笔记(十一)——支持向量机

接着,谈一下C和标准差σ的选择问题:

吴恩达机器学习笔记(十一)——支持向量机

对于上图我们需要注意的点有以下几个:

  1. 当C很大的时候,就相当于λ很小,也就相当于没有正则化,所以可能会出现过拟合(低偏差,高方差)。同理可得到相反情况
  2. 当σ比较大的时候,高斯分布比较缓和,所得到的的曲线也比较缓和,所以会出现欠拟合现象(高偏差,低方差)。当σ比较小的时候,曲线没有那么缓和,就可能出现过拟合现象(低偏差、高方差)。

综上,吴恩达老师带我们入门了支持向量机。我觉得,对我而言是一个挺困难的过程,有一种似懂非懂的感觉,具体的原理等后面阅读其他相关书籍再深入研究。

上面罗列了一大堆知识,我用我的话进行总结一下:首先如果我们采用传统的构造多项式的方法,那么我们在多项式上的选择会比较麻烦。因此SVM提出了构建新的标签l,这些标签l是基于样本进行构建的。也就是有多少个样本,就会有多少个标签l(注意这里是将我们原来横向的特征变为了竖向的样本数)。通过计算每个标签和当前样本x的距离,从而构建出新的特征f。然后通过这个新的特征f和代价函数拟合出最优参数θ。其中在计算标签和样本距离的时候,我们会使用到高斯核函数,核函数的作用就是计算相近程度,将距离映射到【0,1】空间上。最后我们就可以使用我们拟合出来的参数θ来进行分类了。

以上是我学完之后的一些理解,如果有不对的地方,希望大佬们可以指正。

6.使用SVM

我们常用的计算SVM的软件库有:liblinear、libsvm等。

在使用这些软件库的时候,我们也需要选择一些参数:

吴恩达机器学习笔记(十一)——支持向量机

对于C的选择主要参考上一小节总结的内容。

对于核函数的选择如下图所示:

吴恩达机器学习笔记(十一)——支持向量机

对于上图,我们需要注意以下几个方面:

  1. 如果特征n很多,样本数m很少,那么就适合使用没有核函数的SVM,从而得到一个线性的函数。如果在这种情况下使用高斯核函数,就容易出现过拟合的情况。上面提到的liblinear就是线性线性核函数的库。
  2. 如果特征n很少,样本数适中,那么就可以采用高斯核函数。如果选择使用高斯核函数,那么就需要确定σ,选择方法具体参考上一小节。
  3. 并且如果我们使用核函数,我们还需要自己去进行核函数的实现,下面以高斯核函数为例
    吴恩达机器学习笔记(十一)——支持向量机
  4. 其中,我们还需要特别注意,如果我们不同的特征相差太大,我们还需要进行归一化

当然还有其他几种核函数,多项式核函数、字符串核函数等等:

吴恩达机器学习笔记(十一)——支持向量机

接着讲解了SVM如何进行多元分类,如下图所示:

吴恩达机器学习笔记(十一)——支持向量机

对于上图,我们需要注意的点有以下几个:

  1. SVM中的多元分类其实还是使用到了之前学的one vs all的技巧,会分贝计算出θ(1)、θ(2)、…、θ(K),最后通过选出最大的(θ(i))Tx最大的
  2. 可以直接调用SVM多元分类的方法

最后是逻辑回归和SVM的选择问题,如下图所示:

吴恩达机器学习笔记(十一)——支持向量机

继续阅读