Science上發表的超贊聚類算法


本博客已經遷往http://www.kemaswill.com/, 博客園這邊也會繼續更新, 歡迎關注~

 

作者(Alex Rodriguez, Alessandro Laio)提出了一種很簡潔優美的聚類算法, 可以識別各種形狀的類簇, 並且其超參數很容易確定.

算法思想

該算法的假設是, 類簇的中心由一些局部密度比較低的點圍繞, 並且這些點距離其他高局部密度的點的距離都比較大. 首先定義兩個值: 局部密度$\rho_i$以及到高局部密度點的距離$\delta_i$:

$\rho_i=\sum_j\chi(d_{ij}-d_c)$

其中

$$\chi(x)= \begin{cases}1 & if x<0\\ 0& otherwise \end{cases}$$ $d_c$是一個截斷距離, 是一個超參數. 所以$\rho_i$相當於距離點$i$的距離小於$d_c$的點的個數. 由於該算法只對$\rho_i$的相對值敏感, 所以對$d_c$的選擇比較魯棒, 一種推薦做法是選擇$d_c$使得平均每個點的鄰居數為所有點的1%-2%.

$\delta_i=\min_{j:\rho_j>\rho_i}(d_{ij})$

對於密度最大的點, 設置$\delta_i=max_j(d_{ij})$. 注意只有那些密度是局部或者全局最大的點才會有遠大於正常的相鄰點間距.

聚類過程

那些有着比較大的局部密度$\rho_i$和很大的$\delta_i$的點被認為是類簇的中心. 局部密度較小但是$\delta_i$較大的點是異常點.在確定了類簇中心之后, 所有其他點和距離其最近的密度大於該點的點屬於同一個類簇. 圖例如下:

Screen Shot 2014-06-28 at 下午09.26.59

左圖是所有點在二維空間的分布, 右圖是以$\rho$為橫坐標, 以$\delta$為縱坐標, 這種圖稱作決策圖(decision tree). 可以看到, 1和10兩個點的$\rho_i$和$\delta_i$都比較大, 作為類簇的中心點. 26, 27, 28三個點的$\delta_i$也比較大, 但是$\rho_i$較小, 所以是異常點.

聚類分析

在聚類分析中, 通常需要確定每個點划分給某個類簇的可靠性. 在該算法中, 可以首先為每個類簇定義一個邊界區域(border region), 亦即划分給該類簇但是距離其他類簇的點的距離小於$d_c$的點. 然后為每個類簇找到其邊界區域的局部密度最大的點, 令其局部密度為$\rho_h$. 該類簇中所有局部密度大於$\rho_h$的點被認為是類簇核心的一部分(亦即將該點划分給該類簇的可靠性很大), 其余的點被認為是該類簇的光暈(halo), 亦即可以認為是噪音. 圖例如下

Screen Shot 2014-06-28 at 下午09.27.11

A圖為生成數據的概率分布, B, C二圖為分別從該分布中生成了4000, 1000個點. D, E分別是B, C兩組數據的決策圖(decision tree), 可以看到兩組數據都只有五個點有比較大的$\rho_i$和很大的$\delta_i$. 這些點作為類簇的中心, 在確定了類簇的中心之后, 每個點被划分到各個類簇(彩色點), 或者是划分到類簇光暈(黑色點). F圖展示的是隨着抽樣點數量的增多, 聚類的錯誤率在逐漸下降, 說明該算法是魯棒的.

最后展示一下該算法在各種數據分布上的聚類效果, 非常贊.

Screen Shot 2014-06-28 at 下午09.27.22

參考文獻:

[1]. Clustering by fast search and find of density peak. Alex Rodriguez, Alessandro Laio


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM