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

公号:码农充电站pro
主页:https://codeshellme.github.iohtml

本篇来介绍SVM 算法,它的英文全称是 Support Vector Machine,中文翻译为支持向量机git

之因此叫做支持向量机,是由于该算法最终训练出来的模型,由一些支持向量决定。所谓的支持向量,也就是可以决定最终模型的向量。github

SVM 算法最初是用来解决二分类问题的,而在这个基础上进行扩展,也可以处理多分类问题以及回归问题算法

1,SVM 算法的历史

早在1963 年,著名的前苏联统计学家弗拉基米尔·瓦普尼克在读博士期间,就和他的同事阿列克谢·切尔沃宁基斯共同提出了支持向量机的概念。shell

但因为当时的国际环境影响,他们用俄文发表的论文,并无受到国际学术界的关注。安全

直到 20 世纪 90 年代,瓦普尼克随着移民潮来到美国,然后又发表了 SVM 理论。此后,SVM 算法才受到应有的重视。现在,SVM 算法被称为最好的监督学习算法之一。dom

2,线性可分的 SVM

SVM 算法最初用于解决二分类问题,下面咱们以最简单的二维平面上的,线性可分的数据点来介绍支持向量机。函数

假设平面上有一些不一样颜色的圆圈,这些圆圈是线性可分的,也就是可用一条直线分开。以下:学习

在这里插入图片描述

如今想在平面上画出一条直线,将这些圆圈分开。经过观察,你很容易就能画出一条直线,以下:优化

在这里插入图片描述

可是这样的直线会有不少,它们都能正确的划分两类圆圈,就像下面这幅图中的同样:

在这里插入图片描述

那么哪条直线才是最好的呢?经过肉眼咱们没法找到那条最好的直线。可是就上图中的三条直线而言,明显你会以为中间那条红线,会比两侧的两条线要更好。

由于,若是有一些圆圈往中间靠拢,那么两侧的那两条直线就不能将两种圆圈划分开了。而中间那条直线依然能够划分两种圆圈。以下:

在这里插入图片描述

所以,中间那条红线会比两侧的两条直线更好,更安全。

虽然经过肉眼咱们能知道哪条直线更好,可是怎样才能找到最好的那条直线呢?而 SVM 算法就能够帮咱们找到那条最好的直线。

3,找到最好的直线

下面咱们来看下如何找到最好的那条直线。

首先,找两条平行线,其中一条线通过一个绿色圆圈,剩下的全部绿色圆圈都在这条线的左侧;另外一条线通过一个淡蓝色的圆圈,剩下的全部淡蓝色圆圈都在这条线的右侧。

以下图所示的两条平行线 L1L2L1 通过了 A 圆圈,L2 通过了 B 圆圈:

在这里插入图片描述

接下来,让 L1A 为中心进行旋转,L2B 为中心进行旋转,在旋转的过程当中,要保证下面两个原则:

  • L1 与 L2 保持平行。
  • 除 A 以外的全部绿色圆圈都在 L1 的左侧,除 B以外的全部淡蓝色圆圈都在 L2 的右侧。

在保证上面两个原则的前提下旋转,直到其中的一条线通过第三个圆圈为止。以下:

在这里插入图片描述

此时,L2 通过了第三个圆圈 C

到此为止,咱们要找的那条最好的,可以划分两种圆圈的直线,就是 L1L2 中间的那条直线,以下图中的 L3

在这里插入图片描述

4,SVM 算法

SVM 算法的求解过程,就是寻找那条最佳直线的过程。

在 SVM 算法中,上面的 A,B,C 三个点叫做支持向量,直线 L3 是最佳直线,扩展到多维空间,这条直线叫做超平面。SVM 算法的目的就是找到这个超平面,这个超平面是划分数据点的最佳平面。

关于支持向量,更重要的是,SVM 训练出的最终模型,只与支持向量有关,这也是支持向量机的名称来源。就像 SVM 的发明者瓦普尼克所说的那样:支持向量机这个名字强调了这类算法的关键是如何根据支持向量构建出解,算法的复杂度也主要取决于支持向量的数目

直线 L1L2 之间有无数条平行直线均可以将两类圆圈分开,支持向量到这些平行直线的距离叫做分类间隔,而间隔最大的那条直线就是最佳直线,也就是 L3

多维空间中的超平面能够用线性方程来表示:

在这里插入图片描述

其中的 W 为法向量,它决定了超平面的方向。b 为截距,它决定了超平面与空间原点的距离。

超平面将特征空间分为两部分,法向量所指向的一侧的数据为正类,标记为 +1;另外一侧的数据为负类,标记为 -1

二维坐标系中的线性方程以下图所示:

在这里插入图片描述

支持向量机的学习过程是一个凸二次规划问题,能够用 SMO 算法高效求解。

SMO 全称为 Sequential Minimal Optimization,中文称为序列最小优化,由 John Platt1996 年发表。

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 处理实际问题。

(本节完。)


推荐阅读:

AdaBoost 算法-分析波士顿房价数据集

RandomForest 随机森林算法与模型参数的调优

决策树算法-实战篇-鸢尾花及波士顿房价预测

Apriori 算法-如何进行关联规则挖掘

Logistic 回归-原理及应用


欢迎关注做者公众号,获取更多技术干货。

码农充电站pro

相关文章
相关标签/搜索