1

我正在使用 Weka 的 SimpleKMeans 函数来聚类 96000 个术语(作为单词)。Weka 将所需的簇数作为参数。因此,它为 num 提供 2。集群的默认值。我拥有的数据集是 96000x641000 稀疏数据集。一开始我给了 10000 个集群编号,但我认为这对于推荐过程来说太多了。有没有一种方法可以根据算法计算 #of clusters 或找到理想的 #of clusters?

4

2 回答 2

1

对于 K-means 变体算法,“k”的初始预测有一个经验法则。通常取 k = (n / 2) ^ 0.5 是合适的,其中 n = 数据点的数量。

于 2012-11-20T10:13:01.963 回答
1

K-means 并不是真正为稀疏数据设计的。另外,它是为欧式距离设计的,你应该知道这对于高维数据不是一个好的选择。

也许最简单的论点如下:一个子集的平均值可能不再是稀疏的,因此它本身就是异常的,并且比实际数据实例更接近中心。然而,这意味着不同集群的平均值可能比实际实例更接近于它们的平均值,这使得结果非常可疑。

您至少应该尝试使用 k 中位数(但速度要慢得多),或其他措施来保持均值的稀疏性。当然:k-means确实对数据进行了聚类。问题是,结果的有效性如何。

也可以看看:

在非常大的稀疏矩阵上的 R 中的 k 均值聚类?

python和scipy中稀疏矩阵的聚类

稀疏矩阵中元素聚类的距离度量

在非常大的稀疏矩阵上聚类?

K-means 聚类算法运行时间和复杂度

如何用标准化的 TF-IDF 做 K-means

Mahout 二进制数据聚类

对于在高维稀疏/二进制数据上运行 k-means 的许多失败案例(= 没有好的答案的问题)。

于 2012-11-20T17:52:58.360 回答