26

使用 KNN 算法,假设 k=5。现在我尝试通过获取 5 个最近的邻居来对未知对象进行分类。如果在确定了 4 个最近的邻居之后,接下来的 2 个(或更多)最近的对象距离相同怎么办?应该选择这 2 个或更多对象中的哪个对象作为第 5 个最近邻?

4

4 回答 4

26

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

这真的取决于你想如何实现它。

大多数算法会做以下三件事之一:

  1. 包括所有相等距离的点,因此对于此估计,他们将使用 6 个点,而不是 5 个。
  2. 使用两个相等距离的“第一个”找到的点。
  3. 从找到的 2 个点中选择一个随机点(通常具有一致的种子,因此结果是可重现的)。

话虽如此,大多数基于径向搜索的算法都有一个固有的平稳性假设,在这种情况下,您选择上面的哪个选项实际上并不重要。一般来说,理论上,它们中的任何一个都应该提供合理的默认值(特别是因为它们是近似值中最远的点,并且应该具有最低的有效权重)。

于 2011-02-03T18:40:38.283 回答
6

如果你有另一个距离函数,你可以用它来打破平局。即使是一个糟糕的人也可以完成这项工作,如果你有一些启发式方法会更好。例如,如果您知道计算主要距离的特征之一更重要,则仅使用该特征来解决平局问题。

如果不是这种情况,请随机选择。在同一个测试集上多次运行你的程序,以检查随机选择是否重要。

于 2011-07-06T07:42:57.343 回答
6

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

  • 您计算从每个类到样本的 5 个最近邻居的距离:每个类将有 5 个距离。

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

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

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

于 2011-05-09T11:54:43.683 回答
0

如果您有 k=5,则查看前 5 条记录,查看这 5 条中最常见的结果。很可能你会得到两对,这会让你陷入困境,这会很艰难,因为这样你每对都有 50/50 的机会。

所以这让生活充满挑战。那么如何选择 k 的值呢?您可以使用一些指标在事后分析结果,但没有严格的 k 必须是什么规则,所以我会让自己轻松开始并坚持使用 k=3 而不是 k=5 然后向下通过查看预测的实际准确性,该道路研究了一些可以帮助您优化 k 值的策略。

于 2019-01-31T02:06:13.637 回答