热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

支持向量机《统计学习方法》第七章

支持向量机(SVM)是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机&#x

支持向量机(SVM)是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;支持向量机还包括核技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。支持向量机的学习算法是求解凸二次规划的最优化算法

线性可分支持向量机/硬间隔支持向量机

线性可分支持向量机

假设输入空间与输出空间为两个不同的空间,输入都是由输入空间转换到特征空间,支持向量机的学习是在特征空间上进行的。当数据线性可分时,存在无穷多个分类超平面可将两类数据正确分开。感知机利用误分类最小的策略,这时有无穷多个解,线性可分支持向量机使用间隔最大化求最优分离超平面,这时,解是唯一的。

函数间隔和几何间隔

通常来说,一个点距离分离超平面的远近可以表示分类预测的确信程度。分离超平面(w,b)关于样本点(xi,yi)(xi,yi)的函数间隔为:

γ^i=yi(wxi+b)γ^i=yi(w⋅xi+b)
.定义超平面关于训练数据集T的函数间隔为超平面关于T中所有样本点的函数间隔最小值,即

γ^=mini=1,2,..,Nγ^iγ^=mini=1,2,..,Nγ^i


对分离超平面的法向量w加某些约束,如规范化

||w||=1||w||=1,使得间隔是确定的。

||w||||w||为向量w的l2范数,这时函数间隔变为几何间隔。

分离超平面(w,b)关于样本点

(xi,yi)(xi,yi)的几何间隔为:

γi=yi(w||w||xi+b||w||)γi=yi(w||w||⋅xi+b||w||)
.定义超平面关于训练数据集T的函数间隔为超平面关于T中所有样本点的函数间隔最小值,即

γ=mini=1,2,..,Nγiγ=mini=1,2,..,Nγi
超平面关于样本点的几何距离一般是实例点到超平面的
带符号的距离,当样本点分类正确时就是样本点到超平面的距离。

间隔最大化

支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。
间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类。
将间隔最大化问题转换为凸二次规划问题:

minw,b12||w||2s.t.yi(wxi+b)10(1)(2)(1)minw,b12||w||2(2)s.t.yi(w⋅xi+b)−1⩾0


化为这个形式之后,公式中只有w,b变量需要求解。

线性可分训练数据集的最大间隔分离超平面是存在且唯一的。

“间隔”

2||w||2||w||,“间隔边界”,支持向量:“使约束条件中等式成立的点”。

在决定分离超平面时只有支持向量起作用,而其它实例点并不起作用。支持向量的个数一般很少,所以支持向量机由很少的“重要的”训练样本确定。

学习的对偶算法

将上述的最优化问题作为原始最优化问题,应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解,这就是线性可分支持向量机的对偶算法。这样做的优点,一是对偶问题往往更容易求解;二是引入核函数,因而推广到非线性问题。
看了书上关于原始问题与对偶问题的讲述之后:
1.原始问题可以转换为极小问题
2.与这个最小最大问题相对应的有极大极小问题,这个极大极小问题就是原始问题的对偶问题,对偶问题的解并不一定就等于原始问题的解,但在这种条件下二者相等:1.f(x)和c(x)均为凸函数;2.存在x使c(x)满足约束。
但在线性可分的条件下一定满足这两个条件,因此可以用求对偶问题来求原始问题并得到解。
在求解对偶问题中拉格朗日乘子αi>0αi∗>0的实例点称为支持向量。

线性支持向量机/软间隔支持向量机

线性支持向量机

对于线性不可分的训练数据需要修改硬间隔最大化,使其成为软间隔最大化。
具体做法:对每一个样本点引入一个松弛变量ξi0ξi⩾0,使函数间隔加上松弛变量大于等于1,这样约束条件变为:

yi(wxi+b)1ξiyi(w⋅xi+b)⩾1−ξi
,同时,对每一个松弛变量支付一个代价

ξiξi,目标函数变为:

12||w||2+Ci=1Nξi12||w||2+C∑i=1Nξi
这里

C>0C>0称为惩罚参数。因此,最小化目标函数包含两层意思:使

12||w||212||w||2尽量小即间隔尽量大,同时使误分类点的个数尽量少。

学习的对偶算法

如线性可分支持向量转换为对偶形式一样,线性支持向量机也可以化为对偶形式。

支持向量

支持向量:在求解对偶问题中拉格朗日乘子αi>0αi∗>0的实例点称为支持向量。
支持向量的位置有αi,ξαi∗,ξ∗决定。

合页损失函数

对于线性支持向量机学习来说,其模型为分离超平面wx+b=0w∗⋅x+b∗=0,决策函数f(x)=sign(wx+b)f(x)=sign(w∗⋅x+b∗),其学习策略为软间隔最大化,学习算法为凸二次规划。
线性支持向量机的学习还有另外一种解释,就是最小化以下目标函数:

i=1N[1yi(wxi+b)]++λ||w||2∑i=1N[1−yi(w⋅xi+b)]++λ||w||2


目标函数的第一项是经验损失或经验风险,函数

L(y(wx+b))=[1y(wx+b)]+L(y(w⋅x+b))=[1−y(w⋅x+b)]+称为合页损失函数。下标+表示取正值的函数。

合页损失函数是0-1损失函数的上界。由于0-1损失函数不是连续可导的,直接优化由其构成的目标函数比较困难,可以认为线性支持向量机是优化由0-1损失函数的上界(合页损失函数)构成的目标函数。这时的上界损失函数又称为代理损失函数。

当与感知机的损失函数

[yi(wxi+b)]+[−yi(w⋅xi+b)]+对比,合页损失函数不仅要分类正确,而且置信度足够高时损失才是0.也就是说合页损失函数对学习有更高的要求。

非线性支持向量机与核函数

本节叙述非线性支持向量机,主要特点是利用核技巧

核技巧

非线性分类问题是指通过利用非线性模型才能很好地进行分类的问题。如果能用RnRn的一个超曲面将正负例正确分开,则称这类问题为非线性可分问题。
用线性分类方法求解非线性分类问题分为两步:首先使用一个变换将原空间的数据映射到新空间;然后在新空间使用线性分类学习方法从训练数据中学习分类模型。核技巧就属于这样的方法。
核技巧应用到支持向量机,其基本想法就是通过一个非线性变换将输入空间(欧式空间或离散集合)对应于一个特征空间(希尔伯特空间),使得在输入空间中的超曲面模型对应于特征空间中的超平面模型

正定核

半正定矩阵

常用核函数

1.多项式核函数
K(x,z)=(xz+1)pK(x,z)=(x⋅z+1)p为p次多项式分类器
2.高斯核函数
K(x,z)=exp(||xz||22δ2)K(x,z)=exp(−||x−z||22δ2)

非线性支持向量机

将线性支持向量机扩展到非线性支持向量机,只需要将线性支持向量机中对偶形式中的内积换成核函数。

序列最小最优化算法SMO

SMO是一种启发式算法,其基本思路是:如果所有变量的解多满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了,否则选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。其中至少一个变量是违反KKT条件的,另一个变量的值有约束条件自动确定,第二个变量的选择标准是能够使它有较大的变化。

面试中常问问题:
1.SVM如何解决多类分类问题?
SVM算法最初是为二值分类问题设计的,当处理多类问题时,就需要构造合适的多类分类器。目前,构造SVM多类分类器的方法主要有两类:一类是直接法,直接在目标函数上进行修改,将多个分类面的参数求解合并到一个最优化问题中,通过求解该最优化问题“一次性”实现多类分类。这种方法看似简单,但其计算复杂度比较高,实现起来比较困难,只适合用于小型问题中;另一类是间接法,主要是通过组合多个二分类器来实现多分类器的构造,常见的方法有one-against-one和one-against-all两种。
a.一对多法(one-versus-rest,简称1-v-r SVMs)。训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类别的样本就构造出了k个SVM。分类时将未知样本分类为具有最大分类函数值的那类。
b.一对一法(one-versus-one,简称1-v-1 SVMs)。其做法是在任意两类样本之间设计一个SVM,因此k个类别的样本就需要设计k(k-1)/2个SVM。当对一个未知样本进行分类时,最后得票最多的类别即为该未知样本的类别。Libsvm中的多类分类就是根据这个方法实现的。
c.层次支持向量机(H-SVMs)。层次分类法首先将所有类别分成两个子类,再将子类进一步划分成两个次级子类,如此循环,直到得到一个单独的类别为止。
对c和d两种方法的详细说明可以参考论文《支持向量机在多类分类问题中的推广》(计算机工程与应用。2004)
d.其他多类分类方法。除了以上几种方法外,还有有向无环图SVM(Directed Acyclic Graph SVMs,简称DAG-SVMs)和对类别进行二进制编码的纠错编码SVMs。


推荐阅读
  • 深度学习: 目标函数
    Introduction目标函数是深度学习之心,是模型训练的发动机。目标函数(objectfunction)损失函数(lossfunction)代价函数(costfunction) ... [详细]
  •     目标检测是计算机视觉一个非常重要的子任务。目标检测需要发现并准确定位自然图片中的物体。在2012年之前,目标检测主要基于手工设计的特征以及传统分类器。2012年以后,出现了 ... [详细]
  • 分隔超平面:将数据集分割开来的直线叫做分隔超平面。超平面:如果数据集是N维的,那么就需要N-1维的某对象来对数据进行分割。该对象叫做超平面,也就是分类的决策边界。间隔:一个点 ... [详细]
  • 机器学习算法常见面试题目总结,Go语言社区,Golang程序员人脉社 ... [详细]
  •   作为一种编程语言,Python比C#,Java,C和C++更具吸引力。它被称为“胶水语言”,它也被喜欢它的程序员誉为“美丽”的编程语言。从云计算,客户端到物联网终端,Pytho ... [详细]
  • 圣诞节到了,智能菌想送你一份礼物
    关注网易智能,聚焦AI大事件,读懂下一个大时代!(机器学习算法地图见文末)圣诞节的赠书活动来了! ... [详细]
  • 本文提供了一个详尽的前端开发资源列表,涵盖了从基础入门到高级应用的各个方面,包括HTML5、CSS3、JavaScript框架及库、移动开发、API接口、工具与插件等。 ... [详细]
  • 视觉Transformer综述
    本文综述了视觉Transformer在计算机视觉领域的应用,从原始Transformer出发,详细介绍了其在图像分类、目标检测和图像分割等任务中的最新进展。文章不仅涵盖了基础的Transformer架构,还深入探讨了各类增强版Transformer模型的设计思路和技术细节。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 在OpenCV 3.1.0中实现SIFT与SURF特征检测
    本文介绍如何在OpenCV 3.1.0版本中通过Python 2.7环境使用SIFT和SURF算法进行图像特征点检测。由于这些高级功能在OpenCV 3.0.0及更高版本中被移至额外的contrib模块,因此需要特别处理才能正常使用。 ... [详细]
  • 本文详细探讨了Spring框架中遇到的NoSuchBeanDefinitionException异常,具体涉及com.thinkplatform.dao.UserLogDao Bean未定义的问题,并提供了相应的解决方案。 ... [详细]
  • 本打算教一步步实现koa-router,因为要解释的太多了,所以先简化成mini版本,从实现部分功能到阅读源码,希望能让你好理解一些。希望你之前有读过koa源码,没有的话,给你链接 ... [详细]
  • 岭回归及其应用
    本文介绍了岭回归的基本原理,并通过Python中的sklearn库实现了岭回归模型。岭回归通过在代价函数中加入L2正则项,有效解决了多重共线性问题。 ... [详细]
  • Java设计模式详解:解释器模式的应用与实现
    本文详细介绍了Java设计模式中的解释器模式,包括其定义、应用场景、优缺点以及具体的实现示例。通过音乐解释器的例子,帮助读者更好地理解和应用这一模式。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
author-avatar
指尖的烟味让我清醒7758_371
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有