1. 程式人生 > >SCAN:一種基於密度的社團發現演算法

SCAN:一種基於密度的社團發現演算法

Update: spark版本的實現在這裡
說明:該實現參照了SCAN作者的另一篇論文 :

Zhao, W., Martha, V., & Xu, X. (2013, March). PSCAN: a parallel Structural clustering algorithm for big networks in MapReduce. In Advanced Information Networking and Applications (AINA), 2013 IEEE 27th International Conference on (pp. 862-869). IEEE

可以實現在億級別節點的圖的聚類。

實現程式碼在這裡下載。

Paper: 《SCAN: A Structural Clustering Algorithm for Networks》
Auther: Xiaowei Xu, Nurcan Yuruk, Zhidan Feng, Thomas A. J. Schweiger
Conference: SIGKDD 2007

一:SCAN演算法簡介

SCAN演算法是由機器學習裡的基於密度的聚類演算法DBSCAN改進而來的一種非重疊社團發現演算法,具有線性時間複雜度。其一大亮點在於能發現社團中橋節點(hub)和離群點(outlier)。

主要思想在於,在考慮兩點之間的關係的時候,不僅考慮它們的直接連結,而是利用它們的鄰居節點來作為聚類的標準。也就是說,節點根據它們共享鄰居方式而聚類。
這裡寫圖片描述

由圖可知,節點0、5共享了4個節點,節點9、13只共享了2個節點,顯然它們在聚類是應採取不同的聚類方式。

二、主要概念介紹

1. 節點相似度

節點相似度定義為兩個節點共同鄰居的數目兩個節點鄰居數目的幾何平均數的比值(這裡的鄰居均包含節點自身)。

σ(v,w)=|Γ(v)Γ(w)||Γ(v)||Γ(w)|
其中 Γ(x) 表示節點
x
及其相鄰節點所組成的集合。

2. ϵ - 鄰居

節點的 ϵ - 鄰居定義為與其相似度不小於 ϵ 的節點所組成的集合。

Nϵ={wΓ(v)|σ(v,w)ϵ}

3. 核節點

核節點是指 ϵ 鄰居的數目大於 μ 的節點。

COREϵ,μ(v)|Nϵ(v)|μ

4. 直接可達

節點 w 是核節點 vϵ 鄰居,那麼稱從 v 直接可達 w.

DirREACHϵ,μ(v,w)COREϵ,μ(v)wNϵ(v)

5. 可達

節點 v 可達 w ,當且僅當存在一個節點鏈 v1,,vnV,v1=v,vn=w,使得 vi+1 是 從vi 直接可達的。

REACHϵ,μ(v,w)v1,,vnV:v1=vvn=wi{1,,vn}:DirREACHϵ,μ(vi,vi+1)

6. 相連

若核節點u可達節點v和節點w,則稱節點v和節點w相連.