一:scan演算法簡介
scan演算法是由機器學習裡的基於密度的聚類演算法dbscan改進而來的一種非重疊社團發現演算法,具有線性時間複雜度。其一大亮點在於能發現社團中橋節點(hub)和離群點(outlier)。
由圖可知,節點0、5共享了4個節點,節點9、13只共享了2個節點,顯然它們在聚類是應採取不同的聚類方式。
二、主要概念介紹
1. 節點相似度
節點相似度定義為兩個節點共同鄰居的數目與兩個節點鄰居數目的幾何平均數的比值(這裡的鄰居均包含節點自身)。
σ(v,w)=|γ(v)∩γ(w)||γ(v)||γ(w)|−−−−−−−−−−√
其中 γ(x) 表示節點 x 及其相鄰節點所組成的集合。
2. ϵ - 鄰居
節點的 ϵ - 鄰居定義為與其相似度不小於 ϵ 的節點所組成的集合。
nϵ=3. 核節點
核節點是指 ϵ 鄰居的數目大於 μ 的節點。
coreϵ,μ(v)⇔|nϵ(v)|≥μ
4. 直接可達
節點 w 是核節點 v 的 ϵ 鄰居,那麼稱從 v 直接可達 w.
dirreachϵ,μ(v,w)⇔coreϵ,μ(v)∧w∈nϵ(v)
5.可達
節點 v 可達 w ,當且僅當存在乙個節點鏈 v1,…,vn∈v,v1=v,vn=w,使得 vi+1 是 從vi 直接可達的。
reachϵ,μ(v,w)⇔∃v1,…,vn∈v:v1=v∧vn=w∧∀i∈:dirreachϵ,μ(vi,vi+1)
6. 相連
若核節點u可達節點v和節點w,則稱節點v和節點w相連.
connectϵ,μ(v,w)⇔∃u∈v:reachϵ,μ(u,v)∧reachϵ,μ(u,w)
7.相連聚類
與至少兩個聚類相鄰的孤立節點.
9. 離群點(outlier)
只與乙個聚類相鄰或不與任何聚類相鄰的孤立節點.
10. 引理:
如果 v 是乙個核節點,那麼從 v 可達的節點集是乙個結構相連聚類
11. 引理:
c 是乙個結構相連聚類, p 是 c 中的乙個核節點。那麼 c 等於從 p 結構可達的節點集。
三、具體演算法
1、對於每個未分配社團的節點 v ,檢查 v 是否是核節點,是核節點則將其直接可達節點分配到乙個社團中(社團標號記為該節點),並將其 ϵ-鄰居放進佇列中,重複進行1步驟(類似於對直接可達節點進行dfs)。
2、若 不是核節點則將其標誌為non-member。
3、最後檢查所有的non-menber節點,若其相鄰節點存在於兩個及以上的社團中,則將其標為hub節點,否則標為outlier。
algorithm scan(g=
, ε, μ)
// all vertices in v are labeled as unclassified;
for each unclassified vertex v ∈ v do
// step 1. check whether v is a core;
if coreε,μ(v)
then
// step 2.1. if
v is a core, a new cluster is expanded;
generate new clusterid;
insert all x ∈ nε (v) into queue q;
while q ≠ 0 do
y = first vertex in q;
r =;for each x ∈ r do
if x is unclassified or non-member then
assign current clusterid to x;
if x is unclassified then
insert x into queue q;
remove y from q;
else
// step 2.2. if
v is not a core, it is labeled as non-member
label v as non-member;
end for.
// step 3. further classifies non-members
for each non-member vertex v
doif
(∃ x, y ∈ γ(v)
( x.clusterid ≠ y.clusterid)
then
label v as hub
else
label v as outlier;
end for.
end scan.
SCAN 一種網路結構聚類演算法
scan a structural clustering algorithm for networks 該演算法針對的是無向無權圖 如圖,節點0和節點5的鄰居點集分別是和,有4個共同的鄰居,聯絡較大 節點9和節點13,鄰居點集都是,2個共同鄰居,聯絡不大 節點6慘兮兮,雖然位於中間,但是都與他聯絡不...
一種新的矩形聚類演算法
一種新的矩形聚類演算法 聚類,是資料探勘一種重要的手段,通常所見到的聚類,大都是多維向量點 基於距離的聚類演算法,比如 k means 密度聚類等。本文所討論的是擴充套件物件的聚類,與多維向量點聚類有著明顯的差別,擴充套件物件是非點的物件,延用多維向量點之間的距離是無法準確表達擴充套件物件之間的聚合...
一種基於密度峰值的聚類演算法
2014年science刊發了一篇標題為clustering by fast search and find of density peaks的文章,文章中介紹了一種基於密度峰值的聚類演算法。傳統的聚類演算法k means,通常不適用於非球形的簇。這裡所謂的球形簇是根據k means演算法基本原理得...