您的位置  > 互联网

给你一个坏苹果和一把刀,这一刀你怎么切?

支持向量机(SVM)是传统机器学习的经典算法之一。 它是监督学习的一种,通常用于分类。 本文没有任何复杂的公式。 简单介绍了SVM的原理,方便大家直观的理解。

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

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

现在研究两个分类器A和B。在这些现有点上,它们的分类效果是相同的。 但如果我们用它们对点进行分类,对于某些点,分类结果明显不同。 那么哪种分类更好呢?

我个人认为没有绝对的好或坏。 但SVM的理论认为A的分类效果更好。 它基于 A 的“分类区间”大于 B 的“分类区间”这一事实。 要直接理解什么是“分类区间”,请看下图:

我们平行移动这条直线,直到它首先接触蓝色方块或红色方块上的某个点。 上图中两条虚线之间的距离就是“分类区间”,直线运动过程中最先接触到的一个或几个点就是点,也就是虚线上的几个点,术语称为“支持向量”。

为什么这些点如此特别并且名副其实? 因为决策面的方向和位置完全取决于选择哪些样本作为支持向量。

所以说白了,SVM的目标就是找到这样一条使“分类区间”最大化的直线。 找到的直线就是 SVM 分类器。 那么对于未知点,我们可以将坐标带入这条小于零的直线中。 如果大于零,则将被分类到红色方块中。 也就是说,训练好的分类器将用于对未知点进行分类。

那么如何找到这条正确的直线呢?

首先,根据点到直线距离的定义,会有一个距离函数f(x)。 求该函数 f(x) 的最大值。 但在寻找最大值的过程中,并不是无拘无束的。 有一些限制。 例如,这条直线的斜率只能在一定范围内。 如果你想象旋转这条直线,在某些时候它肯定行不通。 没有办法正确地将红球和篮球分开。 同样,截距也不能任意选择。 所以最终的问题就是求某个函数在约束条件下的最大值。

求解的过程就是一堆麻烦的概念:

拉格朗日乘子法:将约束纳入目标函数。

KKT条件:将不等式约束转换为等式约束。

拉格朗日对偶性:将难以解决的问题转化为容易解决的对偶问题。

核函数:将原本线性不可分的点投影到更高维度,使其线性可分。

回到最初的问题,它实际上是一个三维空间中的SVM分类问题。 切面就是分类面。 无论这个分类面的分类效果好还是不符合我们的预期,我们都需要调整参数。 如果我切完之后自己吃的话,我一定会想把剩下的部分都切掉,不要有腐烂的部分。 如果我是一个水果摊贩,我可能会想保留所有好的水果,即使剩下的夹杂着一点点坏的东西。 您是否考虑过准确度、精确度和召回率?