9

我正在尝试与 K-Means 一起实现 Canopy 聚类算法。我在网上做了一些搜索,说要使用 Canopy 聚类来让您的初始起点输入 K-means,问题是,在 Canopy 聚类中,您需要为 Canopy 指定 2 个阈值:T1 和 T2,其中内部阈值中的点与该树冠密切相关,而较宽阈值中的点与该树冠的相关性较小。这些阈值或距树冠中心的距离是如何确定的?

问题背景:

我要解决的问题是,我有一组数字,例如 [1,30] 或 [1,250],其设置大小约为 50。可以有重复的元素,它们也可以是浮点数,例如as 8, 17.5, 17.5, 23, 66, ... 我想找到最优的簇,或一组数字的子集。

因此,如果使用 K-means 进行 Canopy 聚类是一个不错的选择,那么我的问题仍然存在:您如何找到 T1、T2 值?如果这不是一个好的选择,是否有更好、更简单但有效的算法可供使用?

4

2 回答 2

2

实际上,这是 Canopy Clustering 的大问题。选择阈值与实际算法一样困难。特别是在高维度。对于 2D 地理数据集,领域专家可能可以轻松定义距离阈值。但在高维数据中,您能做的最好的事情可能是先对数据样本运行 k-means,然后根据该样本运行选择距离。

于 2012-01-15T12:12:00.163 回答
2

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

当然,这对于大型数据集是不切实际的——但你可以随机抽取一个样本或其他东西,这样你至少知道 T1 和 T2 的大致情况。使用 Hadoop 之类的东西,您可以对大量点进行某种先验光谱估计。如果您尝试集群的所有传入数据都以几乎相同的方式分布,那么您只需获取一次 T1 和 T2,然后将它们修复为所有未来运行的常量。

于 2011-11-09T07:43:31.870 回答