SVM-支持向量机(三)SVM回归与原理

SVM-⽀持向量机(三)SVM回归与原理
SVM回归
尿苷我们之前提到过,SVM算法功能⾮常强⼤:不仅⽀持线性与⾮线性的分类,也⽀持线性与⾮线性回归。它的主要思想是逆转⽬标:在分类问题中,是要在两个类别中拟合最⼤可能的街道(间隔),同时限制间隔侵犯(margin violations);⽽在SVM回归中,它会尝试尽可能地拟合更多的数据实例到街道(间隔)上,同时限制间隔侵犯(margin violation,也就是指远离街道的实例)。街道的宽度由超参数ϵ控制。下图展⽰的是两个线性SVM回归模型在⼀些随机线性数据上训练之后的结果,其中⼀个有较⼤的间隔(ϵ = 1.5),另⼀个的间隔较⼩(ϵ = 0.5)。
绍兴市数字健康服务平台
如果后续增加的训练数据包含在间隔内,则不会对模型的预测产⽣影响,所以这个模型也被称为是ϵ-insensitive。
我们可以使⽤sk-learn的LinearSVR类训练⼀个SVM回归,下⾯的代码对应的是上图中左边的模型(训练数据需要先做缩放以及中⼼化的操作,中⼼化⼜叫零均值化,是指变量减去它的均值。其实就是⼀个平移的过程,平移后所有数据的中⼼是(0, 0)):
from sklearn.svm import LinearSVR
svm_reg = LinearSVR(epsilon=1.5)
svm_reg.fit(X, y)
再处理⾮线性的回归任务时,也可以使⽤核化的SVM模型。例如,下图展⽰的是SVM回归在⼀个随机的⼆次训练集上的表现,使⽤的是⼆阶多项式核:
左边的图中有⼀个较⼩的正则(超参数C的值较⼤),⽽右边图中的正则较⼤(较⼩的C值)。
下⾯的代码上图中左边的图对应的模型,使⽤的是sk-learn SVR类(⽀持核⽅法)。SVR类等同于分类问题中的SVC类,并且LinearSVR 类等同于分类问题中的LinearSVC类。LinearSVR类会随着训练集的⼤⼩线性扩展(与LinearSVC类⼀样);⽽SVR类在训练集剧增时,速度会严重下降(与SVC类⼀致):
from sklearn.svm import SVR
svm_poly_reg = SVR(kernel='poly', degree=2, C=100, epsilon=0.1)
svm_poly_reg.fit(X, y)
SVMs也可以⽤于异常点(值)检测,具体可以参考sk-learn⽂档。
广州天河部落原理解释
在这章我们会解释SVM如何做预测,以及训练算法是如何⼯作的,先从线性SVM分类器开始。
⾸先,我们将所有的模型参数放⼊⼀个向量θ,包括偏置项参数θ0以及输⼊特征的权重θ1 到 θn,并且给所有数据实例增加⼀个偏置项x0 = 1。这⾥偏置项称为b,特征权重向量称为w。
决策⽅法与预测
线性SVM分类器模型在做预测时,对于输⼊的实例x,它会计算决策函数wTx + b = w1x1 + … + w n x n + b:如果结果是正的,则预测的类别ŷ就属于正类(1),否则属于反类(0),如下公式所⽰:
下⾯我们看⼀下SVM在之前iris数据集上训练后的决策函数图:
这是⼀个⼆维平⾯,因为数据集有两个特征(petal width与petal length)。决策边界是由那些让决策函数等于0的点组成:也就是两个平⾯的交线(由上图中实线表⽰)。
虚线代表的是令决策函数等于1或-1的点:这两条虚线平⾏且距决策边界的距离相等,组成了⼀个间隔。训练线性SVM分类器就是到⼀对w与b的值,让这个间隔尽可能的宽的同时,还要避免或是限制间隔侵犯(margin violation)。避免间隔侵犯的结果就是硬间隔(hard margin),限制间隔侵犯的结果就是软间隔(soft margin)。
训练⽬标
上图的例⼦中我们看到这个决策函数的图像是⼀个平⾯,并且有⼀个坡度。这个坡度等同的是权重向量w的范数(norm):∥ w ∥。如果我们将这个坡度除以2,则那些令决策函数等于±1 的点会离决策边界两倍远。换句话说,坡度除以2会让间隔增加2倍。如下图所⽰:
所以我们希望最⼩化 ∥ w ∥ 的值以获取⼀个更⼤的间隔。不过,如果我们同时也希望避免间隔⼊侵(硬间隔),则我们需要让决策函数对所有训练数据中的“正”训练实例计算结果⼤于1,⽽对所有“负”训练实例的计算结果⼩于-1。如果我们对负实例(也就是y(i) = 0)定义t(i) = –1,对正实例(y(i) = 1)定义t(i) = 1,则我们可以使⽤约束t(i)(w T x(i) + b) ≥ 1 定义所有实例。
所以我们接下来可以将硬间隔SVM分类器⽬标表⽰为⼀个带约束的优化问题,如下公式:
惠州空气质量
这⾥可以看到,我们优化的不是∥ w ∥,⽽是½w T w,它等同于½∥ w ∥2。因为½∥ w ∥2的导数⾮常简单(也就是w),⽽∥ w ∥ 在w=0时不可微。优化算法在可微函数上⼯作效果更好。
为了达到软间隔(soft margin)⽬标,我们需要为每个实例i引⼊⼀个松弛变量ζ(i) ≥ 0,这个变量衡量的是第i th个实例被允许⼊侵间隔的程度。我们现在有两个冲突的⽬标:让松弛变量尽可能的⼩,以减少间隔⼊侵;同时还要让 ½∥ w ∥2 尽可能的⼩,以增加间隔。所以这就是为什么算法中引⼊超参数C:这个参数可以让我们定义这两个⽬标之间的权衡(tradeoff)。对应的带约束优化问题为:
⼆次规划
硬间隔与软间隔问题都是带线性约束的凸⼆次优化问题,这种就是常说的⼆次规划(Quadratic Programming,QP)问题。有很多现成的解决办法⽤于解决QP问题,在这不会深⼊讨论。这种常规问题的公式如下所⽰:
需要注意的是表达式Ap ≤ b 定义了n c的约束:p⊺a(i) ≤ b(i) for i = 1, 2, …, n c, 这⾥a(i)代表的是包含了A的第i th⾏的向量,b(i)代表的是b 的i th第个元素。
如果我们按下⾯的参数设置QP参数,则可以得到硬间隔线性SVM分类器的⽬标:
⼀个训练硬间隔线性SVM分类器的⽅法是使⽤已有的OP问题解决⽅法,传⼊上述参数即可。求得的结果向量p会包含偏执项b=p0,以及特征权重w i = p i for i = 1, 2, …, n。类似的,也可以使⽤QP问题解决⽅案解决软间隔问题。
不过在使⽤核⽅法时,我们会使⽤另⼀个不同的带约束的优化问题。
在线SVM(online SVM)
在这章结束之前,我们快速地看⼀下在线SVM分类器(在线学习是指递增的训练,⼀般在⼀个新实例到达时就训练⼀次)。
对于线性SVM分类器,⼀种⽅法是使⽤梯度下降(例如使⽤SGDClassifier)最⼩化以下损失函数:
这个损失函数是由原始问题推导得出,但是它的收敛速度相⽐基于QP⽅法的收敛会慢特别多。在这个
损失函数中,第⼀个累加会推进模型去⼀个较⼩的权重向量w,继⽽产⽣⼀个更⼤的间隔。第⼆个累加会计算所有的间隔⼊侵(margin violations)。⼀个实例如果是远离街道、且在它所属正确的那⼀侧,则它的间隔⼊侵为0;否则它的间隔⼊侵则为距离正确那⼀侧街道的距离的⽐例。最⼩化这个项,会确保模型尽可能少地造成间隔⼊侵。
最后提⼀下HINGE LOSS,我们之前在训练SVM时使⽤的是这个损失函数。它的函数为max(0, 1-t)。在 t ≥ 1时,输出为0。它的导数
nikon d2h
在t < 1 时等于 -1,在t > 1 时等于0 ;在t=1时不可微,不过仍可以在使⽤梯度下降时,使⽤t=1 时的任何次导数(也就是说,任何在-1到0之间的值)。函数图如下:
在在线SVM中,也是可以实现在线核化SVM的,例如使⽤“Incremental and Decremental SVM Learni
大和恒粮行ng” 或”Fast Kernel Classifiers with Online and Active Learning”。不过这些是通过Matlab和C++实现的。对于⼤型的⾮线性问题,我们其实可以考虑使⽤神经⽹络。

本文发布于:2024-09-22 04:39:02,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/569876.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:间隔   训练   问题
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议