欢迎大家来到IT世界,在知识的湖畔探索吧!
支持向量机(SVM: Supporting Vector Machine)最初是用来解决模式识别问题的,它也可以很好地应用于回归问题,其思路与模式识别十分相似。SVM算法被称为大数据领域的十大经典算法之一,简单来说,SVM就是在一个多维空间,对数据样本进行划分的算法。
SVM算法思想
假设给定训练样本集,首先定义用来估计的线性回归函数:,这里 x 是一个向量。我们要解决的问题,就是寻找这个f(x)来对样本进行划分,在多维空间中,这个划分的平面就是超平面。
为了便于理解超平面的概念,我们考虑最简单的二维空间,x 和 y 都是一维向量,超平面就退化为一条直线;如果在三维空间对样本划分,那么超平面就是一个平面。
超平面在二维空间和三维空间
在二维空间中,点到直线的距离是
扩展到n 维空间,点 x 到 的距离,就是.
如果我们要对在二维平面中的样本进行分类,y=1 是一类,y=-1 是一类。用一个超平面(一条直线)对两类样本进行划分,我们希望这两类样本之间的界限越明显越好,这样就越有利于分类。
因此我们要找出 w和b,使得 wx+b=1 以及 wx+b=-1两条线之间的距离越大越好,这样两类样本才能泾渭分明。从上面简单的推导过程可以看出:越小,则两条线之间距离越大,wx+b=0越接近最优超平面。
二维空间的简单推导,图片来自知乎,侵删
假设存在一个足够小的正数,对于所有样本的预测结果与真实结果偏差的绝对值之和小于或等于时,可以认为得到的 w 和 b 确定一个最优超平面,即满足条件:
可知,在给定的情况下,越小,求得的超平面越接近最优超平面。于是,支持向量机回归要解决的一个基本最优化问题如下:
对于非线性支持向量机回归,其基本思想是通过一个非线性映射将数据 x 映射到高维特征空间即Hilbert空间中,并在这个空间进行线性回归,如此,在高维特征空间的线性回归就对应于低维输入空间的非线性回归。
其具体实现是通过核函数来实现的,常见核函数包括多项式核函数、Gauss径向基(RBF)核函数、Sigmoid核函数等。
LS-SVMR算法Python示例
LS-SVMR即最小二乘支持向量机回归,是由J.A.K Suykens提出的,它是为了便于求解而对SVM进行的一种改进。与标准SVM相比,LS-SVMR用等式约束代替SVM中的不等式约束,求解过程变成解一组等式方程,避免了求解耗时的二次规划问题,求解速度相对加快。
下面给出LS-SVMR算法的Python实现。基于iris数据集,用LS-SVMR算法建立Sepal.Length(花萼长度)、Sepal.Width(花萼宽度)、Petal.Length(花瓣长度)对Petal.Width(花瓣宽度)回归问题的支持向量机回归模型。
Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据样本,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。
首先进行数据准备和初始化。
首先对数据进行标准化处理。由于此处使用的是RBF径向基核,所以要计算高维空间中两点的距离,故需要先标准化数据,以避免量纲对计算距离的影响。
接着设置参数sigma和gama,其中sigma表示高维空间中的点分布的离散程度,gama对目标函数的两项之间进行平衡,此处,根据经验对这两个参数进行了设置。
得到矩阵A后,即可通过最小二乘法估计参数,并根据估计的参数进行预测,进一步得到残差平方和,最终在测试数据集上得到的残差平方和为1.77。
使用LS-SVMR算法建立支持向量机回归模型时,设置sigma和gamma这两个参数很重要。一般来说对于标准化后的数据,sigma可取1,参数gama取1~10的数比较合适。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/85366.html