Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 你用什么方法来选择k-means和EM中的最佳聚类数?_R_Cluster Analysis_Data Mining_Expectation Maximization - Fatal编程技术网

R 你用什么方法来选择k-means和EM中的最佳聚类数?

R 你用什么方法来选择k-means和EM中的最佳聚类数?,r,cluster-analysis,data-mining,expectation-maximization,R,Cluster Analysis,Data Mining,Expectation Maximization,有许多聚类算法可用。一种流行的算法是K-means,该算法基于给定数量的聚类,迭代以找到对象的最佳聚类 在k-均值聚类中,您使用什么方法来确定数据中的聚类数 R中是否有任何可用的软件包包含用于确定正确聚类数的V-fold交叉验证方法 另一个被广泛使用的方法是期望最大化(EM)算法,该算法为每个实例分配一个概率分布,该概率分布表示它属于每个集群的概率 这个算法是在R中实现的吗 如果是,它是否可以选择通过交叉验证自动选择最佳聚类数 您更喜欢其他的聚类方法吗?对于大型“稀疏”数据集,我会认真推荐“亲和

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

在k-均值聚类中,您使用什么方法来确定数据中的聚类数

R中是否有任何可用的软件包包含用于确定正确聚类数的
V-fold交叉验证
方法

另一个被广泛使用的方法是期望最大化(EM)算法,该算法为每个实例分配一个概率分布,该概率分布表示它属于每个集群的概率

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

如果是,它是否可以选择通过交叉验证自动选择最佳聚类数

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

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

它发表在《科学》杂志上

然而,最优聚类算法的选择取决于所考虑的数据集。K Means是一种教科书方法,很可能有人开发了更适合您的数据集类型的更好算法/

这是Andrew Moore教授(CMU,谷歌)关于K均值和层次聚类的一篇很好的教程。

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


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

我故意忽略了层次聚类,因为hclust是一种内存不足的方法,不适合于我实际上最感兴趣的大型数据集。请定义“最佳”大问题@Svante的含义,我一直在想这个问题。我甚至打算编写一个包,其中包含几个用于优化集群数量的算法(仅限hclust方法)@哈德利,我熟悉:C-H指数(卡林斯基和哈拉巴斯),C指数,古德曼·克鲁斯卡尔·伽马系数。有一种方法可以通过F-test“选择最佳集群解决方案”。参考文献:Miligan,G.W.和Cooper,M.C.(1985)。对确定数据集中集群数量的程序的检查,Psychometrika,50159-179尽管我假设你更喜欢“基于图形”的最优解决方案决策…@hadley,在最大化某些分数函数的意义上,可能以
类间距离
类内距离
作为参数。例如,请参见第
段中描述的最佳聚类数
中的方法:这可能也很有用: