K最近邻算法

时间:2011-02-03 18:37:27

标签: algorithm classification knn

也许我很傻但是我找不到令人满意的答案: 使用KNN算法,比如说k = 5。现在我尝试通过获取其最近的5个邻居来对未知对象进行分类。该怎么做,如果在确定4个最近邻居后,接下来的2个(或更多)最近的物体具有相同的距离?应该选择这两个或更多的哪个对象作为第五个最近邻居?

提前致谢:)

5 个答案:

答案 0 :(得分:17)

  

应选择这2个或更多的哪个对象作为第5个最近邻居?

这实际上取决于你想要如何实现它。

大多数算法都会执行以下三种操作之一:

  1. 包括所有等距离点,因此对于此估计,它们将使用6个点,而不是5个点。
  2. 使用两个相等距离的“第一个”找到的点。
  3. 从找到的2个点中随机选择(通常使用一致的种子,因此结果可重现)。
  4. 话虽这么说,大多数基于径向搜索的算法都有固有的平稳性假设,在这种情况下,选择上面哪个选项真的无关紧要。一般来说,理论上它们中的任何一个都应该提供合理的默认值(特别是因为它们是近似中的最远点,并且应该具有最低的有效权重)。

答案 1 :(得分:6)

另一个有趣的选择是使用最近的邻居:

  • 您计算每个班级与样本的5个最近邻居的距离:每个班级将有5个距离。

  • 然后你得到每个班级的平均距离。

  • 较低的平均距离将是您将分配给样本的类。

这种方式对重叠的类的数据集有效。

答案 2 :(得分:5)

如果你有另一个距离功能,你可以用它打破平局。即使是坏人也可以胜任,如果你有一些启发式的话,那就更好了。例如,如果您知道计算主要距离的某个功能更重要,请仅使用此功能来解决问题。

如果情况并非如此,请随意挑选。在相同的测试集上运行几次你的程序,以检查随机选择是否重要。

答案 3 :(得分:2)

也许你可以试试模糊的。对于k的选择,我认为应该进行大量的实验以获得最佳的分类结果。

答案 4 :(得分:0)

如果k = 5,则查看前五个记录,查看这五个记录中最常见的结果。您可能会得到两对,这将使您陷入束缚,这将很艰难,因为这样一来,每对您都有50/50的机会。

这使生活充满挑战。那么,如何选择k的值呢?事实发生后,可以使用一些度量标准来分析结果,但是对于k必须是什么没有严格的规定,因此我可以轻松地开始并坚持使用k = 3(而不是k = 5,然后降低)我们会通过查看预测的实际准确性来研究一些可以帮助您优化k值的策略。