我在处理集群时遇到了问题。我处理具有高斯白噪声的数据。我遇到的所有方法都使用某种随机初始化来设置聚类的均值和协方差矩阵。
我的问题是:由于初始化是随机的,我有可能得到一个非常糟糕的起点,这会给我带来糟糕的结果。我该如何处理?
我正在考虑的一种特定初始化是 K-Means++,它比严格随机更好,因为它至少尝试使用数据进行知情初始化,但它最终也是随机的。
人们通常会进行多次运行并进行最佳初始化吗?
那对于流数据呢?
我在处理集群时遇到了问题。我处理具有高斯白噪声的数据。我遇到的所有方法都使用某种随机初始化来设置聚类的均值和协方差矩阵。
我的问题是:由于初始化是随机的,我有可能得到一个非常糟糕的起点,这会给我带来糟糕的结果。我该如何处理?
我正在考虑的一种特定初始化是 K-Means++,它比严格随机更好,因为它至少尝试使用数据进行知情初始化,但它最终也是随机的。
人们通常会进行多次运行并进行最佳初始化吗?
那对于流数据呢?
各种技术用于初始化。
在文献中,我看到了使用 k-means 查找初始中心的建议。可能在主教的书中。
例如,R 中的 mclust 似乎使用层次聚类(非常昂贵)来查找初始聚类,然后使用 GMM 来细化它们。可能是因为当时计算所有 exp 和 log 函数的成本更高。
ELKI 确实允许按照您的建议使用 k-means++ 初始化。它似乎也使用了一些好的启发式方法来选择初始协方差矩阵。这对我来说效果很好——它在我的实验中很好地融合了。不过,我没有检查他们的代码的详细信息(他们的代码中经常有文献参考,这非常好)。