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


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 分享2款网站程序源码/主题等后门检测工具
    本文介绍了2款用于检测网站程序源码和主题中是否存在后门的工具,分别是WebShellkiller和D盾_Web查杀。WebShellkiller是一款支持webshell和暗链扫描的工具,采用多重检测引擎和智能检测模型,能够更精准地检测出已知和未知的后门文件。D盾_Web查杀则使用自行研发的代码分析引擎,能够分析更为隐藏的WebShell后门行为。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • MySQL多表数据库操作方法及子查询详解
    本文详细介绍了MySQL数据库的多表操作方法,包括增删改和单表查询,同时还解释了子查询的概念和用法。文章通过示例和步骤说明了如何进行数据的插入、删除和更新操作,以及如何执行单表查询和使用聚合函数进行统计。对于需要对MySQL数据库进行操作的读者来说,本文是一个非常实用的参考资料。 ... [详细]
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社区 版权所有