数据聚类算法

时间:2010-12-02 02:36:52

标签: cluster-analysis data-mining information-retrieval

什么是最流行的文本聚类算法,它处理大尺寸和庞大的数据集并且速度快? 在阅读了如此多的论文和许多方法后,我感到困惑。现在只想知道哪一个最常用,为编写文档的聚类应用程序提供了一个很好的起点。

5 个答案:

答案 0 :(得分:2)

要处理维度的诅咒,您可以尝试确定生成数据集的blind sources(即主题)。您可以使用Principal Component AnalysisFactor Analysis来降低功能集的维度并计算有用的索引。

PCA是Latent Semantic Indexing中使用的,因为SVD可以被证明是PCA:)

请记住,当您获得数据集的主要组成部分或其因素时,您可能会失去解释,所以您可能想要转到Non-Negative Matrix Factorization路线。 (这就是冲击!K-Means是一个特殊的NNMF!)在NNMF中,数据集只能通过其附加的非负分量来解释。

答案 1 :(得分:1)

没有一种尺寸适合所有方法。分层聚类始终是一个选项。如果你想要从数据中形成不同的组,你可以使用K-means聚类(据说它在计算上也不那么密集)。

答案 2 :(得分:1)

两种最流行的文档聚类方法是层次聚类和k-means。 k-means更快,因为它在文档数量上是线性的,而不是分层的,这是二次的,但通常被认为可以提供更好的结果。数据集中的每个文档通常表示为n维向量(n是单词的数量),维度的大小对应于每个单词等于其term frequency-inverse document frequency分数。 tf-idf分数降低了高频词在相似度计算中的重要性。 cosine similarity通常用作相似性度量。

可以找到一篇论文,比较层次和二等分k-means(一个堂兄算法与k-means)之间的实验结果here

文档聚类中减少维数的最简单方法是:a)抛弃所有罕见且频繁出现的词(比如说不到1%和超过60%的文档出现:这有点武断,你需要尝试不同的每个数据集的范围以查看对结果的影响),b)stopping:抛弃常用英语单词停止列表中的所有单词:可以在线找到列表,c)stemming或删除后缀只留下词根。最常见的提取器是Martin Porter设计的提取器。可以找到多种语言的实现here。通常,这会将数据集中的唯一字数减少到几百或几千,并且可能不需要进一步降低维数。否则,可以使用PCA等技术。

答案 3 :(得分:-1)

我会坚持使用kmedoids,因为你可以计算算法开始时从任意点到任意点的距离,你只需要这样做一次,它可以节省你的时间,特别是如果有很多维度的话。该算法通过选择更接近它的点作为聚类的中心而不是以属于该聚类的点的平均值计算的质心来工作。因此,您已在此算法中为您完成了所有可能的距离计算。

答案 4 :(得分:-1)

如果您不是在寻找语义文本聚类(我无法判断这是否是您原始问题的要求),请尝试使用Levenshtein距离并使用它构建相似度矩阵。由此,您可以使用k-medoids进行聚类,然后通过使用轮廓系数验证您的聚类。不幸的是,Levensthein可能会很慢,但有很多方法可以通过使用阈值和其他方法加快速度。

处理维度诅咒的另一种方法是找到“对比集”,即在一组中比在其他组中更突出的属性 - 值对的连接。然后,您可以将这些对比集用作维度,以代替原始属性或使用有限数量的属性。