我正在使用Weka的SimpleKMeans函数对96000个术语(作为单词)进行聚类。Weka以期望聚类数为参数。因此,它将2赋给num。默认的簇数。我拥有的数据集是96000x641000稀疏数据集。一开始,我给了清华的簇号10000,但我认为这对于推荐过程来说太多了。有没有一种方法可以计算算法的簇数,或者找到理想的簇数?
发布于 2012-11-21 01:52:58
K-means并不是真正为稀疏数据设计的。另外,它是为欧几里得距离而设计的,您应该意识到这不是高维数据的好选择。
也许最简单的论点如下:子集的均值可能不再稀疏,因此它本身将是异常的,并且比实际数据实例更接近中心。然而,这意味着不同集群的均值可能会比实际实例更接近它们的均值,这使得结果非常可疑。
你至少应该尝试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的许多失败案例(=没有好答案的问题)。
发布于 2012-11-20 18:13:02
对于K-means变体算法,对于'k‘的初始预测有一个经验法则。通常,取k= (n / 2) ^ 0.5是合适的,其中n=数据点的数量。
https://stackoverflow.com/questions/13467225
复制相似问题