本文共 1208 字,大约阅读时间需要 4 分钟。
支持向量机(support vector machine,SVM)是一种二类的分类模型,它的基本模型是:特征空间中间隔最大的线性分类器。间隔最大使其有别于感知机算法,感知机算法是对线性可分问题进行二分类的算法,它是要满足能将其分开即可,因此SVM与感知机的区别在于间隔最大这一特点。如下图所示:
来源:机器学习
从上图中可以看到,有许多的线段都可以将正负样本分开,而感知机可以从这些线中选择任意的一个,因此感知机的解是不唯一的,而SVM是寻找最大间隔的超平面,因此它的解是唯一的。关于感知机可以参考:
支持向量机包含着由简单到复杂的过程,其可以分为:
1. 线性可分的支持向量机
当数据线性可分时,通过硬间隔最大化(hard margin maximization),学习到一个线性的分类器,其有称为硬间隔支持向量机。2. 线性支持向量机
当训练样本近似的线性可分时,通过软间隔最大化(soft margin maximization),其学习的仍然是一个线性的分类器,其又可称为软间隔支持向量机。3. 非线性支持向量机
当训练样本线性不可分的时候,可以通过核技巧(kernel method)及软间隔最大化,学习非线性的支持向量机。下面对其分别介绍。
首先要明确,我们的目标,当给定的数据线性可分时,通过间隔最大等价的求解响应的凸二次规划问题学习得到的分离超平面:
当w*x+b>0
时属于正样本,否则为负样本。
所谓的间隔最大化是对于几何间隔的最大化,在选择分离超平面是,函数间隔会随着w,b的比例变换而变化,因此选择几何间隔。
另一种最优化的推导方式如下图所示:
引用机器学习中的一张图进行总结:
其中,虚线上的点在确定分离超平面中起着决定性的作用,它们被称为支持向量,所以讲这种分离模型称为支持向量机。支持向量的个数一般很少,所以支持向量机有很少的“重要的”训练要本确定。
从上面的过程中,我们可以得到对于原始问题的优化问题:
在上述的原始问题中,其实已经可以解决线性可分的问题了,因为上面的优化问题是一个凸二次规划问题,可以用现成的优化工具求解,那么为什么还需要对偶问题呢? 其优点有两点:
1.对偶问题往往更易求解,效率更高
2.这样可以很自然的引入核函数,进而推广到非线性分类问题
关于拉格朗日对偶函数的基本知识
因此对原始问题构建拉格朗日函数为:
因此原始问题的对偶问题就变成了:
对对偶问题的求解过程如下:
因此得到对偶形式的最优化算法:
来源:统计学习方法
从w,b的表达式中可以看出,w,b的值只依赖于alpha>0
的点,因此将这些点称为支持向量。