SVM是第一个开始深入学习并大部分理解的算法。趁着2018年的最后一天,抓紧时间,总结一下自己学到的东西,和大家分享一下!
参考资料:周志华老师的《机器学习》+李航老师的《统计学习方法》
SVM是一种监督学习的二分类算法。基本SVM可以用来解决样本空间中线性可分的问题。通过引入核函数,可以将在原始样本空间线性不可分的问题,转换成为在高维特征空间中线性可分的问题,进而得以解决。另外,针对那些在样本空间线性不可分,也未找到合适的核函数将其转换到线性可分的特征空间的问题,可以通过引入“软间隔”的思想来进行解决。
接下来,将从以下几个方面进行介绍:
线性可分:存在一个超平面,能够将不同类别的样本完全划分开
线性不可分:不存在一个超平面,将不同类别的样本完全划分开
硬间隔:存在一个超平面,能够将不同类别的样本完全划分开,将所有样本都划分正确
软间隔:对于划分超平面,不要求将所有样本划分正确,反而允许某些样本未被划分正确的思想,成为软间隔
给定训练样本集合。
支持向量机(Support Vector Machine, SVM)的基本思想就是:基于训练集在样本空间中找到一个 “最优”超平面,将不同类别的样本分开,使得训练集上正负样本的间隔最大。
图1.1 描述了多个分割超平面,这些超平面都可以将样本划分开,但是哪个才是最好的呢?最好的超平面需要满足的要求是:这个超平面产生的分类结果是最鲁棒的,对从未出现的样本的泛化能力最强。故而,图1.1中,红色的超平面应该是最优的超平面。
图1.1 多个分割超平面对数据集进行划分 |
接下来,我们从公式的推倒过程中探寻SVM的原理。
公式(1.1) |
其中,为法向量,决定了超平面的方向;为位移项,决定了超平面与原点之间的距离。超平面可以被唯一确定。
几何间隔:给定超平面,样本空间任意的点到该超平面的距离
公式(1.2) |
公式(1.3)给出了样本点到超平面的函数间隔:
公式(1.3) |
公式(1.4)给出了超平面关于训练集合的函数间隔,即:超平面关于中所有样本点的函数间隔的最小值。
公式(1.4) |
函数间隔可以表示分类的正确性和确信度。
反应了样本点到超平面的距离的远近;而的符号与 的符号是否一致则反应了预测是否正确。
假设超平面对样本能够分类正确,即对于,若,则有; 若,则有。可写成公式(1.5)。
公式(1.5) |
另外,公式(1.5)可以被简写为公式(1.6)。
公式(1.6) |
之所以在公式(1.5)和(1.6)的右侧使用1作为阈值,而不是其他的数值,是因为即便使用其他的数值,也可以通过约分化简为距离1。而公式(1.6)的左侧就是点到超平面的函数间隔的定义。
接下来,我们给出支持向量的定义。如图1.2所示,距离超平面最近的几个样本点,能够使得公式(1.5)和公式(1.6)等号成立。这些样本点被称为“支持向量”。
图1.2 支持向量与间隔 |
回顾前面介绍的函数距离的定义可知,支持向量代表对应的就是在不同类别的样本集合中具有最小函数距离的样本点。
两个异类支持向量到超平面的距离之和可表示为公式为(1.7),该公式被称为“距离”。
公式(1.7) |
至此,我们可以知道,SVM的目标就是找到具有“最大间隔”的划分超平面。
根据上面的推倒,可知SVM的目标函数可以写成公式(1.8),即求导满足公式(1.8)中约束的参数。
|
公式(1.8) |
由于在优化算法中,通常是对最小值进行求解。故而,我们可以将公式(1.8)转换成下列公式:
|
公式(1.8) |
到此,这就是SVM的基本算法原型。
由于该种情况要求样本集合线性可分,要求SVM能够找到一个超平面对所有的样本都划分正确,故而基本SVM也就是“硬间隔SVM”。
SVM的目标函数求解属于凸优化问题,我们可以利用拉格朗日乘子法进行求解。拉格朗日乘子法的详细介绍可以参考我的上一篇文章:《机器学习知识点总结 - 拉格朗日乘子法(Lagrange Multiplier Method)详解》。
(1)构造拉格朗日函数
公式(1.9) |
其中,, .
(2)令对和的偏导为零,可得:
公式(1.10) | |
公式(1.11) |
(3)将公式(1.10),带入公式(1.9),即可将中的和消去;再结合公式(1.11)中的约束,可以得到对偶问题。并可解得。
公式(1.12) |
可以利用SMO(序列最小化算法)对公式(1.12)中的未知变量进行求解。解出后,求出和即可得到SVM模型。
公式(1.13) |
在上节中,我们仅介绍了SVM如何对样本空间线性可分的情况进行超平面求解。但是在实际中,原始样本空间也许不存在一个能够正确划分样本的超平面,例如经典的”异或“问题,如图2.1左侧图所示。
对于这种问题,可以引入核函数,将样本从原始空间映射到一个更高维度的特征空间,使得样本在这个特征空间上线性可分。如下图所示。
图2.1 异或问题与非线性映射 |
如果样本的原始空间是有限维,那么一定会存在一个高维线性空间使得样本线性可分。
接下来,我们将首先进行入带核函数的SVM的推导,然后介绍一下核函数需要满足的条件及常用的核函数
首先,我们对带核函数的svm的表示进行推导。
|
公式(2.1) |
其中,是模型参数,分别代表法向量和位移项。
|
公式(2.2) |
公式(2.2) |
公式(2.2)中,涉及到计算,这是样本到特征空间的内积。由于特征空间维度可能很高,所以直接计算该内积是困难的。
为此,我们引出这样一个函数,该函数满足公式(2.3)所给的条件,即:我们可以通过直接求得样本点在特征空间的内积,进而降低计算难度。这个函数就是我们所说的核函数。
|
公式(2.3) |
这样,我们可以将公式(2.2)的对偶函数改写成:
公式(2.4) |
根据拉格朗日方程中对的偏导等于0,可以求出,并将其带入超平面的公式,可以得到目标函数的解。
公式(2.5) |
答:令为输入空间,是定义在上的对称函数,则当满足对任意数据集的”核矩阵“K都是半正定的,那么就可以作为一个核函数。其中,K的定义为:
公式(2.6) |
任何一个核函数都隐式的定义了一个成为”再生希尔伯特空间“的特征空间。
在前面的章节中,我们一直建立在训练样本在样本空间或特征空间中是线性可分的,即:存在一个超平面能够将不同类别的样本完全分开。但是,现实中,很难找到一个合适的核函数能够使得训练样本在特征空间中线性可分。
为此,我们引入了”软间隔“,即:允许支持向量机在一些样本上出错。换句话说,允许某些样本不满足公式(1.6)的约束条件: 。
所以,我们的目标函数应该是:最大化间隔的同时,使得不满足约束条件的样本尽可能的少。于是,优化目标可以写成:
公式(3.1) |
其中,是一个大于0的常数,是”0/1损失函数“
公式(3.2) |
于是,当C无穷大时,迫使全部样本均满足公式(1.6)的约束,即问题转变为”硬间隔“SVM;当C取有限值时,公式(3.2)允许一部分样本不满足公式(1.6)的约束条件。
由于是非凸,非连续的函数,数学性质不好。故而,常常用一些替代损失函数来替代它。比较常用的有:
Hinge损失 |
|
公式(3.3) |
指数损失 | 公式(3.4) | |
对率损失 | 公式(3.5) |
若采用hinge损失,则可将公式(3.1)重写成:
公式(3.6) |
引入松弛变量, 可将公式(3.6)重写成:
s.t.
|
公式(3.7) |
接下来,可以利用拉格朗日乘子法构造拉格朗日方程,进行求解。
公式(3.7)对应的拉格朗日方程为:
公式(3.8) |
其中拉格朗日乘子。
令对求偏导数,并令偏导数为0,可以得出:
公式(3.9) | |
公式(3.10) | |
公式(3.11) |
将公式(3.9 - 3.11)带入公式(3.8),可以得到对偶问题。然后利用SMO算法可以求解。
|
公式(3.12) |
回归问题就是基于模型输出与真实输出之间的差别来计算损失,当且仅当与之间完全相同时,损失才为0。
支持向量回归假设我们能容忍与之间最多有的偏差,于是,SVR可以形式化表示为:
公式(4.1) |
引入松弛变量和,可将式(4.1)重写为:
|
公式(4.2) |
类似的,可以利用拉个朗日乘子法构造拉格朗日函数,进行求解。在此不再赘述。