改进的k -均值聚类(Ward准则)速度提高

Improved K-means clustering (Ward criterion) speed improvement

本文关键字:准则 Ward 速度 聚类      更新时间:2023-10-16

我使用随机初始化的k-means聚类来识别聚类。算法对好的数据很有效。但是如果我处理有很多噪声的数据,那么我的k-means算法就会失去它的鲁棒性,并且在相同的数据集上每次运行都会给出不同的解决方案。

所以我决定改进我的k-means聚类以最小化Ward准则:

  1. 执行标准k-means聚类
  2. 遍寻所有的点和聚类找到点P和聚类A和B,如果我将点P从聚类A移动到聚类B,那么该聚类的ward准则将是最小的
  3. 如果发现这样的点,将其从A移动到B,更新集群中心并继续2

我在这里用c++写了这个算法。然而,问题是,这种方法非常慢,我正在处理每个大约有20,000个点的集群。

你能给我一个更好的解决方案吗,或者你能帮我加快这个算法吗?

我终于找到了解决办法。我已经意识到:

  • 我对Ward的方法真的很没用
  • PCA对我来说是不可用的,因为我只使用1D集群。
  • 在我实现了k-means++之后,正如Micka所说,k-means的可靠性得到了提高。尽管如此,它偶尔还是会给出糟糕的解决方案。(实验中相同数据的5个聚类中有1个是坏的)

对我很有帮助的是均值归一化。我做了5x k-means,每次迭代的聚类中心的计算平均值。最后以计算出的均值作为初始解运行k-means。