轉自:感謝分享!https://zhuanlan.zhihu.com/p/29380602算法
詳細解釋見: www.cnblogs.com/fengfenggirl網絡
Louvain算法實際上是基於層次聚類的,圖聚類。層次聚類依據是類間距更大,Louvain算法圖聚類依據是模塊度(公式在下方)。blog
Louvain算法包括兩個階段,迭代這兩個階段。get
1不斷地遍歷網絡中的結點,假設每一個節點爲1個社區,N個節點,初始化N個社區,嘗試將單個結點加入可以使模塊度提高最大的社區中,直到全部結點都再也不變化。社區
模塊度提高的定義以下:class
前項表明的意思爲結點加入鄰居社區後,社區內內全部邊pdf
後項表明着結點加入鄰居社區後,社區全部邊(包括內部邊,以及鏈接外部的邊)遍歷
目的是變化後但願子社區內邊,外邊少,即更彙集。im
可是爲何後項要全部邊呢?由於後項帶了懲罰項的意思,沒有懲罰項的話把全部都分紅一個社區都分紅一塊兒就最大了。db
2它處理第一階段的結果,將一個個小的社區歸併爲一個超結點來從新構造網絡。它的執行流程如圖所示:
迭代這兩個步驟直至算法穩定(全部子社區模塊度相加值不變)。
前項表明的意思爲子社區內全部邊,後項表明着子社區社區全部邊(包括內部邊,以及鏈接外部的邊)。
模塊度就是但願子社區內邊,外邊少,即更彙集。