专栏首页AI机器学习与深度学习算法机器学习入门 11-1 什么是SVM

机器学习入门 11-1 什么是SVM

全文字数:3178字

阅读时间:12分钟

前言

本系列是《玩转机器学习教程》一个整理的视频笔记。本小节主要介绍支撑向量机的核心思想,最终将支撑向量机的思想转换成最优化问题。针对线性可分的问题可以使用Hard Margin SVM,非线性可分的问题可以使用改进的Soft Margin SVM。

a

支撑向量机的思想

这一章将会介绍一个非常经典的机器学习算法:支撑向量机,简称SVM。支撑向量机的英文名称为Support Vector Machine,支撑向量机的简称SVM就是Support Vector Machine三个英文单词的首字母。支撑向量机的思想不仅可以解决分类问题还可以解决回归问题,这一章的前半部分主要介绍如何应用支撑向量机思想解决分类问题,这一章的最后会介绍如何应用支撑向量机的思想解决回归问题。

下图的二维特征平面中所有的数据样本点被分成了红色和蓝色两个类别。

▲二分类特征平面

逻辑回归算法解决这样的二分类问题本质就是在这个二维特征平面中找到一个决策边界:

  • 如果样本点在决策边界一侧,则认为样本点属于某个类别;
  • 如果样本点在决策边界的另外一侧,则认为样本点属于另外一个类别;

假设此时找到的决策边界如下图所示。

▲逻辑回归算法的决策边界

如果样本点在这根决策边界的上面,分类算法将其分类为红色。如果样本点在这根决策边界的下面,分类算法将其分类为蓝色。

不过对于一些样本数据来说分类的决策边界并不唯一。比如下图中的两根直线都是决策边界,它们都能将二维特征平面划分成两个部分,并正确的划分出样本点的类别。对于这种决策边界不唯一的问题,有一个专门的术语叫做不适定问题。

▲多个决策边界~不适定问题

回顾一下逻辑回归算法是如何选择最优的决策边界(解决不适定问题)?逻辑回归算法的解决不适定问题的思路:

  • 定义了一个Sigmoid概率函数,根据Sigmoid概率函数进行建模;
  • 通过交叉熵损失函数计算通过Sigmoid概率函数计算的概率值与真实的类别标签的损失值;
  • 通过最小化损失函数求解出最优的决策边界;

在逻辑回归算法中决定最优决策边界的损失函数完全是由供逻辑回归算法进行训练的训练数据集所决定。

支撑向量机解决不适定问题的思路与逻辑回归算法稍有不同。假设此时的决策边界如下图所示。

▲决策边界

这根决策边界非常好的将二维特征平面划分成了两个部分,并将训练数据集准确的分成了两个类别。不过对于机器学习算法来说在训练数据集上取得到好的效果并不是最终的目的,训练机器学习算法最终的目的是在未知数据上能够得到很好的效果,也就是所谓的泛化能力。换句话说,判断是不是一个好的决策边界,要看决策边界能不能很好的对那些未知的样本进行分类。

对于上面的决策边界,假设此时有一个未知的样本点(红色箭头标识的点)。

▲未知样本点

未知的样本点位于决策边界的下面,所以未知的样本点应该被划分成蓝色类别。不过相同类别的样本特征分布往往比较聚集,很显然将这个未知的样本点划分成红色类别更加合理,这意味着很有可能此时决策边界的泛化能力并不强。

根据上面的思想,下图中的直线就是那条泛化能力比较强的决策边界,此时选出距离这根泛化能力比较强的决策边界最近的样本点,就本例而言一共有三个样本点(两个红色类别样本点,一个蓝色类别样本点)。下面将这三个距离这根决策边界最近的样本点通过一条垂直于决策边界的直线进行连接。

▲距离泛化能力比较强的决策边界最近的三个点

此时泛化能力比较强的这根决策边界的特点就是距离这根决策边界最近的这三个样本点距离这根泛化能力比较强的决策边界尽可能远,同时又能够很好的将这些不同类别的样本区分开。此时找到的决策边界不仅能够将训练数据集很好的划分,而且在未知样本上的泛化能力也比较强。

支撑向量机的这种思想对于泛化能力的考量没有寄望在数据的预处理或者是为损失函数添加正则化的方式,而是将对泛化能力的考量直接放到了算法内部。这并不仅仅是一种直观的假设,这种思想的背后有严格的数学证明。在数学上,可以通过严格的证明出在一个不适定问题中使用支撑向量机的思想指导的决策边界泛化能力是比较强的。正因为在数学中有严格的证明,所以支撑向量机在统计学和机器学习领域中都是一个非常重要的方法。

前面提到支撑向量机找到的这个泛化能力比较强的决策边界的特点就是距离这根决策边界最近的样本点距离决策边界尽可能远(就本例而言为三个样本点),意思就是找到这些类别的样本中离决策边界最近的这些样本点,让这些样本点距离决策边界尽可能的远。就下图而言。

▲距离泛化能力比较强的决策边界最近的三个点

距离这个决策边界最近的三个样本点,又可以定义出两根平行于决策边界的直线。

▲平行于决策边界的两条直线

这两根平行直线相当于定义了一个区域,在这个区域之间不会有任何的样本点,而支撑向量机最终得到的决策边界其实就是区域中间的那根直线。

支撑向量机算法找到的那根泛化能力比较强的决策边界,称之为最优决策边界。

▲支撑向量

这个最优的决策边界距离两个类别中最近的样本点最远,对于这些最近的样本,也就是两个红色点和一个蓝色的点,它们被称为支撑向量,这也是支撑向量机名称的由来。这些支撑向量定义了一个区域,而最优的决策边界就是位于这个区域中间的那根直线。换句话说,支撑向量机找到的最优决策边界是由这些支撑向量所定义的,正因为如此这些支撑向量是我们支撑向量机算法中非常重要的元素。

下图中的三根直线之间都有一个距离,此时将三根直线之间的距离称为d。

▲支撑向量机最大化margin

显然上面的直线离最优决策边界之间的距离和下面这根直线离最优边界之间的距离相等,并且都是d。界定这个区域的两根直线之间的距离通常被称为margin,因此margin = 2 * d。

定义了margin,根据前面的介绍支撑向量机要做的事情就是最大化这个margin。在这里再次将机器学习算法的思路转化成为了一个最优值求解的问题,也就是将支撑向量机的思想转化为最大化margin。

b

Hard and Soft Margin SVM

到目前为止举的例子都是线性可分的,线性可分就是对于这些样本点来说,存在一根直线或者在高维空间中存在一个超平面可以将这些样本点正确的划分。

▲Hard Margin和Soft Margin

在线性可分的情况下,我们定义了margin,这样的算法通常被称为Hard Margin SVM,Hard Margin SVM顾名思义是一种非常严格,能够切切实实的找到一个决策边界,这个决策边界不仅将所有样本点进行划分,同时最大化margin这个值。不过在真实情况下,很多的样本数据都是线性不可分的,这种情况下,我们就需要对支撑向量机进行改进得到Soft Margin SVM算法。

下面几个小节将首先介绍Hard Margin SVM,不过Soft Margin SVM其实就是在Hard Margin SVM的基础上进行了一个改进,所以理解Hard Margin SVM的思想非常重要。

c

小结

本小节最后提到支撑向量机就是要最大化margin,这种说法本身是一个自然语言的说法。如果在算法中要最大化margin需要使用形式语言也就是用数学的语言将margin所代表的含义通过数学表达式来表达出来,之后要做的就是找到其中能够使margin最大的那组参数值。

本文分享自微信公众号 - AI机器学习与深度学习算法(AI-KangChen),作者:Chenkc

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一文搞懂简单线性回归

    线性回归是研究因变量y和自变量x之间数量上相互依存的线性关系。在机器学习中自变量x为样本特征,因变量y为目标值。比如在预测房价的机器学习任务中,每个样本x表示与...

    触摸壹缕阳光
  • [L3]实战语言模型~构建embedding层

    由于在公众号上文本字数太长可能会影响阅读体验,因此过于长的文章,我会使用"[L1]"来进行分段。这个系列将主要借鉴《Tensorflow实战Google学习框架...

    触摸壹缕阳光
  • 使用 HanLP 统计二元语法中的频次

    计算句子概率值的工具就是语言模型,但是随着句子长度的逐渐增大,语言模型会遇到下面两个问题:

    触摸壹缕阳光
  • springmvc之异常处理中ExceptionHanderExceptionResolver

    1、springmvc通过HandlerExceptionResolver处理程序的异常,包括Handler映射、数据绑定以及目标方法执行时发生的异常。

    绝命生
  • PWM(脉宽调制)——LED特效呼吸灯设计

      简述PWM   PWM——脉宽调制信号(Pulse Width Modulation),它利用微处理器的数字输出来实现,是对模拟电路控制的一种非常有效的技术...

    NingHeChuan
  • NLP1 —— Python自然语言处理环境搭建

    最近开始研究自然语言处理了,所以准备好好学习一下,就跟着《Python自然语言处理》这本书,边学边整理吧 安装 Mac里面自带了python2.7,所以直...

    用户1154259
  • 用python进行精细中文分句(基于正则表达式)

    中文分句,乍一看是一个挺简单的工作,一般我们只要找到一个【。!?】这类的典型断句符断开就可以了吗。 对于简单的文本这个做法是已经可行了...

    blmoistawinde
  • 学界 | 神经网络quine:自我复制 + 解决辅助任务

    选自arXiv 作者:Oscar Chang、Hod Lipson 机器之心编译 参与:程耀彤、路 近日,哥伦比亚大学的研究者发布论文,从生命的角度看待人工智能...

    机器之心
  • HDUOJ ----1709

    The Balance Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 ...

    Gxjun
  • 001.LVM简介

    LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或...

    木二

扫码关注云+社区

领取腾讯云代金券