SVM支持向量机算法-原理篇

SVM⽀持向量算法-原理篇
本篇来介绍SVM 算法,它的英⽂全称是Support Vector Machine,中⽂翻译为⽀持向量机。
之所以叫作⽀持向量机,是因为该算法最终训练出来的模型,由⼀些⽀持向量决定。所谓的⽀持向量,也就是能够决定最终模型的向量。
SVM 算法最初是⽤来解决⼆分类问题的,⽽在这个基础上进⾏扩展,也能够处理多分类问题以及回归问题。
1,SVM 算法的历史
早在1963 年,著名的前苏联统计学家弗拉基⽶尔·⽡普尼克在读博⼠期间,就和他的同事阿列克谢·切尔沃宁基斯共同提出了⽀持向量机的概念。
但由于当时的国际环境影响,他们⽤俄⽂发表的论⽂,并没有受到国际学术界的关注。
直到 20 世纪 90 年代,⽡普尼克随着移民潮来到美国,⽽后⼜发表了 SVM 理论。此后,SVM 算法才受到应有的重视。如今,SVM 算法被称为最好的监督学习算法之⼀。
2,线性可分的 SVM
SVM 算法最初⽤于解决⼆分类问题,下⾯我们以最简单的⼆维平⾯上的,线性可分的数据点来介绍⽀持向量机。
假设平⾯上有⼀些不同颜⾊的圆圈,这些圆圈是线性可分的,也就是可⽤⼀条直线分开。如下:
现在想在平⾯上画出⼀条直线,将这些圆圈分开。通过观察,你很容易就能画出⼀条直线,如下:
但是这样的直线会有很多,它们都能正确的划分两类圆圈,就像下⾯这幅图中的⼀样:
宋清如那么哪条直线才是最好的呢?通过⾁眼我们⽆法到那条最好的直线。但是就上图中的三条直线⽽⾔,明显你会觉得中间那条红线,会⽐两侧的两条线要更好。
因为,如果有⼀些圆圈往中间靠拢,那么两侧的那两条直线就不能将两种圆圈划分开了。⽽中间那条直线依然可以划分两种圆圈。如下:
因此,中间那条红线会⽐两侧的两条直线更好,更安全。
虽然通过⾁眼我们能知道哪条直线更好,但是怎样才能到最好的那条直线呢?⽽ SVM 算法就可以帮我们到那条最好的直线。
3,到最好的直线
下⾯我们来看下如何到最好的那条直线。
⾸先,两条平⾏线,其中⼀条线经过⼀个绿⾊圆圈,剩下的所有绿⾊圆圈都在这条线的左侧;另⼀条线经过⼀个淡蓝⾊的圆圈,剩下的所有淡蓝⾊圆圈都在这条线的右侧。
如下图所⽰的两条平⾏线 L1 和 L2,L1 经过了 A 圆圈,L2 经过了 B 圆圈:
接下来,让 L1 以 A 为中⼼进⾏旋转,L2 以 B 为中⼼进⾏旋转,在旋转的过程中,要保证下⾯两个原则:
L1 与 L2 保持平⾏。
除 A 之外的所有绿⾊圆圈都在 L1 的左侧,除 B之外的所有淡蓝⾊圆圈都在 L2 的右侧。
在保证上⾯两个原则的前提下旋转,直到其中的⼀条线经过第三个圆圈为⽌。如下:
此时,L2 经过了第三个圆圈 C。
到此为⽌,我们要的那条最好的,能够划分两种圆圈的直线,就是 L1 和 L2 中间的那条直线,如下图中的 L3:
4,SVM 算法
www.csc108SVM 算法的求解过程,就是寻那条最佳直线的过程。
在 SVM 算法中,上⾯的 A,B,C 三个点叫作⽀持向量,直线 L3 是最佳直线,扩展到多维空间,这条直线叫作超平⾯。SVM 算法的⽬的就是到这个超平⾯,这个超平⾯是划分数据点的最佳平⾯。
关于⽀持向量,更重要的是,SVM 训练出的最终模型,只与⽀持向量有关,这也是⽀持向量机的名称
来源。就像 SVM 的发明者⽡普尼克所说的那样:⽀持向量机这个名字强调了这类算法的关键是如何根据⽀持向量构建出解,算法的复杂度也主要取决于⽀持向量的数⽬。
直线 L1 和 L2 之间有⽆数条平⾏直线都可以将两类圆圈分开,⽀持向量到这些平⾏直线的距离叫作分类间隔,⽽间隔最⼤的那条直线就是最佳直线,也就是 L3。
多维空间中的超平⾯可以⽤线性⽅程来表⽰:
其中的 W 为法向量,它决定了超平⾯的⽅向。b 为截距,它决定了超平⾯与空间原点的距离。
超平⾯将特征空间分为两部分,法向量所指向的⼀侧的数据为正类,标记为 +1;另⼀侧的数据为负类,标记为 -1。
⼆维坐标系中的线性⽅程如下图所⽰:
⽀持向量机的学习过程是⼀个凸⼆次规划问题,可以⽤ SMO 算法⾼效求解。
SMO 全称为Sequential Minimal Optimization,中⽂称为序列最⼩优化,由 John Platt 于 1996 年发表。
5,线性 SVM
上⽂中介绍到的两类圆圈是线性可分的,也就是可以⽤⼀条直线将所有不同的圆圈划分开,⽽不允许有⼀个例外。如下:
但现实⽣活中的数据,往往是线性不可分的,如下图中的两类圆圈,就不可能到⼀条直线将其分开:
使⽤线性可分的 SVM 是⽆法解决线性不可分问题的。要想解决线性不可分问题,就得将⽀持向量机⼀般化,这种向量机称为线性 SVM(去掉了可分⼆字)。
线性 SVM ⽐线性可分SVM 更具通⽤性。线性可分SVM 寻求的是硬间隔最⼤化,⽽线性 SVM寻求的是软间隔最⼤化。
硬件隔不允许有⼀个例外的点被错分,⽽软间隔则允许个别(不会很多)的点被错分。
在线性不可分的数据集中,导致不可分的只是少量异常点,只要把这些异常点去掉,余下的⼤部分样本点依然满⾜线性可分的条件。如下图所⽰:
6,⾮线性问题
不管是线性可分 SVM 还是线性 SVM,它们都只能处理线性问题:
线性可分 SVM:存在⼀条直线将所有的点正确划分。
线性 SVM:存在⼀条直线将绝⼤部分点正确划分,⽽允许极个别点错分。这些极个别点可称为噪点或异常点。
与线性问题相对应的是⾮线性问题,⽐如下⾯两种情况都是⾮线性问题:
如何让 SVM 处理⾮线性问题呢?
原子核物理评论7,核函数
既然在⼆维空间中,不能到⼀条直线来处理⾮线性问题。那么是否可以将⼆维空间映射成三维空间,从⽽到⼀个平⾯,来处理⼆维空间不能处理的问题呢?
答案是肯定的,如果样本的属性数有限,那么就⼀定存在⼀个⾼维特征空间使样本线性可分。
如下图所⽰,在⼆维空间时,不能到⼀条直线将其正确的分类;将其映射到三维空间后,可以到⼀个平⾯,将其正确分类:
南寒水石
从下⾯这幅动图可直观的看到,⼆维空间的线性不可分映射到三维空间线性可分的转换过程:
将原始低维空间上的⾮线性问题转化为新的⾼维空间上的线性问题,这就是核技巧的基本思想。
⽀持向量机诞⽣于 1963 年,核技巧诞⽣于 1995 年。
在⽀持向量机中,核函数可以将样本从低维空间映射到⾼维空间,从⽽使得 SVM 可以处理⾮线性问
题。常⽤的核函数有以下⼏种:
线性核函数
多项式核函数
⾼斯核函数
拉普拉斯核函数
Sigmoid 核函数
不同的核函数对应不同的映射⽅式。在SVM 算法中,核函数的选择⾮常关键,好的核函数会将样本映射到合适的特征空间,从⽽训练出更优的模型。
核函数将线性SVM 扩展成了⾮线性 SVM,使得 SVM 更具普适性。
8,多分类问题
SVM 算法最初⽤于处理⼆分类问题,那它如何处理多分类问题呢?
对于多分类问题,可以将多个⼆分类器组合起来形成⼀个多分类器,常见的⽅法有⼀对多法和⼀对⼀法。
⼀对多法
对于有 K 个分类的数据集,把其中的⼀类作为正集,其它的 K-1 类作为负集,这样就把数据集分了正负两类。
⽐如我们有⼀个数据集,该数据集有三个分类 A,B,C,那么将训练出三个分类器:
将分类 A 作为正集,B,C 作为负集,训练出⼀个分类器。
将分类 B 作为正集,A,C 作为负集,训练出⼀个分类器。
将分类 C 作为正集,A,B 作为负集,训练出⼀个分类器。
如下图所⽰:
技术创新管理
对于 K 个分类的数据集,⼀对多法会训练出 K 个分类器。缺点是,每次训练分类器时,负样本数都⼤
⼤多于正样本数,造成样本分布不均。
⼀对⼀法
对于有 K 个分类的数据集,任选其中的两类样本,然后训练出⼀个分类器。
⽐如我们有⼀个数据集,该数据集有三个分类 A,B,C,那么将训练出三个分类器:
选 A,B 两类数据,训练出⼀个分类器。
选 A,C 两类数据,训练出⼀个分类器。
选 B,C 两类数据,训练出⼀个分类器。
如下图所⽰:
那么这种⽅法将会训练出 C(K, 2) 个分类器,因此这种⽅法的缺点是,如果数据集的分类较多的话,训练出的分类器将会⾮常多。
9,总结赵欣丝绸舞台事故
SVM 算法通过寻⼀个超平⾯来处理分类问题。这个超平⾯只与⼏个⽀持向量有关,⽽不会受其它的普通向量的影响。
SVM 可分为线性 SVM 和⾮线性 SVM,线性 SVM 只能处理线性问题,⽽不能处理⾮线性问题。
核函数可以将低维空间的⾮线性问题,转化为⾼维空间的线性问题,这就将线性 SVM 扩展成了⾮线性 SVM,从⽽使得 SVM 可以处理⾮线性问题。
SVM 算法最初⽤来处理⼆分类问题,对于多分类问题,可以将多个⼆分类器组合在⼀起成为⼀个多分类器,从⽽处理多分类问题。⽅法有⼀对多法和⼀对⼀法。
下⼀节将介绍如何⽤ SVM 处理实际问题。
(本节完。)
推荐阅读:
欢迎关注作者,获取更多技术⼲货。

本文发布于:2024-09-22 01:41:36,感谢您对本站的认可!

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

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

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