Answers:
M.Newman 在“ 检测网络中的社区结构”中将图聚类定义为在计算机科学上下文中定义的特定问题。
让我们考虑一些计算,可以将其分为几个简单的操作。这些被表示为我们网络中的节点。链接对应于操作之间的依赖性,即另一操作需要一个操作的结果。问题在于为了并行处理的目的将操作分布在多个处理器上。换句话说,我们想将每个节点(操作)分配给特定的类(处理器),即我们要对图进行分区。
但是,存在三个约束。首先是获得预定数量的社区,因为处理器的数量显然是事先已知的。第二个是获得均衡的负载:我们希望每个处理器大致执行相同数量的操作。就图而言,我们希望社区包含大约相同数量的节点。第三是使处理器之间的通讯尽可能低,因为这会减慢处理速度。因此,就图而言,我们希望最小化社区之间的链接数量。
因此,从这个角度来看,社区检测可以被认为是比图聚类更普遍的问题。在这两个问题中都强加了第三个约束,但是在社区检测中,先验的社区数量和规模尚不清楚。
如果将一个大型网络分为两个部分,那么什么可以保证您这两个部分是两个社区?两个群集具有低连接性并不意味着每个群集具有相似类型的节点或节点具有相似类型的连接(因此是社区)。想想社交网络图。肯定有很多社区。同样,通过聚类算法,您可以将其分为两部分。在这种情况下,您是否将每个零件称为社区。?我的回答是不。因为,这两个集群可能是两个地理区域的人。然后,这些肯定不是社区。
聚类算法仅关心最小割,而不关心节点相似性或连接相似性或密集连接。另外,在聚类算法中,应预定义聚类的数量。
社区检测算法,他们关心密度,他们发现网络的密集部分,而这类算法(到目前为止我已经看到)不需要预先定义社区的数量。
但是,可以使用聚类算法来查找社区,然后,由于不能保证每个群集都具有良好的社区结构,因此应仔细检查每个群集。
“一个人不能轻易地应用社区发现来解决聚类,反之亦然。尽管它们相似,但是方法上存在重要区别。社区发现假定稀疏连接,而聚类可以处理密集的数据集;在聚类中,我们通常处理多种类型的属性,而社区发现通常只处理单一属性类型-边缘-在不加权网络的情况下通常为二进制”,以获取更多信息,请阅读以下文章:Riccardo Guidotti和Michele Coscia撰写的“关于社区发现和集群之间的对等”