直线机

支持向量机SVM的通俗介绍零基础

发布时间:2022/6/24 20:01:43   

给你一个坏苹果和一把刀,你要切掉坏的部分剩下好的继续吃,只能来一刀,这一刀你怎么切?

支持向量机(SupportVectorMachine,SVM)是传统机器学习的经典算法之一,属于有监督学习的一种,常用于分类。本文没有任何复杂公式,通俗介绍一下SVM的原理,便于各位直观理解。

为便于理解,以二维举例。假设二维平面上有如下的一些点,有红色和蓝色

现在我们的目的是找到一条直线,把红色和蓝色分开。很明显,将上述两类数据点分开的直线显然不止一条。下图(b)和(c)分别给出了A、B两种不同的分类方案,其中黑色实线为分界线,术语称为“决策面”。每个决策面对应了一个线性分类器。

现在研究一下A和B这两个分类器。在现有的这些点上看,它们的分类效果是一样的。但如果拿他们去分类别的点,对于某些点,分类结果显然是有差异的。那到底哪个分类效果更好呢?

我个人认为是没有绝对意义上的好坏之分的。但SVM这个理论认为,A的分类效果更好,它的依据是,A的“分类间隔”比B要大。直接理解什么是“分类间隔”,看下图:

我们平行移动这条直线,直到它首先碰到蓝方或红方的某个点,上图两条虚线之间的距离就是“分类间隔”,而移动直线过程中首先碰到的那一个或几个点,就是虚线上的几个点,术语就叫“支持向量”。

为什么这几个点那么特殊,配拥有专属名称?因为决策面的方向和位置完全取决于选择哪些样本作为支持向量。

所以说白了,SVM的目标就是,找到这样一条直线,使得“分类间隔”最大,找到的这条直线就是SVM分类器,然后对于未知的点,我们就可以将坐标带入这条直线,小于零就分类到蓝方,大于零就分类到红方,也即用训练出的分类器去分类未知点。

那怎么找到这条对的直线呢?

首先,根据点到直线的距离的定义会有一个距离函数f(x),求这个函数f(x)的最大值。但求最大值过程中他不是无拘无束的,是有一些约束条件的,比如这条直线的斜率肯定只能在一定的范围内,你想象一下转动这条直线,在转到某些时候肯定是没法正确分隔红球和篮球的。同样截距也不能随便取。所以最后的问题就是在有约束条件下求某个函数的最大值。

求解过程中就是一堆让人头疼的概念:

拉格朗日乘子法:把约束条件搞到目标函数里面去。

KKT条件:把约束条件为不等式的,转变为约束条件为等式。

拉格朗日对偶:把不容易解决的问题,转变为容易解决的对偶问题。

核函数:把本来线性不可分的点,投射到更高维度上去,使其变得线性可分。

回到开头的问题,其实就是一个三维空间下的SVM分类问题。切下去的那一刀就是分类面,这个分类面的分类效果好不好,符不符合我们的预期,那就要通过参数调整。如果我是切完了自己吃,我肯定希望切剩下的里面,一点烂的都不要。如果我是个水果摊贩,我或许希望把所有好的都要留下来,哪怕剩下的里面混了一点点烂的也能接受。有没有想到准确率、精准率,召回率?

预览时标签不可点收录于合集#个上一篇下一篇
转载请注明:http://www.aideyishus.com/lkgx/719.html
------分隔线----------------------------

热点文章

  • 没有热点文章

推荐文章

  • 没有推荐文章