2011-08-28 115 views
8

我正在尝试与K-Means一起实现Canopy聚类算法。我在网上做了一些搜索,说使用Canopy聚类来获得你的初始起始点,并将其馈入K-means,问题是,在Canopy聚类中,你需要为树冠指定2个阈值:T1和T2,其中内部阈值中的点与该冠层紧密相关,并且更宽阔的阈值中的点与该冠层较少关联。这些阈值或距冠层中心的距离是如何确定的?如何选择Canopy Clustering的T1和T2阈值?

问题上下文:

我试图解决的问题是,我有一组数字,如[1,30]或[1250]具有约50集大小可以有重复的元素并且它们也可以是浮点数,比如8,17.5,17.5,23,66 ......我想要找到最佳聚类或数字集合的子集。

所以,如果雨棚聚类K均值是一个不错的选择,那么我的问题依然存在:你怎么发现的T1,T2值?如果这不是一个好的选择,是否有更好,更简单但有效的算法?

+0

这是另一个类似的问题http://stats.stackexchange.com/questions/13895/how-do-i-algorithmically-determine-values-of-t1-t2-for-canopy-clustering – cyraxjoe

+0

你有没有这运气好吗?我正在寻找使用Canopy Clustering来查找一个初始集群来提供给K-Means。我可能只是使用[跳转方法],如[这里]所述(http://en.wikipedia.org/wiki/Determining_the_number_of_clusters_in_a_data_set)(这听起来与@rpd在他的回答中描述的方法类似),但如果您已经找到确定T1和T2的好方法我想使用Canopy Clustering来代替。 – JesseBuesking

回答

2

也许天真地,我看到了一种谱估计方面的问题。假设我有10个向量。我可以计算所有对之间的距离。在这种情况下,我会得到45个这样的距离。将它们绘制为不同距离范围内的直方图。例如。 10个距离介于0.1和0.2之间,5介于0.2和0.3之间等,您可以了解矢量之间的距离是如何分布的。从这些信息中,您可以选择T1和T2(例如,选择它们以便覆盖人数最多的距离范围)。

当然,这不是一个大的数据集实用 - 但你可能只是采取了随机抽样或东西,这样你至少知道T1和T2的球场。使用Hadoop之类的东西,你可以在大量的点上做某种事先的谱估计。如果您试图集群的所有传入数据以相同的方式分发,那么您需要一次获取T1和T2,然后将它们修复为常量,以用于将来的所有运行。

2

其实这是个大问题林冠与聚类。选择阈值几乎与实际算法一样困难。特别是在高维度。对于二维地理数据集,领域专家可以很容易地定义距离阈值。但是在高维数据中,您可以做的最好的方法是首先在您的数据样本上运行k-means,然后根据此样本运行选择距离。

相关问题