作者:NOYOKI要跑偏 | 来源:互联网 | 2023-07-10 10:20
SVM即支持向量机(support vector machine),是一种分类算法。SVM 适合中小型数据样本、非线性、高维的分类问题。它将实例的特征向量映射为空间中的一些点。如:
而SVM要做的事情就是找到那么一条线, “最好地” 区分这两类点,以后有了新的点,这条线也能做出很好的分类。划分的线是可以有无数条的。
那么哪一条线是最好的呢。SVM 将会寻找可以区分两个类别并且能使间隔(margin or gap)最大的划分超平面。比较好的划分超平面,样本局部扰动时对它的影响最小、产生的分类结果最鲁棒、对未见示例的泛化能力最强。
对于任意一个超平面,其两侧数据点都距离它有一个最小距离(垂直距离),这两个最小距离的和就是间隔。比如下图中两条虚线构成的带状区域就是 gap,虚线是由距离中央实线最近的两个点所确定出来的(也就是由支持向量决定)。
从上图可以看出,虚线上的点到划分超平面的距离都是一样的,实际上只有这几个点共同确定了超平面的位置,因此被称作 “支持向量(support vectors)”,“支持向量机” 也是由此来的。
线性SVM
对于这个划分的超平面,我们可以给一个方程:
我们的处理方法是增加松弛因子
求偏导得
带入式子中得到:
然后求对于α的极大值
构造对偶问题,解约束最优化:
最后得到超平面:
要注意的是:计算b*时,需要使用满足条件0<α
实践中往往取支持向量的所有值取平均作为b* 。
SVM的损失函数为Hinge loss
因为最后求超平面的时候我们使用的是两个向量的内积,所以核函数即为定义两个向量的内积。常用的核函数有
多项式核函数:
高斯核函数:
Sigmod核函数: