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

一、优化目标

支持向量机(Support Vector Machine ,SVM)是另一种监督式学习算法。它有时候更加的简洁和强大。

我们将逻辑回归中的代价函数转化一下,并使用两段直线来尝试替代曲线,这被称作hinge loss 函数。
吴恩达机器学习笔记(10)——支持向量机SVM_第1张图片
我们把第一项定义为​cost1(z)​,第二项定义为​cost0(z)​,那么可以说​cost1(z)是当y=1时进行分类的代价函数,​cost0(z)是当y=0时进行分类的代价函数。
用cost1和cost0代替,进而有:
在这里插入图片描述
对公式稍作变形,乘上一个​m/λ,并​记C=1/λ,于是就变成:
在这里插入图片描述
这就是通常使用的SVM代价函数,这个系数C本质上和λ一样的,都是改变普通代价函数项和正则项的权重关系。也就是说,如果我们想要加强正则化强度来处理过拟合,那么减小C;如果想要减少正则化强度来处理欠拟合,那么增大C。

最后,与逻辑回归中不同的是,SVM算法的假设函数并不代表y=0或1的概率,而是只输出0或1:
在这里插入图片描述




二、直观上对大间隔的理解(Large Margin Intuition)

有时人们会把支持向量机称作大间距分类器(Large Margin Intuition)。
吴恩达机器学习笔记(10)——支持向量机SVM_第2张图片
因为在实际分类中,逻辑回归可能会绘画出粉色或者绿色或者蓝色的决策边界线,但是SVM会绘制出黑色的决策边界,具有鲁棒性(robustness)。
在SVM算法中,决策边界的性质是:尽可能地远离正数据集与负数据集。为什么这样做呢?因为这样会使决策边界对于两种数据集都有一些余地,也就是有一些容错率。

有几点要注意的是:

  • 样本与决策边界之间的距离称为余量(margin),由于SVM需要最大化余量,因而又被称为大余量分类器(Large Margin Classifier)。
  • SVM的大间距性质仅当C非常大的时候才能实现。
  • 如果我们存在一些偏差较大的数据(outlier),又不想让其过分影响决策边界时,那么我们需要减小C的数值。



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

我们将代价函数最小化的过程,实质上是令数据集构成的向量X,在决策边界θ上的投影大于1或者小于-1。对于所有的数据​X(i)​都进行这样的操作,就使得决策边界与所有数据集之间的余量变大了。
吴恩达机器学习笔记(10)——支持向量机SVM_第3张图片
比起左边的绿色决策边界,右边的绿色决策边界更符合SVM的原理。因此称为大间距分类器。

PS:支持向量机的决策边界与θ向量是正交的。因为θTx=0




四、核函数(kernels)

1、Kernels I – 高斯核函数与“地标”

之前,我们在处理非线性决策边界时,使用的方法是引入多项式:
在这里插入图片描述
我们可以将其抽象为:

其中:
在这里插入图片描述
问题是,除了使用幂次项,还有别的办法替代​f1、f2​吗?
吴恩达机器学习笔记(10)——支持向量机SVM_第4张图片
我们的做法是,假设我们的坐标系上有一些“地标”(landmark),我们要做的是,计算数据样本x与地标之间的接近程度,这里引入了一个新的函数similarity:
在这里插入图片描述
我们称作高斯核函数(Gaussian Kernel)。这是核函数里面的一种。
它的性质是:
吴恩达机器学习笔记(10)——支持向量机SVM_第5张图片

因此,我们通过标记点和相似性函数,来定义新的特征变量,从而训练复杂的非线性边界。

2、Kernels II – 地标的选取

获取地标的一种方法是,直接将训练样本作为标记点。这样我们可以得到m个地标,每个地标对应着一个训练样例。即为:
吴恩达机器学习笔记(10)——支持向量机SVM_第6张图片
因此,对于某个训练样本xi要计算的特征f为:
吴恩达机器学习笔记(10)——支持向量机SVM_第7张图片
参数θ如何得到呢:
在这里插入图片描述
其中n=m。

PS:这里有一些对于参数C的总结:

  • 如果C比较大,那么我们会有更高的方差、更低的偏差(过拟合)
  • 如果C比较小,那么我们会有更高的偏差、更低的方差(欠拟合)

还有一些对于参数​σ2​的总结:

  • 如果​σ2​比较大,那么特征量变化会更加平滑,这意味着更高的偏差、更低的方差(欠拟合)
  • 如果​σ2​比较小,那么特征量变化会没那么平滑,这意味着更高的方差、更低的偏差(过拟合)



五、使用SVM

吴恩达建议直接使用现成的SVM软件包去优化参数θ,比如 ‘liblinear’ 和 ‘libsvm’,而不是自己去编写。
但是自己在编写程序的时候还应该注意一下几点:

  • 参数C的选择
  • 核函数的选择
  • 在使用核函数之前,要将特征向量的大小按比例归一化。
  • 并不是所有相似函数都可以作为有效的核函数,必须满足默塞尔定理。(最常用的就是线性核函数和高斯核函数)
  • 多类型分类时,可以使用one vs all方法
  • 逻辑回归和SVM的选择技巧:
    假设n代表特征数量,m代表训练样本。如果n>>>m,那么使用逻辑回归,或者是无核函数的SVM算法(线性核函数);如果n比较小,m适中,那么使用高斯核函数支持的SVM算法;如果n比较小,m非常大,那么手动地添加更多的特征量,然后使用逻辑回归或者不带核函数的SVM算法

SVM是一种凸优化方法!!!

你可能感兴趣的:(吴恩达机器学习)