1 前言
支持向量机(support vector machines,SVM)是我最早接触的有监督分类算法之一。早在 MIT 修统计学的时候,我用它做过一个旧金山湾区上班族通勤模式的分类研究,但当时只是很粗浅的认识。后来由于工作的关系又非常系统的学习了一下,这其中包括认真学习了斯坦福 Andrew Ng(吴恩达)的机器学习课(吴讲的真的非常好,深入浅出),参阅了大量的关于 SVM 的理论和实际应用的文献。
对于有监督分类算法的表现,业界常用大概 10 种不同的指标来评判,包括 Accuracy,LIFT,F-Score,ROC,Precision / Recall Break-Even Point,Root Mean Squared Error 等。无论以哪种准确性的评价指标来看,SVM 的效果都不输于人工神经网络 ANN 或者高级的集合算法如随机森林。SVM 的另一个特点是其自身可以在一定程度上防止过拟合,这对于其在量化投资上的应用格外重要。这是因为任何人工智能算法有效的前提是:历史样本和未来样本是来自同一个(未知)的整体,满足同分布。只有这样,基于历史样本学习出来的规律才会在未来继续有效。但是对于金融数据来说,这个假设在很多问题上无法满足。因此,如果机器学习算法在历史数据上过拟合的话,那么基本可以肯定这个模型对未来的数据毫无作用。
鉴于我对 SVM 的钟爱,我很早以前就打算写一篇介绍它的短文,作为对知识的一个梳理。不过后来,我读了一篇来自 quantstart.com 的文章,名为 Support Vector Machines: A Guide for Beginners。作者并没有使用大量的数学公式,而是用精炼的语言和恰如其分的图例对 SVM 的基本原理进行了阐述。平心而论,让我自己憋几天也不一定能写的比人家更清晰和生动,因此今天不如就索性把这篇文章大致翻译过来,作为对 SVM 的一个介绍。我会跳过一些不影响理解的文字、对原文的结构做一些改动,并在一些地方加入自己的理解(在第 7、8 节中,有一些该文没有的核心内容)。对那些阅读英语比阅读中文更舒服的小伙伴,也不妨看看原文https://www.quantstart.com/articles/Support-Vector-Machines-A-Guide-for-Beginners。
2 初识 SVM
支持向量机解决的是有监督的二元分类问题(supervised binary classification):
对于新的观测样本,我们希望根据它的属性,以及一系列已经分类好的历史样本,来将这个新样本分到两个不同的目标类中的某一类。
垃圾邮件识别就是这么一个例子:一个邮件要么属于垃圾邮件,要么属于非垃圾邮件。对于一封新邮件,我们希望机器学习算法自动对它分类。为此,我们首先通过人工对大量的历史邮件进行 spam 或 non-spam 标识,然后用这些标识后的历史邮件对机器学习算法进行训练。
在处理这类分类问题时,SVM 的作用对象是样本的特征空间(feature space),它是一个有限维度的向量空间,每个维度对应着样本的一个特征,而这些特征组合起来可以很好的描述被分类的样本。比如在上面的垃圾邮件识别例子中,一些可以有效辨别 spam 和 non-spam 邮件的词汇就构成了特征空间。
为了对新的样本分类,SVM 算法会根据历史数据在特征空间内构建一个超平面(hyperplane);它将特征空间线性分割为两个部分,对应着分类问题的两类,分别位于超平面的两侧。构建超平面的过程就是模型训练过程。对于一个给定的新样本,根据它的特征值,它会被放在超平面两侧中的某一侧,这便完成了分类。不难看出,SVM 是一个非概率的线性分类器。这是因为 SVM 模型回答的是非此即彼的问题,新样本会被确定的分到两类中的某一类。
在数学上表达上,每一个历史样本点由一个 (x, y) 元组表示,其中粗体的 x 是特征向量,即 x = (x_1, …, x_p),其中每一个 x_j 代表样本的一个特征,而 y 代表该样本的已知分类(通常用 +1 和 -1 表示两个不同的类)。SVM 会根据这些给定的历史数据来训练算法的参数,找到最优的线性超平面。理想情况下,这个超平面可以将两类样本点完美的分开(即没有错分的情况)。对于给定的训练数据,可以将它们完美分开的超平面很可能不是唯一的,比如一个超平面稍微旋转一个角度便得到一个仍然能够完美分割的超平面。在众多的能够实现分类的超平面中,只有一个是最优的。我们会在下文介绍这个“最优”的定义。
在实际应用中,很多数据并非是线性可分的。SVM 的强大之处在于它不仅仅局限于是一个高维空间的线性分类器。它通过非线性的核函数(kernel functions)把原始的特征空间映射到更高维的特征空间(可以是无限维的),在高维空间中再将这些样本点线性分割。高维空间的线性分割对应着原始特征空间的非线性分割,因此在原始特征空间中生成了非线性的决策边界。此外&