【问题标题】:How to compute similarities based on co-occurrence matrix?如何基于共现矩阵计算相似度?
【发布时间】:2017-06-17 21:04:05
【问题描述】:

我有一个项目-项目矩阵 (1877 x 1877)。矩阵中的值表示两个项目一起出现的次数。如何确定两个项目之间的相似性? 通过阅读,我发现很少的选择。但是我不确定这些方法。感谢您对入门的任何投入。

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

【问题讨论】:

    标签: python matrix cosine-similarity find-occurrences


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      此外,重新处理数据可能会对您有所帮助。我不知道它的分布,但您可能希望将值标准化为范围 [0;1] 或这样做。

      【讨论】:

      • 如果我猜对了,我会使用余弦来计算矩阵中各列之间的 sim?列被视为特征..关于规范化,您是指将每列重新缩放为长度为 1 吗?从 sklearn.preprocessing 导入 *; normalized_X = normalize(X, axis=0, norm='l1')
      【解决方案3】:

      如果您的共不出现矩阵对称的,则不需要对其进行归一化。您可以参考这篇论文以获得更多关于 symmetricalasymmetrical 协矩阵的归一化的信息: Leydesdorff, L. 和 Vaughan, L.,2006 年。共现矩阵及其在信息科学中的应用:将 ACA 扩展到 Web 环境。美国信息科学与技术学会杂志,57(12),pp.1616-1628。 请点击hear

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-22
        • 2017-11-07
        • 1970-01-01
        • 1970-01-01
        • 2017-05-30
        • 2017-03-15
        • 2016-02-15
        相关资源
        最近更新 更多