作者(alex rodriguez, alessandro laio)提出了一種很簡潔優美的聚類演算法, 可以識別各種形狀的類簇, 並且其超引數很容易確定.
演算法思想
聚類過程
那些有著比較大的區域性密度
ρi和很大的
δi的點被認為是類簇的中心. 區域性密度較小但是
δi較大的點是異常點.在確定了類簇中心之後, 所有其他點和距離其最近的密度大於該點的點屬於同乙個類簇. 圖例如下:
[/url]
左圖是所有點在二維空間的分布, 右圖是以
ρ為橫座標, 以
δ為縱座標, 這種圖稱作決策圖(decision tree). 可以看到, 1和10兩個點的ρi和
δi都比較大, 作為類簇的中心點. 26, 27, 28三個點的
δi也比較大, 但是
ρi較小, 所以是異常點.
聚類分析
在聚類分析中, 通常需要確定每個點劃分給某個類簇的可靠性. 在該演算法中, 可以首先為每個類簇定義乙個邊界區域(border region), 亦即劃分給該類簇但是距離其他類簇的點的距離小於
dc的點. 然後為每個類簇找到其邊界區域的區域性密度最大的點, 令其區域性密度為
ρh. 該類簇中所有區域性密度大於
ρh的點被認為是類簇核心的一部分(亦即將該點劃分給該類簇的可靠性很大), 其餘的點被認為是該類簇的光暈(halo), 亦即可以認為是噪音. 圖例如下
[url=
a圖為生成資料的概率分布, b, c二圖為分別從該分布中生成了4000, 1000個點. d, e分別是b, c兩組資料的決策圖(decision tree), 可以看到兩組資料都只有五個點有比較大的
ρi和很大的
δi. 這些點作為類簇的中心, 在確定了類簇的中心之後, 每個點被劃分到各個類簇(彩色點), 或者是劃分到類簇光暈(黑色點). f圖展示的是隨著抽樣點數量的增多, 聚類的錯誤率在逐漸下降, 說明該演算法是魯棒的.
最後展示一下該演算法在各種資料分布上的聚類效果, 非常贊.
[url=
參考文獻:
[1]. clustering by fast search and find of density peak. alex rodriguez, alessandro laio
from:
Science上發表的簡單快速的聚類方法
工作以後發現自己學習和研究的時間變得少得可憐。我之所以對這個演算法感興趣,主要是因為看到 中可以識別那麼奇形怪狀的點簇,然後又只有兩個指標,好像很有道理又很好算的樣子。沒想到被坑慘了,我用了差不多兩個星期,偶爾下班後有時間看 寫 才把這個簡單的演算法實現下來。其中依然還有乙個引數需要手工調整,就是d...
超讚的lua開發工具zerobrane
zerobrane是用lua和wxwidgets編寫的ide,而且是跨平台的,支援多種lua直譯器,包括love2d。而且最讚的是支援即時程式設計,可以在執行時直接修改變數,直接看到結果,不用重新執行,厲害!那我就在這裡幫助宣傳一下。即時程式設計時選中 project run asscratchpa...
缺少配色靈感,整理超全超讚的配色工具幫你
adobe 出品的配色工具,早期以 adobe kuler 的名字投入市場,現在更名 adobe color cc。coolors 是一款直觀而快速的配色工具,你可以以更加簡單的方式建立色彩組合,同樣可以直接從中取色,還可以生成不同的格式,比如svg pdf或者scss,可用於android ios...