Content 8. Support Vector Machines(SVMs) 8.1 Optimization Objection 8.2 Large margin intuition 8.3 Mathematics Behind Large Margin Classification 8.4 Kernels 8.5 Using a SVM 8.5.1 Multi-class Classification 8.5.2 Logistic Regression vs. SVMs
支持向量机(Support Vector Machine: SVM)是一种非常有用的监督式机器学习算法。首先回顾一下Logistic回归,根据log()函数以及Sigmoid函数的性质,有:
同时,Logistic回归的代价函数(未正则化)如下:
为得到SVM的代价函数,我们作如下修改:
因此,对比Logistic的优化目标
SVM的优化目标如下:
注1:事实上,上述公式中的Cost0与Cost1函数是一种称为hinge损失的替代损失(surrogate loss)函数,其他常见的替代损失函数有指数损失和对率损失,具体参见《机器学习》P129 周志华)
注2:注意参数C和λ的对应关系: C与(1 / λ)成正相关。
根据8.1中的代价函数,为使代价函数最小,有如下结论:
现假设C很大(如C=100000),为使代价函数最小,我们希望
所以代价函数就变为:
所以问题就变成:
该问题最后的优化结果是找到具有"最大间隔"(maximum margin)的划分超平面,所以支持向量机又称大间距分类器(large margin classifier)。那么什么是间隔? 为什么这样优化就可以找到最大间隔?首先,我们通过图8-1所示的二维的0/1线性分类情况来直观感受。
图8-1 SVM Decision Boundary: Linearly separable case
直观上,应该去找位于两类训练样本"正中间"的划分超平面,即图8-1的黑色直线(二维),因为该划分超平面对训练样本局部扰动的"容忍"性最好。例如,图中的粉色和绿色直线,一旦输入数据稍有变化,将会得到错误的预测。换言之,这个划分超平面所产生的分类结果是最鲁棒的,对要预测数据集的泛化能力最强。而两条蓝色直线之间的距离就称为间隔(margin)。下一节将从数学角度来解释间隔与最大间隔的优化原理。
首先介绍一些数学知识。
上述的讨论都是基于线性可分的样本,即存在一个划分超平面可以将训练样本正确分类,然而现实世界存在大量复杂的,非线性分类问题(如4.4.2节的异或/同或问题)。Logistic回归处理非线性问题可以通过引入多项式特征量作为新的特征量;神经网络通过引入隐藏层,逐层进化解决非线性分类问题;而SVM是通过引入核函数(kernel function)来解决非线性问题。具体做法如下:
对于第二个问题,常用的核函数有线性核,高斯核,多项式核,Sigmoid核,拉普拉斯核等,现以常用的高斯核(Gaussian)为例。
高斯核具有如下性质:
下面对SVM的参数对偏差和方差的影响做简要分析:
上文简单的介绍了SVM的优化原理以及核函数的使用方式。在实际应用SVM中,我们不需要自己去实现SVM的训练算法来得到参数
通常是使用现有的软件包(如liblinear, libsvm)。
但是下面的工作是我们需要做的:
下面是需要注意的地方:
参考:《机器学习》 周志华