支持向量机是(Support Vector Machine)是基于统计学习理论(Statistical Learning Theory, SLT)发展起来的一种新的机器学习的方法。
1963年,Vapnik在解决模式识别问题时提出了支持向量方法,这种方法从训练集中选择一组特征子集,使得对特征子集的划分等价于对整个数据集的划分,这组特征子集就被称为支持向量(SV),支持向量也就是距离分离面最近的那些点。
一个分类问题的分类平面可能有很多个,那么如何找到那个最优的分类平面?怎样的算最优的分类。
最优分类面考虑不但能将两类正确分开,且分类间隔最大,SVM考虑寻找一个满足分类要求的超平面,并且使训练集中的点距离分类面尽可能的远,也就是寻找一个分类面使它两侧的空白区域最大。
如下图中,右边的分类平面就优于左边的,右图的间隔比较大,左边图中,如果有类别2的右边的点有一点扰动,容易分类到第1类中,造成误判,而右图则相对不会出现这样的问题,可以看出大间隔是有用的。
寻找间隔最大的超平面的公式推导过程如下:
对于给定的训练数据集和超平面(w,b),定义超平面(w,b)关于样本点 ( x i , y i ) (x~i, y~i) (x i,y i)的几何间隔是, y i y~i y i是类标记,为±1。
寻找最大间隔分离超平面也就是要找到参数w、b,使得最大化 γ i γ~i~ γ i ,
同时有一个约束条件是,所有的点和超平面的距离要大于或等于γ,即为一个约束优化问题
由于γ的取值不影响最优化问题的解,可以将w和b设置为λw和λb,对应得γ变成λγ,我们不妨设γ为1,则问题变成最大化 1 / ∣ ∣ w ∣ ∣ 1/||w|| 1/∣∣w∣∣,由于最大化 1 / ∣ ∣ w ∣ ∣ 1/||w|| 1/∣∣w∣∣和最小化 1 / ∣ ∣ 2 w 2 ∣ ∣ 1/||2w^2 || 1/∣∣2w2∣∣是等价的,所以问题变成了
这是一个二次优化问题,采用拉格朗日乘子法,对每个样本引入拉格朗日系数 α i α~i α i, α i α~i α i乘以约束条件,得到如下的拉格朗日函数
原始问题的变成求 L ( w , b , α ) L(w,b,α) L(w,b,α)对w,b的极小值,对α求极大值。
L ( w , b , α ) L(w,b,α) L(w,b,α)分别对w和b求偏导,且令偏导等于0。
得出w的值,
再代入原 L ( w , b , α ) L(w,b,α) L(w,b,α),可以得出下式
现在需要求出使得上式最大得α,即
约束条件是
求得的α可以再代入下式求出w和b,
其中w由前面求导得出公式,
b值得求解是由于对于支持向量,有
因此可以得出b的值
分离超平面是
求解的分类器是,其中sgn是符号函数,输入大于0时输出为1,小于0为-1。
以上便是求出间隔最大的超平面的过程,总结起来是求解一个约束最优问题。
由于最优超平面得解完全由支持向量决定,这种方法被称为支持向量机。
对于非线性可分的数据样本,可能通过适当的函数变换,将其在高维空间中转化为线性可分。下图中,在1维是不可分,变换2维线性可分了。
因此,针对非线性的问题,解决办法是输入空间通过非线性变化到特征空间,在特征空间用线性分类求解。利用一个固定的非线性映射将数据映射到特征空间学习的线性分类器等价于基于原始数据学习的非线性分类器。
那么问题成了用什么样的非线性变换。
非线性变换有很多种,这里采用了核函数,核函数在特征空间中直接计算数据映射后的内积就像在原始输入数据的函数中计算一样,大大简化了计算过程
在进行变换后,无论变换的具体形式如何,变换对支持向量的影响是把两个样本在原特征空间中的内积变成了在新特征空间中的内积,新空间中的内积页是原特征的函数,可记作
K ( x i , x j ) K(x~i~, x~j~) K(x i ,x j )被称作核函数,
变换空间的支持向量机可写为,就是把之前线性SVM决策函数中的 ( x i , x j ) (x~i, x~j) (x i,x j)换成了核函数,
其中α和b的求解过程也是和线性SVM中一样的方式。
分析可得,只要知道核函数,没有必要知道非线性变换得实际形式,因此可以直接设计核函数而不用设计非线性变换。
支持向量机的基本思想:
1)通过非线性变换将输入空间变换到一个高维空间
2)在这个新空间中求最优分类面即最大间隔分类面
非线性变换通过定义适当的内积核函数实现。