SVM直观理解

https://tangshusen.me/2018/10/27/SVM/

https://www.bilibili.com/video/BV16T4y1y7qj/?spm_id_from=333.337.search-card.all.click\&vd_source=8272bd48fee17396a4a1746c256ab0ae

SVM是什么? 先来看看维基百科上对SVM的定义:

支持向量机(英语:support vector machine,常简称为SVM,又名支持向量网络)是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。

如果从未接触SVM的话,维基的这一大段解释肯定会让你一头雾水。简单点讲,SVM就是一种二类分类模型,他的基本模型是的定义在特征空间上的间隔最大的线性分类器,SVM的学习策略就是间隔最大化。

我们先来看看下面这个图:

图1.1

图中有分别属于两类的一些二维数据点和三条直线。如果三条直线分别代表三个分类器的话,请问哪一个分类器比较好?

我们凭直观感受应该觉得答案是H3。首先H1不能把类别分开,这个分类器肯定是不行的;H2可以,但分割线与最近的数据点只有很小的间隔,如果测试数据有一些噪声的话可能就会被H2错误分类(即对噪声敏感、泛化能力弱)。H3以较大间隔将它们分开,这样就能容忍测试数据的一些噪声而正确分类,是一个泛化能力不错的分类器。

对于支持向量机来说,数据点若是𝑝维向量,我们用𝑝−1维的超平面来分开这些点。但是可能有许多超平面可以把数据分类。最佳超平面的一个合理选择就是以最大间隔把两个类分开的超平面。

目标:

因此,SVM选择能够使离超平面最近的数据点的到超平面距离最大的超平面。

以上介绍的SVM只能解决线性可分的问题,为了解决更加复杂的问题,支持向量机学习方法有一些由简至繁的模型:

  • 线性可分SVM

当训练数据线性可分时,通过硬间隔(hard margin,什么是硬、软间隔下面会讲)最大化可以学习得到一个线性分类器,即硬间隔SVM,如上图的的H3。

为了找到最大间隔超平面,我们可以先选择分离两类数据的两个平行超平面,使得它们之间的距离尽可能大。在这两个超平面范围内的区域称为"间隔(margin)",最大间隔超平面是位于它们正中间的超平面。

  • 线性SVM

当训练数据不能线性可分但是可以近似线性可分时,通过软间隔(soft margin)最大化也可以学习到一个线性分类器,即软间隔SVM。

软间隔目的是在间隔距离和错误大小间找到一个平衡

  • 非线性SVM

当训练数据线性不可分时,通过使用核技巧(kernel trick)和软间隔最大化,可以学习到一个非线性SVM。

此时不能通过一条直线将他有效区分

进行升维转换,增加一个维度

  1. 通过维度转换函数将低维数据进行升维
  2. 在高维度下求解SVM模型,找到对应的分隔超平面

但是维度转换函数需要更多的存储数据需求

通过选取合适的核公式,可以不用知道具体的维度转换函数,直接获得数据的高维度差异

相关推荐
雪碧聊技术7 小时前
深度学习、机器学习、人工智能三者的关系
人工智能·深度学习·机器学习
β添砖java7 小时前
机器学习初级
人工智能·机器学习
Mz12217 小时前
day05 移动零、盛水最多的容器、三数之和
数据结构·算法·leetcode
SoleMotive.8 小时前
如果用户反映页面跳转得非常慢,该如何排查
jvm·数据库·redis·算法·缓存
念越8 小时前
判断两棵二叉树是否相同(力扣)
算法·leetcode·入门
qq_17082750 CNC注塑机数采8 小时前
【Python TensorFlow】 TCN-GRU时间序列卷积门控循环神经网络时序预测算法(附代码)
python·rnn·神经网络·机器学习·gru·tensorflow·tcn
~~李木子~~9 小时前
中文社交媒体情感分析实战:基于B站评论的机器学习与深度学习对比
深度学习·机器学习·媒体
ghie90909 小时前
线性三角波连续调频毫米波雷达目标识别
人工智能·算法·计算机视觉