kNN - 如果超过 K 个观测值与集群质心的距离相同,会发生什么情况

数据挖掘 机器学习 分类
2022-03-10 12:43:31

编辑答案部分指出我混淆了k-means和kNN。事实上,我在考虑 kNN,但写了 k-means,因为我对这个话题还是新手并且经常混淆这些术语。所以这是改变的问题。

我今天在看 kNN,有些事情让我觉得很奇怪,或者 - 更准确地说 - 我无法找到关于以下情况的信息。

想象一下,我们为某个数据集选择 kNN。我想尽可能保持一般性,因此k此处不详述。此外,我们在某个点上选择一个观察值,其中满足在邻域中的要求的邻居数量实际上比指定的要多k.

如果我们被限制使用特定的 K 并且因此不能改变邻域的结构(邻域的数量),那么这里应该应用什么标准/标准。哪些观察将被忽略,为什么?这也是经常发生的问题,还是异常?

3个回答

您正在混淆 kNN 分类和 k-means。

在 k-means 的中心附近有超过 k 个观测值并没有错。事实上,这是通常的情况;你不应该选择太大的k。如果您有 100 万点,则 100 的 ak 可能没问题。K-means 不保证特定大小的集群最坏的情况是,k-means 中的集群可能只有一个元素(异常值)甚至消失。

您可能打算写但混淆了,如果一个点与两个中心的距离相同,该怎么办

从统计的角度来看,这并不重要。两者都有相同的平方误差。

从实现的角度来看,选择任何确定性规则,以使您的算法收敛并且不会进入重新分配的无限循环。

更新:关于 kNN 分类:

有很多方法可以解决这个问题,令人惊讶的是,它们的效果通常和另一种一样好,但没有明显的优势:

  1. 从绑定的对象中随机选择一个获胜者
  2. 以同等权重考虑所有因素
  3. 如果你有 m 个物体在你期望只有 r 的相同距离处,那么在每个物体上放置一个 r/k 的权重。

例如k=5。

distance   label   weight
    0        A       1
    1        B       1
    1        A       1
    2        A      2/3
    2        B      2/3
    2        B      2/3

产生 A=2.66,B=2.33

随机选择与其他选择一样好的原因是,通常,kNN 中的多数决策不会因权重小于 1 的贡献而改变;特别是当 k 大于 10 时。

K-means 没有假设应该为每个集群分配多少观测值。K只是一个选择生成的集群的数量。在每次迭代期间,每个观测值都被分配给具有最接近平均值的集群。没有假设所有集群都应该分配相当数量的观察值(即,对于N观察,不期望每个集群都应该N/K分配~观察值)。

很可能各个集群中的观察数量高度不平衡。这可能是由于数据的分布、选择的集群数量(K),甚至是集群均值的初始化方式。

[由于您已更新问题以引用不同的算法(将 k-means 更改为 kNN),因此我将其添加为专门针对 kNN 的单独答案。]

看来您可能仍然kNNk-means. kNN没有多个细化阶段,也不需要计算质心。它是一个懒惰的学习者,它通过检查最接近新观察的训练观察来对新观察进行分类,并选择那些训练观察k中最普遍的类别。k请注意,距离与集群质心无关。您不必担心k在新观测值的邻域中存在训练观测值,因为邻域不是基于阈值距离 - 它仅由k离新观察最近的点(即,它会随着每个被评估的新观察而改变)。

一个可能的病态情况是,当多个训练观测值与新观测值的距离完全相同k时,这将需要您评估的不仅仅是邻居。但是您仍然会简单地选择该组观察中最普遍的类别。