您使用啥方法来选择 k-means 和 EM 中的最佳聚类数?

Posted

技术标签:

【中文标题】您使用啥方法来选择 k-means 和 EM 中的最佳聚类数?【英文标题】:What method do you use for selecting the optimum number of clusters in k-means and EM?您使用什么方法来选择 k-means 和 EM 中的最佳聚类数? 【发布时间】:2011-01-19 18:04:24 【问题描述】:

可以使用许多聚类算法。一种流行的算法是 K-means,其中基于给定数量的集群,该算法迭代以找到对象的最佳集群。

在k-means聚类中,你用什么方法来确定数据中的簇数?

R 中是否有任何可用的包包含V-fold cross-validation 方法来确定正确的集群数量?

另一种常用的方法是期望最大化 (EM) 算法,它为每个实例分配一个概率分布,表明它属于每个集群的概率。

这个算法是在 R 中实现的吗?

如果是,是否有通过交叉验证自动选择最佳聚类数的选项?

您更喜欢其他聚类方法吗?

【问题讨论】:

我故意省略了层次聚类,因为 hclust 是一种相当消耗内存的方法,不适合我实际上最感兴趣的大型数据集。 请定义您所说的“最佳”是什么意思 好问题@Svante,我一直在思考这个问题。我什至打算编写一个包含多种算法的程序包,以优化集群数量(仅限 hclust 方法)。 @hadley,我熟悉:C-H 指数(Calinsky & Harabasz)、C-index、Goodman-Kruskal 伽马系数。并且有一种方法可以通过利用 F 检验来“选择最佳集群解决方案”。这是一个参考:米利根,G.W.和库珀,M.C. (1985 年)。 An Examining of Procedures for Determining the Number of Clusters in a Data Set, Psychometrika, 50, 159-179 @hadley,在最大化某些得分函数的意义上,可能有 between class distancewithin class distance 作为参数。例如,参见Optimal Number of Clusters 段中描述的方法:sandro.saitta.googlepages.com/… 这也可能派上用场:stats.stackexchange.com/questions/723/… 【参考方案1】:

对于大型“稀疏”数据集,我会认真推荐“亲和传播”方法。 与 k 均值相比,它具有更优越的性能,并且具有确定性。

http://www.psi.toronto.edu/affinitypropagation/ 它发表在《科学》杂志上。

但是,最佳聚类算法的选择取决于所考虑的数据集。 K 均值是一种教科书方法,很可能有人已经开发出更好的算法,更适合您的数据集类型/

这是 Andrew Moore 教授(CMU,Google)关于 K 均值和层次聚类的一个很好的教程。 http://www.autonlab.org/tutorials/kmeans.html

【讨论】:

【参考方案2】:

上周,我为 K-Means 聚类程序编写了一个估计聚类数的算法。我使用了中概述的方法:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.70.9687&rep=rep1&type=pdf

我最大的实施问题是我必须找到一个合适的集群验证索引(即错误度量),它可以工作。现在是处理速度的问题,但目前的结果看起来还算合理。

【讨论】:

以上是关于您使用啥方法来选择 k-means 和 EM 中的最佳聚类数?的主要内容,如果未能解决你的问题,请参考以下文章

K-means聚类与EM算法

k-means聚类算法python实现,导入的数据集有啥要求

EM算法和K-Means算法

机器学习K-means聚类算法与EM算法

人工智能 | K-MEANS聚类算法均值偏移聚类算法DBSCAN聚类算法使用高斯混合模型(GMM)的期望最大化(EM)聚类合成聚类

K-means 的种子选择策略