在我的教科书摘录中,它表示在运行此算法时减少K
的值实际上会增加复杂性,因为它必须运行更“平滑”。
任何人都可以向我解释这个吗?
我的理解是,在1NN
中,您可以将其提供给您的训练集。您在测试集上进行测试。假设您的测试集中有一个点。它在训练集中找到与它最接近的一个点,并返回该值。
当然,这比查找3NN
中最近的3个点,添加它们的值并除以3更复杂?
我误解或忽视了什么?
答案 0 :(得分:5)
在读这个公理时我有同样的难以置信的时刻; 更高值的参数降低复杂度似乎有点违反直觉。
要对此进行直觉,让我们比较1最近邻训练模型和N> 1最近邻模型。让我们使用带有二元分类的简化二维图(双特征数据集)(每个"点"具有A或B的类或标签)。
使用1最近邻模型,训练集的每个示例可能预测A类或B类区域的中心,其大多数邻居是预测区域的中心区域其他课程。你的情节可能看起来像世界各地的种族,语言或宗教地图之一,它们深深地交织在一起(巴尔干或中东浮现在脑海中):小块复杂的形状和交替的颜色,没有明显的逻辑,因此"高度复杂性"。
如果你增加k,预测每个类的区域将更加平滑",因为它是决定任何点类的k个最近邻居的大多数。因此,这些区域将具有更少的数量,更大的尺寸以及可能更简单的形状,例如世界同一地区的国家边界的政治地图。因此"复杂性降低"。
(直觉和来源from this course。)
答案 1 :(得分:0)
问:k-NN
比NN
更快吗?
答:否。
有关详情,请参阅下文。
一般来说NN
搜索更简单,因此当{k}不等于1时,需要的工作量比k-NN
少。
看看我的回答here,我基本上解释了NNS
(*最近邻搜索)的概念。
在kNN
案例中,通用算法可以找到顶部NN
,然后是第二个顶部NN
,依此类推,直到k
{{1找到了。
另一个,最有可能看到方法是拥有NN
,其中包含数字priority_queue
中的k
,并按照他们与<的距离排序em>查询点。
为了使通用算法能够找到多个邻居,它必须访问更多的节点/叶子,这意味着更多的步骤,从而增加了时间复杂度。
很明显,当你增加k时,精度可能增加,但计算成本也会增加。
如本blog所述。
我怀疑你在谈论你问题中的一个特定算法,但在我看来,不知道哪个,没有更好的答案。