一: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)∧w∈Nϵ(