【问题标题】:Ranking the quality of clusters对集群的质量进行排名
【发布时间】:2012-09-10 14:52:25
【问题描述】:

我有一个有向图(实际上它是一个超图,但暂时可以忽略它)。

从这个图中我选择了各种子图,并且我正在寻找一个函数,它可以根据它们的“集群质量”对各种此类子集进行排名。

当子集的成员之间存在大量链接时,“集群质量”应该很高

当从子集的许多成员到子集或从子集外部存在大量链接时,“集群质量”应该很低。

我的问题是:

  • “集群质量”的正确术语是什么?

  • 在这种情况下确实存在哪些相关算法/函数?

  • JVM 上存在哪些实现。首选 Scala,但任何可从 java 调用的东西都可以吗?

背景:这个想法是从源代码(类和方法名称或其中的部分)中提取单词,并通过找到那些被“好集群”使用的词来找到那些可能最好地描述应用程序的词,从而可能代表一些知识概念代码。

【问题讨论】:

    标签: graph cluster-analysis ranking


    【解决方案1】:

    关于与聚类分析相关的算法/功能,有几种。图中的聚类与图划分密切相关,图划分最近成为一个活跃的研究领域,尤其是随着 Facebook 和 Twitter 等在线社交网络的出现,其底层结构自然地由(社交)图表示。

    话虽如此,根据我的经验,我想到了两种聚类措施。一种是模块化,它基本上将子图(集群)与边缘随机分布的子图的外观进行比较。

    另一个是电导,它衡量随机游走在候选集群上收敛到某个均匀分布的速度。

    另一个更宽松的衡量标准是查看聚类系数,该系数衡量图中三角形(3 个循环)的数量与可能存在的三角形数量。

    总而言之,与这个主题相关的算法(和学术论文)很多,我上面提到的三个是更一般的用例。

    关于 JVM 上的实现,我所知道的库中没有包含此类算法的库,但流行的 Scala 图形库是 Scala 的 Graph(将合并到 Scala 扩展核心库中未来)和 Cassovary,由 Twitter 发布。

    【讨论】:

      猜你喜欢
      • 2012-05-09
      • 1970-01-01
      • 2017-11-04
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多