【问题标题】:Effective clustering of a similarity matrix相似矩阵的有效聚类
【发布时间】:2012-04-22 14:43:38
【问题描述】:

我的主题是(一堆)文本的相似性和聚类。简而言之:我想将收集的文本聚集在一起,它们应该出现在最后有意义的集群中。为此,我到目前为止的方法如下,我的问题在于集群。目前的软件是用php编写的。

1) 相似性: 我将每个文档视为“词袋”并将词转换为向量。我用

  • 过滤(仅“真实”字词)
  • 标记化(将句子拆分为单词)
  • 词干(将词简化为其基本形式;Porter 的词干分析器)
  • 剪枝(剪切频率过高和过低的词)

作为降维的方法。之后,我使用余弦相似度(如网络上各个站点上的建议/描述and here

那么结果就是这样一个相似度矩阵:

        A   B   C   D   E 
    A   0  30  51  75  80
    B   X   0  21  55  70
    C   X   X   0  25  10
    D   X   X   X   0  15
    E   X   X   X   X   0

A…E 是我的文本,数字是相似度百分比;越高,文本越相似。因为 sim(A,B) == sim(B,A) 只填充了一半的矩阵。所以文本 A 与文本 D 的相似度为 71%。

我现在想从这个矩阵中生成一个先验未知(!)数量的集群。集群应该一起代表相似的项目(直到某个停止标准)。

我自己尝试了一个基本的实现,基本是这样的(60%作为固定的相似度阈值)

    foreach article
      get similar entries where sim > 60
              foreach similar entry
              check if one of the entries already has a cluster number
              if no: assign new cluster number to all similar entries
              if yes: use that number

它(不知何故)奏效了,但一点也不好,结果往往是怪物群。 所以,我想重做这个,并且已经研究了各种聚类算法,但我仍然不确定哪一个效果最好。我觉得应该是凝聚算法,因为每一对文本一开始都可以看成一个簇。但问题仍然是停止标准是什么,以及算法是否应该将现有集群划分和/或合并在一起。

对不起,如果有些东西看起来很基础,但我在这个领域相对较新。感谢您的帮助。

【问题讨论】:

  • 你有没有得到任何好的答案?我什至不清楚集群应该在多少维度上工作......

标签: matrix machine-learning cluster-analysis distance similarity


【解决方案1】:

试试吧。有这么多的聚类算法,没有人会全部知道。另外,它还很大程度上取决于您的数据集和那里的聚类结构。 最后,在余弦距离和 BofW 特征方面也可能只有这一个怪物集群。

【讨论】:

    【解决方案2】:

    由于你们都是该领域的新手,拥有未知数量的集群并且已经在使用余弦距离,我建议您使用 FLAME 聚类算法。

    它直观、易于实现,并且支持多种语言(虽然不是 PHP,主要是因为很少有人将 PHP 用于数据科学)。

    更不用说,它实际上足以被大量人用于研究。如果不出意外,您可以了解在转移到另一个聚类算法时要解决的该聚类算法的确切缺点。

    【讨论】:

      【解决方案3】:

      也许您可以将相似矩阵转换为相异矩阵,例如将 x 转换为 1/x,那么您的问题是对相异矩阵进行聚类。我认为分层集群可能会起作用。这些可能会对您有所帮助:hierarchical clusteringClustering a dissimilarity matrix

      【讨论】:

        猜你喜欢
        • 2023-03-12
        • 2017-07-27
        • 2015-07-17
        • 2018-04-10
        • 2018-04-29
        • 2016-10-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-15
        相关资源
        最近更新 更多