首页 > 编程知识 正文

svm算法实现,SVM和SVR

时间:2023-05-06 08:28:48 阅读:10548 作者:1526

线性支持向量回归1.SVM分类器2 .支持向量回归支持向量机差异3. SVM算法总结

1.SVM分类器

SVM擅长解决复杂的中小型非线性问题,即使有很多特色的培训样本,也能提供非常好的性能。

但是,随着样本量的增加,SVM模型的计算复杂度为m ̄2

或者m^3增加。

SVM算法涉及间隔、支持向量、核函数、对偶、凸优化等很多概念。

如果两个样本被线性划分,则感知机可以确保找到一个解,并且可以完全准确地区分这两个样本。 但是,解并不唯一(图2 ),而且这些决策边界的质量也不同,直观上这条线两侧的间隔越大越好。 那么,有直接找到这个最佳解的方法吗?

这要找支持向量机。 直观上,限制条件越多,对模型的限制越大,解的数量也越少。 如果感知机的解不唯一,在感知机的成本函数上加上更强的制约条件似乎可以减少解的数量。 实际上也是这样。

支持向量机的成本函数:

在分类正确情况下,即y(wxb ) 1,loss=0;

如果分类错误,即y(wxb(1,loss=y ) wxb )。

比较起来,原始的wxb可以大于或小于0,但现在可以大于或小于1。 这里为什么选择1还没有直观说明,但有一件重要的事情。 原来的决策边界只是一条直线,现在是宽带。 本来差别很小的两个点(例如wx b=0附近的两个点)可以分为不同的两类,但现在至少需要2/||w||不同。 如下图所示。

图3 )假设样本属于两个类,通过在此样本中训练SVM获得的最大间隔的超平面。 超平面上的样本点也称为支持向量。

为了统一,以下还是将决策边界定义为wx b=0,两侧边界(两条虚线)分别为wx b=1和wx b=1。 此时,只是b的符号不同,其他性质相同。 其中,w、b是模型训练时需要优化的参数。 从上图中可以得到以下信息。

1 )两条虚线之间的距离为2||w||;

2 )需要优化的参数w的方向为决定边界的法线矢量方向(w与决定边界垂直);

3 )此时边界共有三个点,这三个点也就是此时的支撑向量。

计算两条虚线之间的距离如下。

相对于直线wx b=1,截距式为x2=w1/w2x1(1b )/w2,相当于在x2轴方向平移了1w2,该直线和wx b=0沿着法线矢量方向的距离

=(1/) w12w22 ) )1/2=1/||w||,见图4。

图4 margin宽度

优化目标:

SVM的优化目标是将margin的幅度最大化为。 因为=1/||w||,

这里||w||是应该优化的参数w的模式长度。 因此,优化目标与最小化||w||等价,可以表示为:

(x )1),y )1),…,) x ) m,y ) m ) )对于rd{ 1,1 },minwRd,br|||||||2)

s.t.y(I ) ) wx ) I ) b ) 1对所有I=1,2,…,m成立。

将鸢尾属数据集的setosa的类和非setosa分别使用探测器和SVM进行分类的效果比较如下。

图5 :感知线性分类器

图6线性SVM分类结果

比较图5和图6可知,由于SVM决定的决策边界周围的margin更大,因此对更多未知样本进行分类时,在边界上的几个点上可以得到更准确的分类结果。

线性不可分离:

在上图中,名为setosa的类可以与其他两个类线性分离,但名为virginica的类与其相邻的versicolor重叠。 也就是说,不能线性分离。 这种情况下也可以使用SVM进行分类,原理是在成本函数中加入松弛变量(slack(,

(x(1),x(1),…,) x(1,y ) m ) ) rd{ 1,1 },minwRd,br|||||2cmi=1I

s.t.y(I ) ) wx ) b ) 1I对所有I=1,2,…,m都成立

在上述优化目标中加入松弛变量,可以允许两边边界有一定程度的违规,允许一定的错误分类,分离出原来的不可线性分离的两类数据。

以下是C=1000时virginica和非virginica的分类效果。

图8添加松弛变量的SVM分类效果

2 .支持向量回归支持向量机的差异支持向量回归模型(Support Vector Regression,SVR )采用SVM拟合曲线进行回归分析。 分类和回归问题在监督机器学习中有两类最重要的任务。 相对于分类的输出是有限个离散值,回归模型的输出在一定范围内是连续的。

SVM分类模型的目标函数是使权重的二范数最小,并且使每个训练集中的点尽可能远离其类侧支撑向量。

回归模型的目标是使训练集中的每个点(xi,yi )尽可能拟合一个线性模型yi=w) xi ) b。

典型的回归模型使用均方误差作为损耗函数,但SVR并不是这样定义损耗函数的。

在SVR中,需要对各点(x )加上常数0

i,yi),如果
|yi-wφ(xi)- b| ≤ ε ,则对应的损失为
yi-wφ(xi)- b - ε,这个均方差损失函数不同,如果是均方差,那么只要 yi-wφ(xi)- b≠0 ,就会有损失。
如下图所示,在蓝色条带里面的点都是没有损失的,但是外面的点是有损失的,损失大小为红色线的长度。

因此,SVR的损失函数度量为:

SVR目标函数的原始形式

我们可以先求优化函数对于w,b,ξi∨,ξi∧的极小值, 接着再求拉格朗日乘子α∨,α∧,μ∨,μ∧的极大值。
求解后得到对应目标函数如下:

3. SVM 算法小结

SVM算法是一个很优秀的算法,在集成学习和神经网络之类的算法没有表现出优越性能前,SVM基本占据了分类模型的统治地位。目前则是在大数据时代的大样本背景下,SVM由于其在大样本时超级大的计算量,热度有所下降,但是仍然是一个常用的机器学习算法。

优点

解决高维特征的分类问题和回归问题很有效,在特征维度大于样本数时依然有很好的效果。

2) 仅仅使用一部分支持向量来做超平面的决策,无需依赖全部数据。

3) 有大量的核函数可以使用,从而可以很灵活的来解决各种非线性的分类回归问题。

样本量不是海量数据的时候,分类准确率高,泛化能力强。

不足

如果特征维度远远大于样本数,则SVM表现一般。

SVM在样本量非常大,核函数映射维度非常高时,计算量过大,不太适合使用。

3)非线性问题的核函数的选择没有通用标准,难以选择一个合适的核函数。

4)SVM对缺失数据敏感。

参考:
链接1:https://www.cnblogs.com/Belter/p/8975606.html
链接2:https://www.cnblogs.com/pinard/p/6113120.html
链接3:https://cloud.tencent.com/developer/article/1085058?from=article.detail.1084628

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。