支持向量机(SVM)

文章目录

  • 算法简介
  • 算法思想及公式推导
    • 线性可分的SVM
      • 什么是线性可分?
      • 什么是线性模型
      • 线性可分SVM核心思想
    • 线性不可分的SVM
      • 核函数
    • 软间隔与正则化
    • 化为对偶问题求解
    • SVM算法的流程总结

算法简介

支持向量机(SVM)是种二类分类模型。 它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机:支持向量机还包括核技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题。支持向量机的学习算法是求解凸二次规划的最优化算法。
支持向量机学习方法包含构建由简至繁的模型:线性可分支持向量机以及非线性可分支持向量机。简单模型是复杂模型的基础,也是复杂模型的特殊情况。当训练数据线性可分时,通过硬间隔最大化,学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机。当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

算法思想及公式推导

线性可分的SVM

什么是线性可分?

对于二维空间来说,我们可以找到一条线,将两个不同类别的样本划分开来,我们就说这个样本集是线性可分的,如下图所示。
支持向量机(SVM)_第1张图片
相反,如果这些样本混在一起,我们找不到这样一条线将两个不同类别的样本划分开来,我们就说这个样本集是线性不可分的。

什么是线性模型

在机器学习的过程中,我们需要找到这样一种线性模型,帮我们把不同类别的样本分离开来。显然,在上面的例子中,我们的线性模型就是将两个不同类别的样本划分开来的那条线。
但这只是在二维空间中的情况,如果在三维空间中呢?显然,我们可以找一个面将不同类别的样本划分开来。那如果在四维空间中,五维空间中呢?我们想象不出来,因为人类是三维的生物,我们无法想象出更高维空间的样子。但是我们可以通过数学的方法将其推导出来,这就是数学的魅力所在。
在数学中,我们将超过三维的曲面统称为超平面,超平面的公式为:
支持向量机(SVM)_第2张图片
总而言之,SVM算法的目的就是找到这样一个超平面wx+b=0,使得在超平面上方的点x代入函数y=wT x+b,y全部大于0,在超平面下方的点x代入函数y=wx+b,y全部小于0。
现在,我们用纯数学的方式将上面所讲的内容表示出来:
支持向量机(SVM)_第3张图片

线性可分SVM核心思想

SVM所做的工作就是找这样个超平面,能够将两个不同类别的样本划分开来,问题是这种平面是不唯一的,即可能存在无数个超平面都可以将两种样本分开,那么我们如何才能确定一个分类效果最好的超平面呢?
Vapnik提出了一种方法,对每一种可能的超平面,我们将它进行平移,直到它与空间中的样本向量相交。我们称这两个向量为支持向量,之后我们计算支持向量到该超平面的距离d,分类效果最好的超平面应该使d最大。
支持向量机(SVM)_第4张图片
那么这个d要如何求呢?我们可以借助点到面的距离公式进行计算。
为了方便计算,我们找一个实数a对(w,b)进行放缩,
支持向量机(SVM)_第5张图片
至此,我们SVM求解的目标从最大化距离d成功转化成了:
最小化: 1/2||w||2
限制条件:s.t. yi(wTxi+b)>=1, i=1,2,…,m
这就是支持向量机的基本模型

线性不可分的SVM

然而,上面的方法只适用于线性可分的情况。对于线性不可分的数据集,我们无法找到这样一种直线,将不同类型的样本分割开来,SVM的方法好像就不适用了。
但是Vapnik提出了一种观点,我们所认为的线性不可分,只是在当前维度下线性不可分,别不代表它在高维空间中线性不可分。比如有一组样本在二维空间线性不可分,但是在三维空间中,我们是有可能找到这样一条直线将其分隔开来的,Vapnik还认为,当维数趋于无穷时,一定存在这样一条线,可以将不同类型的样本分割开来。
然而,理论是美好的,现实是残酷的。摆在我们面前的一个十分困难的问题就是:我们无法处理无限维的向量!!!好在,天才的数学家们提出了核技巧(核函数),可以帮助我们解决这个问题。

核函数

xi和xj在特征空间中的内积等于他们在原始样本空间中通过和函数K() 计算的结果,有了这样的函数,我们就不必直接去计算高维甚至无限维特征空间中的内积。
支持向量机(SVM)_第6张图片
能使用核函数的充要条件如下:
支持向量机(SVM)_第7张图片
常见的和核函数有高斯核、拉普拉斯核、多项式核等。
支持向量机(SVM)_第8张图片
值得一提的是,我们希望样本在特征空间内线性可分,因此特征空间的好坏对支持向量机的性能至关重要,需要注意的是,在不知道特征映射的形式时,我们并不知道什么样的核函数是合适的,而核函数也仅是隐式的定义了这个特征空间。于是,核函数的选择就成为了SVM最大的变数,如果核函数选择的不合适,则意味着将样本映射到了一个不合适的特征空间,很可能导致性能不佳。

软间隔与正则化

在前面的讨论中我们提到,在现实任务中往往很难确定合适的核函数使得训练样本在特征空间中线性可分。此外,即便恰好找到了某个核函数使训练集在特征空间中线性可分,也很难断定这个貌似线性可分的结果是不是由于过拟合所造成的。缓解这一问题的办法是使用软间隔的方法,即我们允许最终找到的超平面发生少量的分类错误,只要它能够保证将大多数样本分类正确就可以了。
回顾我们之前得到的SVM模型,我们的限制条件是yi(wTxi+b)>=1
至此,我们SVM求解的目标从最大化距离d成功转化成了:
最小化: 1/2||w||2
限制条件:s.t. yi(wTxi+b)>=1, i=1,2,…,m
这就是支持向量机的基本模型

现在,因为我们允许最终找到的超平面发生少量的分类错误,所以我们可以将限制条件适当放宽,经过改进后的软间隔SVM模型如下:
支持向量机(SVM)_第9张图片
我们加入一个正则项,正则项由惩罚系数C和松弛变量组成。其中,惩罚系数C是一个超参数,是由我们自己设置的。每个样本都有一个对应的松弛变量,用来表征该样本不满足约束的程度。
注意到,使用软间隔的SVM问题是一个凸二次规划问题,我们可以使用拉格朗日乘子法得到其对偶问题然后求解。

化为对偶问题求解

关于原问题和对偶问题相关的知识,可以去看另一篇文章,这里不再详细展开。原问题与对偶问题
支持向量机(SVM)_第10张图片
至此,SVM模型成功推导出来了,我们可以使用SMO算法对该问题进行求解,由于篇幅关系,这里就不再讲解SMO算法是如何做的了。

SVM算法的流程总结

支持向量机(SVM)_第11张图片

你可能感兴趣的:(机器学习,算法)