支持向量机(Support Vector Machines, SVM)被公认为比较优秀的分类模型,有很多人对SVM的基本原理做了阐述,我在学习的过程中也借鉴了他们的研究成果,在我的博客中只是想介绍基本的原理,用通俗易懂的方式把原理解释清楚,并期望通过MATLAB的代码实现这些基本的原理。由于SVM对数学理论的要求很高,并且SVM的形式也有多种,有不同的实现方式,在这个系列中我们重点关注以下几个方面:
在博文“简单易学的机器学习算法——Rosenblatt感知机”中介绍了Rosenblatt感知机的基本原理,Rosenblatt感知机是神经网络模型和支持向量机SVM的基础,但是Rosenblatt感知机只能处理线性可分的问题,神经网络和支持向量机的功能就更强大了,既能处理线性可分的问题,又能处理非线性可分的问题。
支持向量机SVM是定义在特征空间上的间隔最大的线性分类器,在Rosenblatt感知机中是通过计算分类误差求得分离超平面的,在SVM中则使用了间隔最大这样的特征。
SVM可以这样定义:对于数据集(无论线性可分还是非线性可分),通过间隔最大(处理线性可分与非线性可分略有不同)这样的优化问题求得分离超平面
这样就可以得到分类决策函数
其中,
为符号函数
针对不同的问题有不同的支持向量机,主要会有这样几种支持向量机
支持向量机有着强大的理论基础,在分析SVM算法的过程中需要使用到一些基本的概念,在这里罗列一下,主要有以下几个方面:
对于一个线性可分问题,如下图所示:
(线性可分)选自:http://www.cnblogs.com/liqizhou/archive/2012/05/11/2495537.html
分隔超平面上方的为正类,下方的为负类。一个点距离分离超平面的远近可以表示为分类预测的确信程度,如上图中的A,B和C三个正类,由于A离分离超平面较远,若预测A为正类,则比较确信预测是正确的;C离超平面较近,若预测其为正类就不那么确信。
对于数据集
和分离超平面
:
关于样本点
的函数间隔为
;
关于样本点
的函数间隔为
拉格朗日函数主要是用来处理带约束的优化问题。
假设
,
,
是定义在
上的连续可微函数,对于带约束的优化问题:
引进广义拉格朗日函数:
要求
的最小值:
,可以通过求解其对偶问题,即求解