zoukankan      html  css  js  c++  java
  • 模块度与Louvain社区发现算法

    转自:感谢分享!https://zhuanlan.zhihu.com/p/29380602

    详细解释见: www.cnblogs.com/fengfenggirl

    Louvain算法其实是基于层次聚类的,图聚类。层次聚类依据是类间距更大,Louvain算法图聚类依据是模块度(公式在下方)。

    Louvain算法包括两个阶段,迭代这两个阶段。

    1不断地遍历网络中的结点,假设每个节点为1个社区,N个节点,初始化N个社区,尝试将单个结点加入能够使模块度提升最大的社区中,直到所有结点都不再变化。

    模块度提升的定义如下:

    前项代表的意思为结点加入邻居社区后,社区内内所有边

    后项代表着结点加入邻居社区后,社区所有边(包括内部边,以及连接外部的边)

    目的是变化后希望子社区内边,外边少,即更聚集。

    但是为什么后项要所有边呢?因为后项带了惩罚项的意思,没有惩罚项的话把所有都分成一个社区都分成一起就最大了。

    2它处理第一阶段的结果,将一个个小的社区归并为一个超结点来重新构造网络。它的执行流程如图所示:

    迭代这两个步骤直至算法稳定(所有子社区模块度相加值不变)。

    前项代表的意思为子社区内所有边,后项代表着子社区社区所有边(包括内部边,以及连接外部的边)。

    模块度就是希望子社区内边,外边少,即更聚集。

     

  • 相关阅读:
    12. Hamming Distance
    11. Sort Array By Parity
    10. Robot Return to Origin
    9. DI String Match
    8. Unique Email Addresses
    7. Unique Morse Code Words
    6. <Important> Flipping an Image
    5.<Important> Delete Node in a Linked List
    ubuntu20.04 combile opencv 3.2.0(fix some problem)
    git@github.com: Permission denied (publickey)问题解决
  • 原文地址:https://www.cnblogs.com/baiting/p/7736800.html
Copyright © 2011-2022 走看看