所有机器学习算法都线性分离数据吗?

机器算法验证 机器学习
2022-01-31 13:47:20

我是编程和机器学习的爱好者。仅仅几个月前,我开始学习机器学习编程。像许多没有定量科学背景的人一样,我也开始通过修改广泛使用的 ML 包 (caret R) 中的算法和数据集来学习 ML。

不久前,我读了一篇博客,其中作者谈到了线性回归在 ML 中的用法。如果我没记错的话,他谈到了所有机器学习最终如何使用某种“线性回归”(不确定他是否使用了这个确切的术语),即使对于线性或非线性问题也是如此。那一次我不明白他的意思。

我对使用机器学习处理非线性数据的理解是使用非线性算法来分离数据。

这是我的想法

假设对线性数据进行分类,我们使用线性方程,对于非线性数据,我们使用非线性方程说y=mx+cy=sin(x)

在此处输入图像描述

此图取自支持向量机的 sikit learn 网站。在 SVM 中,我们为 ML 目的使用了不同的内核。所以我最初的想法是线性内核使用线性函数分离数据,而 RBF 内核使用非线性函数分离数据。

但后来我看到了这个作者谈论神经网络的博客。

为了对左子图中的非线性问题进行分类,神经网络对数据进行变换,最终我们可以对右子图中的变换数据使用简单的线性分离

在此处输入图像描述

我的问题是最终是否所有机器学习算法都使用线性分离来分类(线性/非线性数据集)?

2个回答

答案是No。user20160有一个完美的答案,我将添加3个可视化的例子来说明这个想法。请注意,这些图可能对您查看“最终决策”是否为线性形式没有帮助,但可以让您对树、提升和 KNN 有所了解。

我们将从决策树开始。有许多分裂,它是一个非线性的决策边界。而且我们不能认为之前的所有拆分都是“特征转换”,最后有一个最终决策线。

另一个例子是boosting模型,它聚合了很多“弱分类器”,最终的决策边界不是线性的。您可以认为这是一个复杂的代码/算法来进行最终预测。

最后,考虑 K 最近邻(KNN)。它也不是末端层的线性决策函数。此外,KNN 中没有“特征变换”。

这是 2D 空间中的三个可视化(从上到下的 Tree、Boosting 和 KNN)。基本事实是 2 个螺旋线代表两个类别,左侧子图是模型的预测,右侧子图是模型的决策边界。

树决策边界

提升决策边界

KNN 决策边界


编辑:@ssdecontrol 在这篇文章中的回答给出了另一个视角。

这取决于我们如何定义“转换”

将数据分成两部分的任何函数都可以转换为这种形式的线性模型,具有截距和单个输入(数据点在分区的哪个“侧”的指示符)。重要的是要注意决策函数和决策边界之间的区别。

一些算法使用超平面(即线性函数)来分离数据。一个突出的例子是逻辑回归。其他人使用超平面在非线性变换后分离数据(例如神经网络和具有非线性内核的支持向量机)。在这种情况下,决策边界在原始数据空间中是非线性的,但在数据映射到的特征空间中是线性的。在 SVM 的情况下,内核公式隐含地定义了这种映射。其他算法在数据空间的局部区域(例如决策树)中使用多个分裂超平面。在这种情况下,决策边界是分段线性的(但总体上是非线性的)。

然而,其他算法具有非线性决策边界,并且不是根据超平面制定的。一个突出的例子是 k 最近邻分类。集成分类器(例如,通过提升或装袋其他分类器产生)通常是非线性的。