AI学习者 · 2021年10月18日

【机器学习算法】5、支持向量机算法

简介

支持向量机(SVM)主要是用来解决数据分类的问题,而分类的目的则是构造一个分类函数或者分类模型,该模型能把数据库中的数据项映射到给定类别的某一类,从而可以预测未知类别。

支持向量机可以分为线性支持向量机(也称为硬间隔支持向量机)、非线性支持向量机(也称软间隔支持向量机)。主要的应用领域是文本分类、图像分类、数据挖掘、手写字符识别、行人检测、人脸识别等领域。

算法的流程

FireShot Capture 011 - 【机器学习算法】5、支持向量机算法 - mp.weixin.qq.com.png

函数间隔于几何间隔

在超平面确定的情况下,|wx+b|可以表示点x到超平面距离的远近,而通过观察wx+b的符号于类标记y的符号是否一致可判断分类是否正确,所以,可以用决策函数的正负性来判定或表示分类的正确性。于是可以引出函数间隔的概念。函数间隔(用表示)的定义为:

image.png

超平面(w,b)关于T中的所有样本点(xi,yi)的函数间隔最小值(其中,x为特征,y是结果标签,表示第i个样本)便为超平面(w,b)关于训练数据集T的函数间隔:

image.png

但是,这样定义函数间隔存在问题,如果w和b成比例增加或者减小函数间隔且不变,但是实际超平面的间隔在发生变化,于是便提出了具有约束的函数间隔也就是几何间隔:

image.png

几何间隔也可以根据几何关系得到,这里不做过多说明。

算法具体步骤的推导

对于一个数据点进行分类,超平面离数据点的“间隔”越大,分类的确信度也就越大,为了使分类器的确信度尽可能地高,需要将所选择地超平面能够最大化这个“间隔”值。由前面的分析可以知道,函数间隔不适合用来做最大化间隔值,因此使用的使几何间隔作为优化的间隔。

1、线性可分SVM

由于要求超平面离两类样本地距离要尽可能大,根据点到平面的距离公式,每个样本点到超平面的距离为:

image.png
其中||w||为向量的L2范数,在这里超平面与样本之间是存在冗余的,所以在这里利用这个特点简化求解问题,对w和b加上如下的约束:

image.png
可以消除这个冗余,同时简化点到超平面距离的计算公式。

于此可以写出两类样本到超平面的距离间隔为:
image.png
目标是使得间隔最大化,这样的话上式的结果等价于最小化如下的目标函数:
image.png
于是间隔最大化问题可以对偶为最小化如下的问题:
image.png
可见上式就是一个带不等式约束的最优化问题,可以构造拉格朗日函数进行求解,所构造的拉格朗日函数如下:
image.png
在此引入拉格朗日的对偶问题,即:
image.png
先对于L(w,b,α)求关于参数的导数,分别如下:
image.png

由对偶后先求解min问题,即令w,b的偏导数为0,求出极值条件下的值:
image.png

将导数代入拉格朗日函数得到:
image.png
于是优化问题也变成了
image.png

因为wx+b=yi,代入w*的值,可以得到b为:
image.png

于是可以得出决策函数为
image.png

综上所述,线性可分支持向量机的算法步骤如下:

(1)给定数据集T={(x1,y1),(x2,y2),(x3,y3),...,(xN,yN)},y={+1,-1};

(2)构造最优化问题:

image.png
求解最优化的所有α

(3)计算参数w*和b

image.png

(4)得出超平面与决策函数

image.png

2、非线性SVM

在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身不好分的非线性数据分开。

下面直接给出非线性支持向量机算法的步骤:

综上所述,线性可分支持向量机的算法步骤如下:

(1)给定数据集T={(x1,y1),(x2,y2),(x3,y3),...,(xN,yN)},y={+1,-1};

(2)构造最优化问题:

image.png
求解最优化的所有α

(3)计算参数w*和b

image.png

(4)得出超平面与决策函数

image.png

3、常见的核函数

(1)线性核(Linear Kernel)
image.png

(2)多项式核(Polynomial Kernel)
image.png

(3)径向基核函数(Radial Basis Function)
image.png

也叫高斯核(Gaussian Kernel)
image.png
(4)幂指数核(Exponential Kernel)
image.png

(5)拉普拉斯核(Laplacian Kernel)
image.png

(6)ANOVA核(ANOVA Kernel)
image.png

(7)二次有理核(Rational Quadratic Kernel)
image.png

(8)多元二次核(Multiquadric Kernel)
image.png

(9)逆多元二次核(Inverse Multiquadric Kernel)
image.png

(10)Sigmoid核(Sigmoid Kernel)
image.png

以上几种是比较常用的,大部分在SVM,SVM-light以及RankSVM中可用参数直接设置。还有其他一些不常用的,如小波核,贝叶斯核,可以需要通过代码自己指定。

SMO最小序列算法推导(部分)

image.png
image.png
image.png
image.png
全部推导内容见我的csdn博客:
https://blog.csdn.net/qq\_24819773/article/details/86513166

SVM算法的优缺点

优点

1、使用核函数可以向高维空间进行映射;
2、使用核函数可以解决非线性的分类;
3、分类思想很简单,就是将样本与决策面的间隔最大化;
4、分类效果较好;

缺点

1、对大规模数据训练比较困难;
2、无法直接支持多分类,但是可以使用间接的方法来做。

PCA算法的改进和优化

1、最小二乘SVM(LS-SVM)算法

LS-SVM是SVM的一个变体。它从机器学习损失函数入手,在其优化的目标函数中使用二范数,并利用等式约束条件代替SVM标准算法中的不等式约束条件,使得LS-SVM方法的优化问题的求解最终变为一组线性方程的求解。

传统SVM中,约束条件是不等式,离分离超平面近的元素向量是支持向量,强烈影响分离平面的计算,离超平面远的向量影响比较小;因此如果分离集合之前的边界不清晰,会影响计算结果。而LS-SVM中约束条件是等式,因此,离分离超平面无论远近都对分离超平面有影响,不过分离超平面不如传统的SVM精准;而且一旦产生相当数量的大的离群点,会严重影响分离超平面的计算。LS-SVM的最终结果,近似于将两个分离集合的所有元素到分离平面的距离都限定在1+n,n是可接受误差;

LS-SVM方法通过求解线性方程组实现最终的决策函数,在一定程度上降低了求解难度,提高了求解速度,使之更适合于求解大规模问题,更适合于实际问题,虽然不一定能获得全局最优解,但仍可获得较高的识别率;

2、概率SVM

概率SVM可以视为Logistic回归和SVM的结合,SVM由决策边界直接输出样本的分类,概率SVM则通过sigmoid函数计算样本属于其类别的概率。具体地,在计算标准SVM得到学习样本的决策边界后,概率SVM通过缩放和平移参数对决策边界进行线性变换,并使用最大似然估计得到结果,将样本到线性变换后超过超平面的距离作为sigmoid函数的输入从而得到概率。

SKlearn算法的实践

SVM算法实践

FireShot Capture 013 - 【机器学习算法】5、支持向量机算法 - mp.weixin.qq.com.png

执行结果:
FireShot Capture 014 - 【机器学习算法】5、支持向量机算法 - mp.weixin.qq.com.png

文章转载于:集智书童
作者:ChaucerG

推荐阅读

更多嵌入式AI技术相关内容请关注嵌入式AI专栏。
推荐阅读
关注数
18817
内容数
1358
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息