学习记录SVM的原理和过程,但是本人是工程人员,并不深入探讨。
前言
SVM(Support Vector Machine),即支持向量机,是以统计学习理论为基础的机器学习方法,在介绍SVM之前先需要了解统计学习理论的内容。
统计学习理论
统计学习理论是在样本数较小的前提下研究机器学习的规律,机器学习的目标就是对若干个独立同分布的训练样本能够找到一个最优的函数,使得学习的期望风险达到最小。实际中一般选择经验风险作为预期风险的近视估计,当训练样本集越大时,经验风险更加接近于期望风险——经验风险最小化准则(ERM)。
VC维
为了考察机器学习的性能,研究学习过程的一致性收敛速度和推广性要求,统计学习理论定义了VC这一概念:对于一个特定的指示函数(只有0和1两种取值的函数)集,当能够用h个样本点将其分为2^h中形式,即函数集打散了这h个样本点,那么符合能够被打散的h的最大值便是VC维。
VC维不仅能反映函数集的学习能力,而且衡量了学习机器的复杂性。VC维越高,学习机器越复杂。
结构风险最小化
统计学习理论中用经验风险无线逼近真实风险时,有一个理论上的缺陷便是经验风险具有不可推导性,无法准确表示估计的精度。因此定义了置信范围来反映经验风险和真实风险的上界。
真实风险 <= 经验风险 + 置信范围
经验风险 + 置信范围就称为结构风险,结构风险最小化原则(Structural Risk Minimization,SRM)被提出:
- 求解每个子集的经验风险最小值,然后选择使结构风险最小的函数子集;
- 首先使得每个子集都能取得最小经验风险值,在在其中选择某些自己使得置信范围最小,此时得到的就是最优函数;
SVM
SVM是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。SVM的核心内容是结构风险最小化原理,并且通过控制经验风险和置信范围值这两个因素不同比例之间来提高学习机器整体的泛化能力。如下图所示,SVM的基本思想是将那些在低维空间无法分类的样本通过一个非线性变换映射到高维的特征空间,在高维空间中样本变为线性可分的,此时构建一个作为分类的超平面,使得所分类样本之间的间隔达到最大。SVM细分种类有两种:支持向量分类机(Support Vector Classification,SVC)和支持向量回归机(Support Vector Regression,SVR)。
支持向量分类机
在低维空间讨论分类问题,当样本线性可分时,可以求出超平面的表达式。当低维空间中样本线性不可分时,通过引入一个非线性函数将样本映射到高维空间,然后在高维空间构造一个分类面。为了求解超平面,通过引入拉格朗日乘子将问题转化为对偶问题,之后可以求解目标函数的最大值。最终超平面可以表示为:
其中,k(x,xi)为核函数,x为输入变量,b为偏置。因此SVM由训练样本以及核函数共同确定。
支持向量回归机
回归机的基本思想和分类机思想一致,关键是引进核函数把问题转化为高维空间中的线性回归问题。
核函数
对于SVM核函数的选择至关重要,这里介绍下主要的核函数:
- 线性核函数
K(xi,yi) = (xi.xj)
主要用于线性可分的情况,可以看到特征空间到输入空间的维度是一样的。
- 多项式核函数
多项式核函数属于全局核函数,局部性差,相距很远的样本点也能对分类器产生影响。d代表了核函数维度,当d增大时计算复杂度增大。容易产生过拟合现象。
- 高斯(RBF)核函数:
高斯核函数是局部性强的核函数,应用最广,参数少,当不知道用什么核函数时,优先采用高斯核函数。
采用sigmoid核函数,支持向量机实现的就是一种多层神经网络,该核函数具有良好的全局收敛性。
理解SVM
本人是工程人员,可能会用到SVM,因此对它学习,并不进行学术研究,对于SVM只理解到浅显的地步,更具体可以参考:
http://blog.csdn.net/v_july_v/article/details/7624837
最大分类间隔
用图说明什么是最大分类间隔:
分类的目标就是找到最优超平面,使得数据到最优超平面的距离最大化,这个距离就是最大分类间隔。在上图中,加黑的4个元素决定了最优超平面的位置,它们被称为支持向量。如何找到这个最优超平面呢?
为了简化问题,这里在线性可分的情况下讨论。如图所示,假设中间的蓝 {MOD}实线为最终的最优超平面,可以看出左边的样本点在直线OAB上的投影始终小于右边样本点在直线OAB上的投影。样本点C在直线OAB上的投影可以表示为:
这样总能找到一个常数C,区分左右两类样本,最后可以求出超平面的方程:
但是这里求得的超平面只是区分了两类,如何使类间分隔最大呢?样本点到超平面的距离就是2除以||w||,最终的目标是: