我正在从头开始实施 K-Means,这个练习提出了一个问题。
要更新我的质心,对于每个质心,我必须找到该质心最接近的点。
在某些情况下,尤其是当质心数量较多而实例数量较少时(即 k=20 和 100 个实例),我会发现没有任何点将它们作为最接近的质心的质心。换句话说,它们成为“孤儿”,因为没有实例分配给它们。
在上面的示例中,顶部的两个质心 (X) 显然都具有最接近质心的点。但在任何情况下,底部的质心都不是最近的质心。
我该如何处理?
- 孤独的质心应该保持不动吗?
- 我应该移动那个质心吗?如果是,如何?
- 我应该删除它吗?
有没有标准的方法来处理这个?
- - - - - - 编辑: - - - - - - -
在 Github 上,我发现了这个:
https://github.com/klebenowm/cs540/blob/master/hw1/KMeans.java
这表明如果质心成为“孤儿”,则应将其分配到离质心最远的点。
这似乎是一种合理的方法,是否有任何论文或理论支持这一点?