第十二章-SVM支持向量机 深度之眼_吴恩达机器学习作业训练营

目录

一,优化目标

  1.1 从逻辑回归到SVM

1.1.1 回顾逻辑回归算法

1.1.2 损失项变换

1.1.3 正则化变换

1.1.4 假设函数变换

  1.2 最大间隔

1.2.1 直觉上理解

1.2.2 最大间隔的数学原理

二, 核函数

2.1 高斯核函数

2.2 其他核函数

三,SVM的使用建议

3.1 超参数

3.2 核函数的选择以及训练

3.3 多分类问题


一,优化目标

支持向量机(Support Vector Machines,简称SVM)是一个非常强大且广泛运用与工业界和学术界的算法,其为学习复杂的非线性方程提供了一直清晰且强大的方法。其即可用于分类问题,又可稍加变形运用到回归问题中,本章主要从分类问题着手,从逻辑回归算法“演变”到SVM。

  1.1 从逻辑回归到SVM

本节中,我们首先回顾逻辑回归算法,然后再通过“3步变换”,得出SVM算法。

1.1.1 回顾逻辑回归算法

研究任何一个算法,首要的就是确定其优化目标,也就是常说的损失函数。这里我们先回顾逻辑回归的目标函数与损失函数:

                                             h_{\theta}(X)=g(\theta ^{T} X)                       (公式 6.1)

                                           g(Z) = \frac{1}{1+exp(-Z)},                    (公式 6.2)

                           J(\theta) = -\frac {1}{m} \sum_{i=1}^{m}[ y^{i} log(h_{\theta}(x^{i})) + (1-y^{i})log(1-h_{\theta(x^{i})}) ] + \frac{\lambda}{2m}\sum _{j=1}^{n}\theta_{j}^{2}         (公式9.1)

         其中 g(Z)函数即为 sigmoid()函数,其函数图像如下:  

图12-1 sigmoid函数

             在逻辑回归中h(X)一直可被理解为样本 X的标签y=1的概率,当 θX越大,概率越接近1;当 θX越小,概率越接近0。再来观察损失函数,当样本X的真实标签Y为1或为0时损失函数分别如图12-2和图12-3所示。

图12-2 y=1时的损失函数

当y=1时:如果Z越大相应的预测为1的概率越大,则损失值越小;反之如果Z越小相应的预测为1的概率越小,则损失值越大。

图12-3 y=1时的损失函数

当y=0时:如果Z越大相应的预测为1的概率越大,则损失值越大;反之如果Z越小相应的预测为1的概率越小,则损失值越小。

1.1.2 损失项变换

在SVM中,我们将公式9.1中的-log\frac{1}{1+ e^{(-Z)})}项改为了更加严格的cost_{0}(Z)。如图12-2中所示橙色的曲线,假设真实标签Y=1:当Z >= 1时,默认其损失值为0,否则其损失值与Z和1之间的距离成正比。

同理将公式9.1中的-log(1 - \frac{1}{1+ e^{-Z}})项改为了更加严格的cost_{1}(Z)。如图12-3中所示橙色的曲线,假设真实标签Y=0:当Z < -1时,默认其损失值为0,否则其损失值与Z和-1之间的距离成正比。

综上所述,在标签确定的情况下,只有Z大于一定阈值才默认预测正确,否则便会计算损失值。变换后公式如下:

J(\theta) = \frac {1}{m} \sum_{i=1}^{m}[ y^{i} Cost_{0}(\theta^{T}x^{i}) + (1-y^{i})Cost_{1}(\theta^{T}x^{i}) ] + \frac{\lambda}{2m}\sum _{j=1}^{n}\theta_{j}^{2}          (公式 12.1)

1.1.3 正则化变换

  在求解最优化参数时,将损失函数成倍扩大或缩小并不影响求解,所以这里将损失函数扩大了m倍,m即为样本总量。回顾第7章可知 正则化参数 λ是用来权衡损失项和正则化项之间比重关系的。这里采用一种等价变换的方式,在保留了两者之间的比重关系的同时变换了公式,即将公式从 A + \lambda B的形式变换成了CA +B 其中C = \frac{1}{\lambda}。于是便得到了最终的SVM损失函数:

J(\theta) = C\sum_{i=1}^{m}[ y^{i} Cost_{0}(\theta^{T}x^{i}) + (1-y^{i})Cost_{1}(\theta^{T}x^{i}) ] + \frac{1}{2}\sum _{j=1}^{n}\theta_{j}^{2}                (公式 12.2)

1.1.4 假设函数变换

最后,将假设函数替换为了:h_{\theta}(X) = \left\{\begin{matrix} 1 & \theta^{T}X >= 0 \\ 0 & otherwise \end{matrix}\right.                   (公式 12.3)

结合(公式 12.2)(公式 12.3)便可得到SVM模型。

  1.2 最大间隔

图12-4 普通模型与SVM模型

回顾假设函数(公式 12.3),可知模式以\theta^{T}X  = 0 为决策边界,要求将样本正确划分到边界两侧。但满足该标准的决策边界可能有无数个,如在图12-4的二维数据为例,左侧黑线也满足此标准。

以决策边界为准,向两侧作不误分类的平行线,要求两平行线与原决策边界距离相等,在所有决策边界中SVM选择的是使得两平行线间距(margin)最大的的决策边界为最终模型,所以SVM也被称为最大间隔分类器。与平行线相接触的样本被称为支持向量(Support Vector )。

1.2.1 直觉上理解

回顾损失函数(公式 12.2),可知虽然假设函数以\theta^{T}X  = 0 为决策边界,但损失函数却有更加严格的标准即:样本为正类时\theta^{T}X >= 1才算分类正确;样本为负类时\theta^{T}X <= -1才算分类正确。假设将常数设置的很大 例如 10^10,则任意样本离决策边界较近都会产生较大的损失值,所以决策边界必须在正确分类的情况下还要离两侧的样本都保持一定的距离。

同时C的取值也不能过大,当C取值太大时则会对一些特例非常敏感,有时候样本并不能完全正确分类 或者可以牺牲一些训练的准确性来换取一个泛化能力更强的模型。

因为超参数C = \frac{1}{\lambda},所以当C较大时,相当于λ较小,容易导致过拟合,高方差;当C较小时,相当于λ较大,容易导致欠拟合,高偏差。

1.2.2 最大间隔的数学原理

图12-5 向量投影

首先需要了解一个前提知识:向量投影。任意一个N维向量可与N维空间中的一个点相对应,如图12-5中,向量\underset{V}{\rightarrow}可表示点(v_{1},v_{2})。已知图中有向量\underset{V}{\rightarrow}\underset{u}{\rightarrow}过点(v_{1},v_{2})作向量\underset{u}{\rightarrow}的垂线,垂点(p_{1},p_{2})其所代表的向量\underset{P}{\rightarrow}即为向量\underset{V}{\rightarrow}在向量\underset{u}{\rightarrow}方向的投影。且向量\underset{V}{\rightarrow}\underset{u}{\rightarrow}的内积

                       \underset{V}{\rightarrow}^{T} \underset{U}{\rightarrow} = \underset{U}{\rightarrow}^{T} \underset{V}{\rightarrow} = \underset{P}{\rightarrow} *\left \| U \right \| = \underset{P}{\rightarrow} * \sqrt{u^{2}_{1} + u^{2}_{2} }           (公式 12.4)

回顾损失函数(公式 12.2),当存在多个可正确划分样本的决策边界时,前面的损失项为0,此时损失函数如下:

                                J(\theta)^{'} = \frac{1}{2}\sum _{j=1}^{n}\theta_{j}^{2} = \frac{1}{2}\left \| \theta \right \| ^{2}                (公式 12.5)

此时最优化的目标即为最小化决策边界的参数向量\theta的模长,即最终找到的模型为能正确划分数据的模型中参数模长最小的,且同时还要求对于正类有\theta^{T}x^{i}  >= 1, 对于负类有 \theta^{T}x^{i} <=  -1。设样本在参数向量上的投影为\underset{P}{\rightarrow},可知最终模型满足如下条件:

                  \left\{\begin{matrix} min \frac{1}{2}\sum _{j=1}^{n}\theta_{j}^{2} =min \frac{1}{2}\left \| \theta \right \| ^{2}& \\ \vec{p} \frac{1}{2}\left \| \theta \right \| \geqslant 1& if y^{i} = 1\\ \vec{p} \frac{1}{2}\left \| \theta \right \| \leqslant -1& if y^{i} = 0 \end{matrix}\right.         (公式 12.6)

要使得两个不等式成立的情况下最小化参数向量的模长,其意味着要最大化样本在参数向量上投影的长度。已知参数向量与决策边界正交,因为任取决策边界上一点 X = (x_{1},x_{2}) 有 \theta ^{T}X = 0。所以样本在参数向量上投影的长度即为该样本与决策边界之间的距离,最大化样本在参数向量上投影的长度即为最大化样本与决策边界之间的间隔(也就是距离)。所以SVM也被称为最大间隔分类器。

图12-6 间距与模长

二, 核函数

当数据非线性可分时我们可改变决策边界的表达式,但在SVM中还有更好的方法---核函数。核函数可将已有的数据特征映射到更高维度的空间中,使得存在一个超平面能将样本进行划分。核函数的种类很多,这里介绍常用的高斯核函数。

2.1 高斯核函数

在N维空间中选定k个地标(landmarks) l^{1},l^{2},.....,l^{k},, 以各个样本与地标之间的距离为特征,可将原本的N维样本(x_{1},......,x_{N})映射为K维样本(f_{1},f_{2},......,f_{K}),具体有: 

                              f_i =simlilarity( x, l^{(i)} ) = e^{ -\frac{\left \| x - l^{ (i) } \right \|^{2} }{2\sigma ^2} }                (公式 12.7)

当样本x离地标 l^{i} 越近时特征 f^{i} 越趋近于1,反之越趋近与0。其中\sigma ^{2}用来控制特征(f_{1},f_{2},......,f_{K})(x_{1},......,x_{N})变化的速率,\sigma ^{2}越大变换速率越慢,\sigma ^{2}变换速率越快。这种映射函数就称为高斯核函数(Guassian  Kernel)。

如图12-7所示样例,假设现在有四个地标l^{1},l^{2},l^{3},l^{4},将原本的二维空间样本(x_{1},x_{2})可映射为四维空间样本(f_{1},f_{2},f_{3},f_{4})。决策边界为\theta_{0} + \theta_{1} f_{1}+ \theta_{2} f_{2}+ \theta_{3} f_{3}+ \theta_{4} f_{4} = 0

图12-7 高斯核函数

假设训练出结果为\theta_{0} =-0.5 ,\theta_{1}=1, \theta_{2} = 1, f_{3}= -2 ,\theta_{4} = 0。则表明当样本越解决地标l^{1},l^{2}时越可能是正类,越接近地标l^{3}时,越可能是负类,地标l^{4}对分类无影响,且远离这些地标时默认为负类。综上所述可得图中绿色的决策边界,边界以内为正类,边界以外为负类。于是乎通过从高斯核函数可得到如图中这般复杂的决策边界。

由上可知,地标的选择非常重要。这里介绍一种简单的选择方法,即在训练样本中每个原样本所在位置处复制出一个一模一样的地标。假设有m个实例,则会将原数据映射到m维空间中,最后通过训练可知一些特征所对应的参数θ较小甚至为0,表明其对分类不重要可删去。

同时超参数\sigma ^{2}也会对训练造成一定的麻烦,当\sigma ^{2}较大时,可能会导致低方差,高偏差;当\sigma ^{2}较小时,可能会导致低偏差,高方差。

2.2 其他核函数

除了高斯核函数以外还有一些其他的常用核函数,例如:

  • 线性核函数(Linear kernel),不使用任何核函数,用原数据特征线性核函数。
  • 多项式核函数(Polynomial Kernel),使用原特征之间的多项式组合为新特征。
  • 字符串核函数(String Kernel),常用于文本分类和信息检索等领域,以字符串的子串为特征。
  • 卡方核函数(Chi-square Kernel)
  • 直方图交集核函数(Histogram intersection Kernel)
  • etc......

三,SVM的使用建议

3.1 超参数

回顾上文,已知有2个超参数\sigma ^{2}C = \frac{1}{\lambda}会影响最终结果需要了解的是。

  • \sigma ^{2}较大时,可能会导致低方差,高偏差;当\sigma ^{2}较小时,可能会导致低偏差,高方差。
  • 当C较大时,相当于λ较小,容易导致过拟合,高方差;当C较小时,相当于λ较大,容易导致欠拟合,高偏差。

3.2 核函数的选择以及训练

假设特征数为n,样本数为m,则有以下的使用准则:

  1. 当n远大于m时,训练样本不足以训练出一个复杂的非线性模型,应当选择逻辑回归模型或者不带核函数的SVM。
  2. 当n较小,m大小中等时,如 n 在(1~1000)之间,m在(10~10000)之间,可使用高斯核函数的SVM。
  3. 当n较小,m较大时,如n 在(1~1000)之间,m大于50000时,训练SVM会非常慢,应当创造和增加样本特征,然后再使用逻辑回归模型或不带核函数的SVM。

在训练SVM时,最好选择合适的高级优化软件库而非自己实现,这时要求所选的核函数满足Mercer‘s定理才能被正确的优化。

还需要注意的一点是当使用核函数时,损失函数中的正则化项\frac{1}{2}\sum _{j=1}^{n}\theta_{j}^{2} = \frac{1}{2}\theta^{T}\theta需要修改为\frac{1}{2}\theta^{T}M\theta,其中M为根据具体核函数而定了一个矩阵,其原因是为了简化计算。

3.3 多分类问题

对于多分类问题,同样可以采取在介绍逻辑回归时所采用的训练出多个二分类模型的方法。假设一个有K个类,则训练出K个二分类SVM,一个对应一个类别即可。

同时也可直接采用有关SVM的软件包,其中有内置的多分类功能。

 

四,总结

本章主要讲解了SVM的相关知识具体有:

  • 利用熟知的逻辑回归模型逐步”演变 “出SVM模型。
  • 重点讲解了SVM具有最大化间隔的功能。
  • 讲解了利用高斯核函数将样本映射到高维空间的方法。
  • 讲解了有关SVM的一些使用技巧。
发布了18 篇原创文章 · 获赞 2 · 访问量 719

猜你喜欢

转载自blog.csdn.net/weixin_41542958/article/details/104331692
今日推荐