Machine Learning---SVM

来源:互联网 发布:java论坛哪个好 编辑:程序博客网 时间:2024/06/16 14:11

支持向量机是一种分类算法,在处理线性不可分数据上具有很高的性能。它通过一种映射,将原始数据映射到高维的空间,在该空间上搜索最佳分离平面,称为最大边缘超平面(Maximum Marginal Hyperplane,MMH),该平面到数据边缘两侧的距离最大且相等,在边缘样本点称为支持向量(Support Vevtor),SVM算法的目的就是求出最大边缘超平面。

要求解出MMH,有如下几个关键点:
1 如何刻画最大边缘超平面,也就是如何把一个实际的例子用数学的语言表达出来。

这里写图片描述

假设该MMH为 w.x+b=0,其边缘平面为:w.x+b=1,w.x+b=-1,找到x1,x2两个点,将这两个式子相减可以得到:w.(x1-x2)=2,由点积的几何意义做一个变换:||w|| ||x1-x2|| cosθ=2,即:||w|| d=2,d=2/||w||。这样我们就将最大边缘超平面量化,我们接下来要做的就是在某些限定条件(该条件实质就是分类的条件)下,最大化d,写成规范表达式为:

这里写图片描述

解释一下为什么是平方,因为||w||是向量w的范数/长度,它是带有根号的,与除以2一样,可以在求导数时简化算式

2 如何求解
(1)我们采用拉格朗日乘子化简,准确的说是采用KKT最优化条件,它是拉格朗日乘子的推广,能够求解非等式约束,化简可得:

这里写图片描述

其中的α称为拉格朗日乘数,上述所做的其实是拉格朗日的对偶问题,对第一个式子分别求出对w,b的偏导数,在带回原式。

(2)用SMO(Sequential Minimal Optimization)算法求解w,b。
在我们要求解的式子中,只有α是未知数,我们假设有n个,首先在约束范围类随机给n-2个α赋值,剩余的2个α为本次迭代所要求的未知数,将已知带入可以的到一个二次的方程,采用求导公式求出未知的2个α,接下来的迭代均采用这种模式,直到α稳定,这就是最终结果。
①为什么每次迭代只保留2个未知数,若只有一个未知数,可以从已知直接求出,而不必经过计算,这显然不是我们想要的,若有3个未知数,显然比2个未知数在计算上复杂,此外,在有2个未知数的情况下,还可以找到两者的关系,更有益于计算
②如何选择更新的变量,第一次是随意选择的,之后选择的变量是根据经验来的,经验说应选取非边缘的变量。

3 在没有绝对的分离平面时,我们采用松弛变量与惩罚函数(使不可分变量最少,间隔最大)有两种形式L1,L2,。再次使用拉格朗日乘子,转化为凸优化问题求解,与无惩罚函数相比,只是在约束上α增加了上限C

这里写图片描述

4 为什么SVM在处理线性不可分数据有很大优势
SVM相对于其他分类算法,其独特之处在于核函数的使用。之前提到的该算法通过一种映射φ(x),将原始数据映射到高维的空间,使在低维空间线性不可分的数据在高维空间内可分,但这样却造成了维度灾难,加大了计算的难度,这时引入核函数κ(x,z),我们可以在低纬度求出核函数的值,该值就相当于在高纬度计算的φ(x),φ(z)的内积,从而解决计算上的问题.

这里写图片描述

怎样才是有效的核函数,这里有一个Mercer定理: 如果κ是一个有效的核函数,当且仅当对于训练样本其对应的核函数矩阵是对称半正定的。
而核函数又如何选取呢,这没有一个统一的标准,只能每一个都试一下,从中选取最优。常见的核函数:

这里写图片描述

5 如何预测

这里写图片描述

原创粉丝点击