当我在数据集上运行Kmeans时,我注意到某些质心变得陈旧,它们不再是迭代后最接近的任何一点。现在,我在下一次迭代中跳过了这些陈旧的质心,因为我认为这些质心不再代表任何有用的数据集,但是我想知道是否还有其他合理的方法可以处理这些质心。

有帮助吗?

解决方案

k均值 仅找到本地Optima。因此,在吸引力中,错误数量的群集或仅仅是某种随机的平衡状态可能会导致空簇。从技术上讲,K均值没有为此提供程序,但是您可以毫无问题地丰富算法。

我发现有两种有用的方法:

  • 删除陈旧的群集,从数据集中选择一个随机实例,并与所选随机点相等的质心相等创建一个新群集
  • 卸下陈旧的群集,选择与其他任何质心的最远点

这两个过程都可以导致不确定的运行时间,但是如果这种调整的数量是有限的(通常是),则它将不会融合无问题。为了保护自己免受无限的运行时间,您可以为数量设置上限 调整.

如果您有大量的数据集,则该过程本身是不切实际的。运行时间可能会变得过于艰难。

减少发生这种情况机会的另一个过程是使用更好的初始化过程,例如 K-均值++. 。实际上,第二个建议是一个想法 K-均值++. 。但是,没有保证。

最后是有关实施的注释。如果您无法更改算法代码以进行即时进行这些改进,那么我想到的唯一选择是开始一个新的聚类过程,您可以在其中初始化非阶层群集的质心位置,并遵循程序过时的簇。

许可以下: CC-BY-SA归因
scroll top