k-NN分类器的预测方差和模型偏差

Posted

技术标签:

【中文标题】k-NN分类器的预测方差和模型偏差【英文标题】:Prediction variance and model bias of k-NN classifier 【发布时间】:2015-10-22 17:03:30 【问题描述】:

我相信很多人已经研究过并且正在研究 K-NN 算法,我就是其中之一。

我刚刚遇到了这样一句话:“对于任何给定的问题,较小的 k 值将导致预测的较大方差。或者,将 k 设置为较大的值可能会导致较大的模型偏差。”,我认为这对很多人来说是直截了当的,但对我来说却不是。

如果你已经知道它的意思,请帮我理解它是什么。

【问题讨论】:

但是这里与编码有关的问题在哪里? 这个问题涉及特定的软件算法。它本身没有问号,带有问号等,但我认为它在适当的 StackExchange 中。 【参考方案1】:

好的,让我们从头开始。

1. k-NN 是如何工作的?

您有 n(k 比 n 小得多)点的基数,您知道所需的答案 - 您可能已经从 oracle 获得它。该集合称为训练集,因为您将其提供给虚拟实体(k-NN 分类器),以便它可以学习所需的结果。我们所说的“点”是指单个示例,用某个空间中的特征进行描述,以便我们计算距离。

当要求对新点进行分类(识别)时,您将在 n 个点中搜索最接近新点的 k 个实例。 “最近”是指“特征向量之间的距离最短”。 然后,您将根据对这些 k 点的投票来选择答案。例如,如果 k=5 并且 3 点表示新的属于 A 类,而 2 - 属于 B 类,则您假设新的属于 A 类。您必须指定一些平局策略 - 可能回落到 1- NN 并返回最近点的类。

2。 “对于任何给定的问题,较小的 k 值将导致预测的较大差异。”

我假设作者所说的“预测差异很大”是指“在对大量数据进行分类时出现许多错误”。

为什么会这样?

因为 k-NN 非常幼稚。很直观,接近点可能属于同一类,但并非总是如此。例如,见下图 A 点。如果我们使用 k=1,那么最近的点将是红色的,即使答案应该是绿色的。对于 k=2,我们在红色和绿色之间打成平手并选择红色,因为它更接近。

来源:English wiki,稍作手工修改

最后,IMO这句话的意思是“如果k很小,你可能会得到很多错误的结果”。

3. “将 k 设置为较大的值可能会导致较大的模型偏差。”

“偏见”是一种倾向于给出一个答案的频率高于另一个答案,即使问题分布均匀。可能会出现较大的k,但问题是“何时”。

嗯,“何时”的答案是“当您的训练集有偏差时”。这里的“有偏见”意味着某些类比其他类用更多的点表示。

考虑一个训练集,其中 + 类有 5 分,* 类有更多分,如下图所示。

它可能不代表类之间的真实关系,但这就是您拥有的所有数据。在下面的图片中,类可能是线性可分的,并且点标记为红色?可能是+。

如果您使用 k=10,您几乎总能得到答案 *。最好的情况是用红色标记的点? - 您将获得所有 5 个 + 分,另外 5 个 * 分并使用 + 解决 1-NN 的平局,所以答案是正确的。

无论如何,在大多数情况下,您的分类器将提供一个特定的答案,而这正是偏差 - 将更频繁地返回一个类。

但在前面的示例中并非如此 - 正如句子所述,它可能导致较大的偏差,但并非必须如此。

最后,这句话的意思是,如果你的数据集是有偏差的,那么你的分类器对于大 k 比小 k 更有可能有偏差。

来源:我自己的

4.总结和进一步阅读。

我希望这会对你澄清一些事情。

如果您需要更多,请参阅this。

【讨论】:

感谢“FilipMalczak”的友好解释。它解决了我的问题。

以上是关于k-NN分类器的预测方差和模型偏差的主要内容,如果未能解决你的问题,请参考以下文章

GBDT理解

scikit_learn 官方文档翻译(集成学习)

学习曲线(高偏差/高方差)为啥测试学习曲线变平

14. 偏差-方差权衡

14. 偏差-方差权衡

R语言非参数方法:使用核方法和K-NN(k近邻算法)分类预测心脏病数据