为什么K-最近邻居中的K减少会增加复杂性?

时间:2014-05-20 18:57:52

标签: algorithm artificial-intelligence complexity-theory nearest-neighbor

在我的教科书摘录中,它表示在运行此算法时减少K的值实际上会增加复杂性,因为它必须运行更“平滑”。

任何人都可以向我解释这个吗?

我的理解是,在1NN中,您可以将其提供给您的训练集。您在测试集上进行测试。假设您的测试集中有一个点。它在训练集中找到与它最接近的一个点,并返回该值。

当然,这比查找3NN中最近的3个点,添加它们的值并除以3更复杂?

我误解或忽视了什么?

2 个答案:

答案 0 :(得分:5)

在读这个公理时我有同样的难以置信的时刻; 更高值的参数降低复杂度似乎有点违反直觉。

要对此进行直觉,让我们比较1最近邻训练模型和N> 1最近邻模型。让我们使用带有二元分类的简化二维图(双特征数据集)(每个"点"具有A或B的类或标签)。

使用1最近邻模型,训练集的每个示例可能预测A类或B类区域的中心,其大多数邻居是预测区域的中心区域其他课程。你的情节可能看起来像世界各地的种族,语言或宗教地图之一,它们深深地交织在一起(巴尔干或中东浮现在脑海中):小块复杂的形状和交替的颜色,没有明显的逻辑,因此"高度复杂性"。

1-nearest neighbour

如果你增加k,预测每个类的区域将更加平滑",因为它是决定任何点类的k个最近邻居的大多数。因此,这些区域将具有更少的数量,更大的尺寸以及可能更简单的形状,例如世界同一地区的国家边界的政治地图。因此"复杂性降低"。

k-nearest neighbours

(直觉和来源from this course。)

答案 1 :(得分:0)

问:k-NNNN更快吗?

答:否。

有关详情,请参阅下文。

一般来说NN搜索更简单,因此当{k}不等于1时,需要的工作量比k-NN少。

看看我的回答here,我基本上解释了NNS(*最近邻搜索)的概念。

kNN案例中,通用算法可以找到顶部NN,然后是第二个顶部NN,依此类推,直到k {{1找到了。

另一个,最有可能看到方法是拥有NN,其中包含数字priority_queue中的k,并按照他们与<的距离排序em>查询点。

为了使通用算法能够找到多个邻居,它必须访问更多的节点/叶子,这意味着更多的步骤,从而增加了时间复杂度。

  

很明显,当你增加k时,精度可能增加,但计算成本也会增加。

如本blog所述。

我怀疑你在谈论你问题中的一个特定算法,但在我看来,不知道哪个,没有更好的答案。