如何基于共生矩阵计算相似度?

时间:2017-02-01 07:37:46

标签: python matrix cosine-similarity find-occurrences

我有一个项目矩阵(1877 x 1877)。矩阵中的值表示两个项目一起出现的次数。如何确定两个项目之间的相似性? 通过阅读,我找到了一些选择。但是我不确定这些方法。任何开始的输入都值得赞赏。

  1. 使用余弦计算两个向量之间的sim
  2. 将其转换为图形,使用类似simrank的度量来计算相似度 - 可以将出现次数用作两个节点之间的权重。

3 个答案:

答案 0 :(得分:1)

我建议使用spatial cosine similarity。或者,您可以为每个项目对计算jaccard's similarity

在计算相似度矩阵(亲和度矩阵)之后,您可以使用频谱(或空间)聚类算法(例如sklearn's spectral clustering算法)对这些项进行分组。

答案 1 :(得分:1)

如果您的共非矩阵对称,则无需对其进行归一化。您可以参考本文以获得有关对称非对称协矩阵规范化的更多信息: Leydesdorff,L.和Vaughan,L.,2006年。共现矩阵及其在信息科学中的应用:将ACA扩展到Web环境。美国信息科学技术学会学报,57(12),1616-1628页。 请点击hear

答案 2 :(得分:0)

您可以将其分为1877个项目,每个项目具有1877个功能。如果两个项目相似,那么它们的共现将是相似的。鉴于您可能会使用NearestNeighbors来找到最接近的一个。可能有指标。

此外,重新处理数据可能对您有所帮助。我不知道它的分布,但你可能想要将值标准化为范围[0; 1]或做类似的事情。