热门标签 | 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。


推荐阅读
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • Google排名优化-面向Google(Search Engine Friendly)的URL设计 ... [详细]
  •     目标检测是计算机视觉一个非常重要的子任务。目标检测需要发现并准确定位自然图片中的物体。在2012年之前,目标检测主要基于手工设计的特征以及传统分类器。2012年以后,出现了 ... [详细]
  • 深度学习: 目标函数
    Introduction目标函数是深度学习之心,是模型训练的发动机。目标函数(objectfunction)损失函数(lossfunction)代价函数(costfunction) ... [详细]
  • 分隔超平面:将数据集分割开来的直线叫做分隔超平面。超平面:如果数据集是N维的,那么就需要N-1维的某对象来对数据进行分割。该对象叫做超平面,也就是分类的决策边界。间隔:一个点 ... [详细]
  • 机器学习算法常见面试题目总结,Go语言社区,Golang程序员人脉社 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
  • java文本编辑器,java文本编辑器设计思路
    java文本编辑器,java文本编辑器设计思路 ... [详细]
  • 本文将详细介绍Nose这一非标准库的Python测试框架,它虽然不是Python官方发行版的一部分,但与unittest框架紧密相关,旨在通过简化测试流程来提升开发效率。 ... [详细]
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社区 版权所有