2

我目前正在学习聚类。我已经执行了存储在我的数据库中的订阅者的 average_duration_of_call 的 k 均值集群。首次运行时有 3 个中心cluster1 (53.33369 秒)-367 订阅者、cluster2(121.67123 秒)-128 订阅者、cluster3(369.09000 秒)-8 订阅者。

我再次使用中心 6重新运行聚类,获得的中心为 cluster1(904.66670 秒)-1 订阅者,cluster2(27.7 秒) - 108 订阅者,cluster3(151.58)-43 订阅者,cluster4(95 秒) - 135 订阅者,cluster5( 59.5 秒)- 207 个订阅者,cluster6(278 秒)-9 个订阅者。

现在我的问题是哪个是最好的集群以及如何找到最好的集群。期待任何经验帮助(我目前正在使用 R 语言)

4

2 回答 2

2

如果您是初学者,那么我建议您开始基于密度的聚类,这样就不需要 K 的初始值。您最初可以使用 epsilon=10 和 minpts= 5 启动 dbscan 集群,然后检查生成的集群的数量。之后,开始平滑增加 epsilon (11, 12, ... 15) 和减少 minpt (4, 3, ..1) 并检查每次生成的簇数。那么这些数字的平均值应该反映真实集群的平均数量。

但是,如果您需要应用 k-means 聚类,那么您可能会发现Selection of K in K-means clustering 的论文很有用。

于 2013-05-18T11:14:47.590 回答
1

好吧,k-means 已经为您的平方和计算了一个分数。

选择获得更好分数的结果。

但是,当您增加 k 时,分数自然会提高。显然,如果您将 k 设置为数据集大小,它将为 0。然后您可能想要使用 BIC 或轮廓系数(在 Wikipedia 上查找)。

哦,考虑用一本书。这是一个经典问题,任何一本好书都应该包含这个问题。

于 2013-04-30T12:02:29.500 回答