Graph 聚类质量排序

Graph 聚类质量排序,graph,cluster-analysis,ranking,Graph,Cluster Analysis,Ranking,我有一个有向图(实际上它是一个超图,但暂时可以忽略它) 从这个图中,我选择了不同的子图,我正在寻找一个函数,它可以根据不同的子集的“聚类质量”对它们进行排序 当子集成员之间存在大量链接时,“群集质量”应较高 当从子集的多个成员到子集或从子集外部存在大量链接时,“群集质量”应该较低 我的问题是: “群集质量”的正确术语是什么 在此上下文中存在哪些相关算法/函数 JVM上存在哪些实现。Scala是首选,但是任何可以从java调用的东西都可以吗 背景:想法是从源代码(类和方法名称或其片段)中提取单

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

从这个图中,我选择了不同的子图,我正在寻找一个函数,它可以根据不同的子集的“聚类质量”对它们进行排序

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

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

我的问题是:

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

  • 在此上下文中存在哪些相关算法/函数

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


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

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

也就是说,根据我的经验,我想到了两个集群度量。一种是模块化,它基本上将子图(集群)与边缘随机分布的子图进行比较

另一个是电导,它测量候选簇上的随机游动收敛到某个均匀分布的速度

另一个更宽松的度量是聚类系数,它度量图形中三角形的数量(3个圈)与可能存在的三角形的数量

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

关于JVM上的一个实现,据我所知,没有任何库与这些算法一起作为JVM的一部分,但流行的Scala图形库是graph for Scala(将来将合并到Scala扩展核心库中)和由Twitter发布的Cassovory