为什么 KNN 不是“基于模型的”?

机器算法验证 机器学习 模型 k-最近邻
2022-03-06 08:50:52

ESL第 2.4 章似乎将线性回归归类为“基于模型”,因为它假设f(x)xβ,而对于 k 最近邻没有类似的近似值。但是这两种方法不是都在假设f(x)?

后来在 2.4 中,它甚至说:

  • 最小二乘假设f(x)由全局线性函数很好地逼近。
  • k-最近邻假设f(x)由一个局部常数函数很好地逼近。

KNN假设似乎也可以形式化(尽管不确定这样做是否会导致KNN算法以假设的方式f是线性导致线性回归)。

所以如果 KNN 实际上不是基于模型的,为什么?还是我误读了 ESL?

4个回答

直接比较kNN和线性回归是非常困难的,因为它们是非常不同的东西,但是,我认为这里的关键点是“建模”之间的区别f(x)”和“有关于f(x)”。

在进行线性回归时,需要专门建模f(x),通常是f(x)=wx+ϵ在哪里ϵ是高斯噪声项。您可以计算出最大似然模型等效于最小平方和误差模型。

另一方面,正如您的第二点所暗示的那样,KNN 假设您可以通过局部常数函数来近似该函数-x-ses,没有专门建模整个分布。

换句话说,线性回归通常会很好地了解f(x)对于一些看不见的x从仅仅的价值x,而 kNN 需要一些其他信息(即 k 个邻居)来预测f(x),因为值x,并且只是值本身,不会提供任何信息,因为没有模型f(x).

编辑:在下面重申这一点以更清楚地表达这一点(见评论)

很明显,线性回归和最近邻方法都旨在预测y=f(x)对于一个新的x. 现在有两种方法。线性回归假设数据落在一条直线上(加上减去一些噪声),因此 y 的值等于f(x)乘以直线的斜率。换句话说,线性表达式将数据建模为一条直线。

现在最近邻方法不关心数据是否看起来像(不建模数据),也就是说,它们不关心它是否是一条线、一条抛物线、一个圆等。它假设的只是f(x1)f(x2)将是相似的,如果x1x2是相似的。请注意,这个假设几乎适用于任何模型,包括我上面提到的所有模型。但是,NN 方法无法判断f(x)x(无论是直线,抛物线等),因为它没有这种关系的模型,它只是假设它可以通过查看近点来近似。

线性回归是基于模型的,因为它对数据的结构做出假设以生成模型。当您将数据集加载到统计程序中并使用它来运行线性回归时,输出实际上是一个模型:f^(X)=β^X. 您可以将新数据输入此模型并获得预测输出,因为您已经对输出变量的实际生成方式做出了假设。

使用 KNN 根本没有真正的模型 - 只是假设观察结果彼此接近X-space 可能在输出变量方面表现相似。您无需将新观察结果输入“KNN 模型”,您只需确定哪些现有观察结果与新观察结果最相似,并根据训练数据预测新观察结果的输出变量。

在讨论聚类方法时,术语基于模型与“基于分布”同义。线性回归做出分布假设(误差是高斯的)。KNN 不做任何分布假设。这就是区别。

kNN 是基于实例的

为了对新观察进行预测,您必须保留所有训练数据集,因为没有关于数据集的模型。

这就是 kNN 的工作原理:给定一个新观察值,我们将计算这个新观察值与训练数据集中所有其他观察值之间的距离。然后你得到邻居(最接近新观察的邻居)。

如果k=5,然后我们看 5 个最接近的观测值。“一个局部常数函数”意味着在选择了这 5 个观测值后,我们不再关心距离。它们是相同的,它们对预测具有相同的重要性。

怎么能找到型号?

现在,如果我们试图找到一个不是“局部常数”的函数,它将是一个正态分布。在这种情况下,您将获得一种称为线性判别分析或朴素贝叶斯的算法(取决于其他一些假设)。