我正在使用Weka的SimpleKMeans函数来聚类96000个术语(作为单词)。 Weka将所需簇号的数量作为参数。所以,它给2分数。群集默认。 我拥有的数据集是96000x641000稀疏数据集。一开始我给了thu簇号10000,但我觉得推荐过程太多了。 有没有一种方法来计算#of群集相对于算法或找到理想的#of群集?
答案 0 :(得分:1)
对于K-means变量算法,对于'k'的初始预测有一个经验法则。通常,适合采用k =(n / 2)^ 0.5,其中n =数据点的数量。
答案 1 :(得分:1)
K-means并非真正设计用于稀疏数据。此外,它是专为欧氏距离设计的,你应该知道这不是高维数据的好选择。
也许最简单的论点如下:子集的 mean 可能不再稀疏,因此它本身会异常,并且比中心更接近实际的数据实例。然而,这意味着不同集群的手段可能比实际情况更接近彼此,这使得结果非常可疑。
你应该至少尝试使用k-medians(但速度要慢得多),或者其他措施来保护手段的稀疏性。当然:k-means 对数据进行聚类。问题是,结果的有效性如何。
另见:
k-means clustering in R on very large, sparse matrix?
Clustering of sparse matrix in python and scipy
Distance Metric for clustering elements in a sparse matrix
clustering on very large sparse matrix?
K-means clustering algorithm run time and complexity
How to do K-means with normalized TF-IDF
对于在高维稀疏/二进制数据上运行k-means的一些失败故事(=没有好答案的问题)。