使用 KNN 算法,假设 k=5。现在我尝试通过获取 5 个最近的邻居来对未知对象进行分类。如果在确定了 4 个最近的邻居之后,接下来的 2 个(或更多)最近的对象距离相同怎么办?应该选择这 2 个或更多对象中的哪个对象作为第 5 个最近邻?
4 回答
应该选择这 2 个或更多对象中的哪个对象作为第 5 个最近邻?
这真的取决于你想如何实现它。
大多数算法会做以下三件事之一:
- 包括所有相等距离的点,因此对于此估计,他们将使用 6 个点,而不是 5 个。
- 使用两个相等距离的“第一个”找到的点。
- 从找到的 2 个点中选择一个随机点(通常具有一致的种子,因此结果是可重现的)。
话虽如此,大多数基于径向搜索的算法都有一个固有的平稳性假设,在这种情况下,您选择上面的哪个选项实际上并不重要。一般来说,理论上,它们中的任何一个都应该提供合理的默认值(特别是因为它们是近似值中最远的点,并且应该具有最低的有效权重)。
如果你有另一个距离函数,你可以用它来打破平局。即使是一个糟糕的人也可以完成这项工作,如果你有一些启发式方法会更好。例如,如果您知道计算主要距离的特征之一更重要,则仅使用该特征来解决平局问题。
如果不是这种情况,请随机选择。在同一个测试集上多次运行你的程序,以检查随机选择是否重要。
另一个有趣的选择是像这样使用最近的邻居:
您计算从每个类到样本的 5 个最近邻居的距离:每个类将有 5 个距离。
然后你得到每个班级的平均距离。
较低的平均距离将是您分配给样本的类别。
这种方式对于重叠类的数据集是有效的。
如果您有 k=5,则查看前 5 条记录,查看这 5 条中最常见的结果。很可能你会得到两对,这会让你陷入困境,这会很艰难,因为这样你每对都有 50/50 的机会。
所以这让生活充满挑战。那么如何选择 k 的值呢?您可以使用一些指标在事后分析结果,但没有严格的 k 必须是什么规则,所以我会让自己轻松开始并坚持使用 k=3 而不是 k=5 然后向下通过查看预测的实际准确性,该道路研究了一些可以帮助您优化 k 值的策略。