前言:SVM是一类比较复杂的分类器,也是目前诸多分类器中,分类效果最好的几个之一,这篇博客简要的介绍了SVM分类,并把重点都记录了下来,适合那些有一点机器学习基础,想把SVM的知识整理到脑中的知识网络中的人,文章大量参考了《统计学习方法》和macyang的博客。
SVM简介
支持向量机(suport vector machine,SVM)是90年代中期发展起来的基于统计学习理论的一种机器学习方法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的。 通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
支持向量机学习方法包含构建有简至繁的模型:线性可分支持向量机、线性支持向量机及非线性支持向量机。简单模型是复杂模型的基础,也是复杂模型的特殊情况:
当数据线性可分时,通过硬间隔最大化,学习一个线性的分类器,即线性可分支持向量机:
当数据近似线性可分时,通过软间隔最大化,学习一个线性的分类器,即线性支持向量机:
当数据线性不可分时,通过使用核函数和软间隔最大化,学习非线性支持向量机。
全文将按照上述思路介绍3类支持向量机、核函数及一种快速学习算法——序列最小最优算法(SMO)
要点
支持向量机(SVM)
本质:二分类模型
优点:在统计样本量较少的情况下,亦能获得良好统计规律
模型:特征空间上间隔最大的线性分类器
学习策略:间隔最大化
算法:凸二次规划问题求解
分类:线性可分支持向量机、线性支持向量机及非线性支持向量机
线性可分支持向量机
假设一个特征空间上的训练数据集
其中,xi∈Χ∈Rn,yi∈{+1,-1},i=1,2,3…,N
假设该训练集线性可分且通过训练得到的超平面为wx+b = 0,其中w,x均为向量。则函数间隔的定义为:yi(wxi+b)
函数间隔可以表示分类预测的正确性和确信度。但是选择分类超平面时,只有函数间隔还不够,因为只要成比例地改变w和b,例如将它们改成2w和2b,超平面并没有改变,但函数间隔却变为了原来的两倍。故定义 几何间隔为:yi(wxi+b) /||w||。
所以可得约束最优化问题
(w,b) = argmax(min(yi(wxi+b) /||w||))
即找到使得最小几何间隔最大的w和b。
或者表示成如下式子
其中1是函数间隔的取值。事实上,间隔函数的改变对最优化不等式没有影响,对目标函数的优化也没有影响。
学习的对偶算法
关于拉格朗日函数和KKT详见此链接
根据约束最优化问题可构建拉格朗日函数,即将问题转化为求解拉格朗日函数的极大极小值问题
先求拉格朗日函数的极小值,分别对w,b求偏导,并令其等于0。
将结果代入拉格朗日函数中,得
再求其极大值,即
到此对SVM算法的求解仍然十分复杂,故不得不提出更高效的优化算法SMO。
序列最小优化算法SMO
SMO算法相当复杂,推到过程也较难理解,详情请看链接
SVM核函数
请看链接