我正在使用 Weka 的 SimpleKMeans 函数来聚类 96000 个术语(作为单词)。Weka 将所需的簇数作为参数。因此,它为 num 提供 2。集群的默认值。我拥有的数据集是 96000x641000 稀疏数据集。一开始我给了 10000 个集群编号,但我认为这对于推荐过程来说太多了。有没有一种方法可以根据算法计算 #of clusters 或找到理想的 #of clusters?
问问题
3429 次
2 回答
1
对于 K-means 变体算法,“k”的初始预测有一个经验法则。通常取 k = (n / 2) ^ 0.5 是合适的,其中 n = 数据点的数量。
于 2012-11-20T10:13:01.963 回答
1
K-means 并不是真正为稀疏数据设计的。另外,它是为欧式距离设计的,你应该知道这对于高维数据不是一个好的选择。
也许最简单的论点如下:一个子集的平均值可能不再是稀疏的,因此它本身就是异常的,并且比实际数据实例更接近中心。然而,这意味着不同集群的平均值可能比实际实例更接近于它们的平均值,这使得结果非常可疑。
您至少应该尝试使用 k 中位数(但速度要慢得多),或其他措施来保持均值的稀疏性。当然:k-means确实对数据进行了聚类。问题是,结果的有效性如何。
也可以看看:
对于在高维稀疏/二进制数据上运行 k-means 的许多失败案例(= 没有好的答案的问题)。
于 2012-11-20T17:52:58.360 回答