Machine learning K近邻算法

Machine learning K近邻算法,machine-learning,classification,knn,Machine Learning,Classification,Knn,使用KNN算法,假设k=5。现在,我尝试通过获取一个未知对象的5个最近邻来对其进行分类。如果在确定4个最近的邻居后,接下来的2个(或更多)最近的对象具有相同的距离,该怎么办?这两个或更多对象中的哪一个应被选为第五近邻 这两个或更多对象中的哪一个应被选为第五近邻 这实际上取决于您想要如何实现它 大多数算法会做以下三件事之一: 包括所有等距离点,因此对于此估计,他们将使用6个点,而不是5个点 使用两个相等距离的“第一个”找到点 从找到的2个点中选择一个随机点(通常具有一致的种子,因此结果是可复制的)

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

这两个或更多对象中的哪一个应被选为第五近邻

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

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

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

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

    另一个有趣的选择是使用最近邻点,如下所示:

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

    • 然后你得到每节课的平均距离

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


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

    如果你有另一个距离函数,你可以用它来打破僵局。即使是一个坏的也能做这项工作,如果你有一些启发的话,效果会更好。例如,如果您知道用于计算主距离的特征之一更重要,请仅使用此特征来解决此问题


    如果不是这样,就随意挑选。在同一测试集上运行程序数次,以检查随机选择是否重要。

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


    所以这让生活充满挑战。那么,如何选择k的值呢?有一些指标可以用于事后分析结果,但没有关于k必须是什么的严格规则,因此我会让你自己轻松一点,从一开始就坚持k=3,而不是k=5,然后继续研究一些可以帮助你优化k值的策略,通过观察你预测的实际准确性

    啊,好的,非常感谢:)(这个信息应该添加到维基百科关于KNN的文章中…)我投票结束这个问题,因为它不是关于在中定义的编程,而是关于ML理论和/或方法论-请参阅机器学习中的介绍和说明。