学习July博文总结——支持向量机(SVM)的深入理解(下)

时间:2022-04-21
本文章向大家介绍学习July博文总结——支持向量机(SVM)的深入理解(下),主要内容包括三、证明SVM、2. 非线性学习器、3. 损失函数、4. 最小二乘法、5. SMO算法、四、后记、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

接上篇博文《学习July博文总结——支持向量机(SVM)的深入理解(上) 》

三、证明SVM

凡是涉及到要证明的内容和理论,一般都不是怎么好惹的东西。绝大部分时候,看懂一个东西不难,但证明一个东西则需要点数学功底;进一步,证明一个东西也不是特别难,难的是从零开始发明创造这个东西的时候,则显艰难。因为任何时代,大部分人的研究所得都不过是基于前人的研究成果,前人所做的是开创性工作,而这往往是最艰难最有价值的,他们被称为真正的先驱。牛顿也曾说过,他不过是站在巨人的肩上。你,我则更是如此。正如陈希孺院士在他的著作《数理统计学简史》的第4章、最小二乘法中所讲:在科研上诸多观念的革新和突破是有着很多的不易的,或许某个定理在某个时期由某个人点破了,现在的我们看来一切都是理所当然,但在一切没有发现之前,可能许许多多的顶级学者毕其功于一役,耗尽一生,努力了几十年最终也是无功而返。 话休絮烦,要证明一个东西先要弄清楚它的根基在哪,就是明白构成它的基础是哪些理论。以下内容基本是上文中未讲到的一些定理的证明,包括其背后的逻辑、来源背景等内容。

1. 线性学习器

感知机算法

感知机算法是1956年提出的,年代久远,依然影响着当今,当然,可以肯定的是,此算法亦非最优,后续会有更详尽阐述。 不过有一点必须清楚,这个算法的作用很简单:不断的训练试错,以期寻找一个合适的超平面。 感知机算法的伪代码如下所示:

下面举个例子:

图3.1 感知机算法示例 如上图3.1所示,凭我们的直觉可以看出,图中的红线是最优超平面,蓝线则是根据感知机算法在不断的训练中,最终,若蓝线能通过不断的训练移动到红线位置上,则代表训练成功。

既然需要通过不断的训练以让蓝线最终成为最优分类超平面,那么,到底需要训练多少次呢?这个问题可以用Novikoff定理解释。

Novikoff定理告诉我们当间隔是正的时候感知机算法会在有限次数的迭代中收敛,也就是说Novikoff定理证明了感知机算法的收敛性,即能得到一个界,不至于无穷循环下去。 后续怎么推导出最大分类间隔请回到本文第一、二章,此处不重复。

同时有一点得注意:感知机算法虽然可以通过简单迭代对线性可分数据生成正确分类的超平面,但不是最优效果,那怎样才能得到最优效果呢,就是上文中第一部分所讲的寻找最大分类间隔超平面。此外,Novikoff定理的证明请见这里。

2. 非线性学习器

Mercer定理

半正定矩阵的概念与正定矩阵比较相似:

Mercer定理的证明在下面的网址中可以查询: http://ftp136343.host106.web522.com/a/biancheng/matlab/2013/0120/648.html

3. 损失函数

支持向量机(SVM)是90年代中期发展起来的基于统计学习理论的一种机器学习方法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的。

可能很多人并不了解结构化风险、经验风险是什么,要了解这两种风险,还得从监督学习说起。

(1) 常用损失函数

Screenshot (12).png

(2) 经验风险与结构风险

然而当样本容量很小时,经验风险最小化的策略容易产生过拟合现象。

结构风险最小化可以防止过拟合。结构风险实在经验风险的基础上,加上表示模型复杂度的惩罚项,结构风险的定义如下:

这样监督学习问题就变成了经验风险或结构风险函数的最优化问题,如式(3.3.4)与(3.3.5)。 于是,SVM也有了第二种理解,即最优化+损失最小。如果从损失函数和优化算法角度看SVM, boosting, LR等算法,可能会有不同收获。

4. 最小二乘法

(1) 最小二乘法的说明

下面引用《正态分布的前世今生》里的内容稍微简单阐述一下最小二乘法。 我们口头中经常说:一般来说,平均来说。如平均来说,不吸烟的健康优于吸烟者,之所以要加“平均”二字,是因为凡事皆有例外,总存在某个特别的人他吸烟但由于经常锻炼所以他的健康状况可能会优于他身边不吸烟的朋友。而最小二乘法的一个最简单的例子便是算术平均。 最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。用函数表示为下式:

误差可以被定义为预测值与实际真实值的差量,所以最小二乘法就是使误差平方和达到最小,以寻求估计值的方法。用最小二乘法得到的估计,就叫做最小二乘估计。当然,取平方和作为目标函数只是众多可取的方法之一。 最小二乘法的一般形式,可以表示成下式:

最小二乘法的优点如下:

  • 最小二乘使得误差平方和最小,并在各个方程的误差之间建立了一种平衡,从而防止某一个极端误差取得支配地位;
  • 计算中只要求偏导后求解线性方程组,计算过程明确便捷;
  • 最小二乘可以导出算术平均值作为估计值;

对于上面的最后一点,从统计学角度来看,是很重要的一个性质。推理如下:

由于算术平均是一个历经考验的方法,而以上的推理说明,算术平均是最小二乘的一个特例,所以从另一个角度说明了最小二乘方法的优良性,使我们对最小二乘法更加有信心。 最小二乘法发表之后很快得到了大家的认可接受,并迅速的在数据分析实践中被广泛使用。不过历史上又有人把最小二乘法的发明归功于高斯,这又是怎么一回事呢。高斯在1809年也发表了最小二乘法,并且声称自己已经使用这个方法多年。高斯发明了小行星定位的数学方法,并在数据分析中使用最小二乘方法进行计算,准确的预测了谷神星的位置。 说了这么多,貌似跟本文主题SVM没有关系。后文会将最小二乘法与SVM联系在一起。本质上说,最小二乘法即是一种参数估计方法,说到参数估计,咱们得从一元线性模型说起。

(2) 最小二乘法的解法

什么是一元线性模型呢? 这里引用一元线性模型的一篇博客,来梳理下几个基本概念: 参考地址:《一元线性回归模型与最小二乘法及其C++实现 》

  • 监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等);如果预测的变量是连续的,我们称其为回归
  • 回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析;
  • 如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。
  • 对于二维空间线性是一条直线;对于三维空间线性是一个平面,对于多维空间线性是一个超平面;

选择最佳拟合曲线的标准可以确定为:使总的拟合误差(即总残差)达到最小。有以下三个标准可以选择:

  • 用“残差和最小”确定直线位置是一个途径。但很快发现计算“残差和”存在相互抵消的问题;
  • 用“残差绝对值和最小”确定直线位置也是一个途径,但绝对值的计算比较麻烦;
  • 最小二乘法的原则是以“残差平方和最小”确定直线位置,用最小二乘法除了计算比较方便外,得到的估计量还具有优良特性。这种方法对异常值非常敏感。

最常用的是普通最小二乘法(Ordinary Least Square, OLS):所选择的回归模型应该使所有观察值的残差平方和达到最小,即采用平方损失函数。 我们定义样本回归模型为:

这就是最小二乘法的解法,求得平方损失函数的极值点。 自此,你看到求解最小二乘法与求解SVM问题何等相似,尤其是定义损失函数,而后通过偏导求得极值。

5. SMO算法

上文中,我们提到了求解对偶问题的序列最小最优化算法SMO算法,但并未提到其具体解法。 首先回到之前没有解决的问题,即式(2.3.5):

下面介绍上式(3.5.1)的推导过程。

(1) SMO算法的推导

推导SMO算法之前,我们首先定义特征到结果的输出函数如下:

将上式(3.5.4)代入到(3.5.2)中,得到:

按照前文第二章第3节,加入松弛变量后,模型修改成式(2.3.3):

对于上式(3.5.9)的解释如下:

如下图3.2所示:

四、后记

终于把SVM的理论用Markdown写了下来,敲了28000+个字,还要在July大神的内容基础上加入自己的简介,简直费心费力…… 但是总算是把SVM的理论第二遍的顺了下来。 July大神说,SVM的理论至少要看好几遍,才能对整套理论有一个系统的理解。现在虽然笔者第二遍顺了下来,其实离实际运用还有很远,还有待提升。 本文把July大神的文章重头编辑了一遍,一方面加深了笔者自己的理论理解,另一方面,有些地方可能July大神也没有讲的很清楚,笔者对其进行了一定的进一步讲解,也希望自己的见解可以和读者们分享(如果真有人读到这里的话),并对读者们起到一定的作用。