深入淺出——基於密度的聚類方法

原文出自:https://blog.csdn.net/u013709270/article/details/77926813

1、前言

我們生活在數據大爆炸時代,每時每刻都在產生海量的數據如視頻,文本,圖像和博客等。由於數據的類型和大小已經超出了人們傳統手工處理的能力範圍,聚類,作爲一種最常見的無監督學習技術,可以幫助人們給數據自動打標籤,已經獲得了廣泛應用。聚類的目的就是把不同的數據點按照它們的相似與相異度分割成不同的簇(注意:簇就是把數據劃分後的子集),確保每個簇中的數據都是儘可能相似,而不同的簇裏的數據儘可能的相異。從模式識別的角度來講,聚類就是在發現數據中潛在的模式,幫助人們進行分組歸類以達到更好理解數據的分佈規律。

聚類的應用非常廣泛,比如在商業應用方面,聚類可以幫助市場營銷人員將客戶按照他們的屬性分層,發現不同的客戶羣和他們的購買傾向(如下圖將客戶按照他們對顏色喜好歸類)。這樣公司就可以尋找潛在的市場,更高效地開發制定化的產品與服務。在文本分析處理上,聚類可以幫助新聞工作者把最新的微博按照的話題相似度進行分類,而快速得出熱點新聞和關注對象。在生物醫學上,可以根據對相似表達譜的基因進行聚類,從而知道未知基因的功能。


這裏寫圖片描述

聚類可以將大規模的客戶數據按照客戶喜好進行歸類,比如該圖展示了聚類後發現了3個簇

由於聚類是無監督學習方法,不同的聚類方法基於不同的假設和數據類型,比如基於。由於數據通常可以以不同的角度進行歸類,因此沒有萬能的通用聚類算法,並且每一種聚類算法都有其侷限性和偏見性。也就是說某種聚類算法可能在市場數據上效果很棒,但是在基因數據上就無能爲力了。

聚類算法很多,包括基於劃分的聚類算法(如:k-means),基於層次的聚類算法(如:BIRCH),基於密度的聚類算法(如:DBSCAN),基於網格的聚類算法( 如:STING )等等。本文將介紹聚類中一種最常用的方法——基於密度的聚類方法(density-based clustering)。

2、DBSCAN原理及其實現

相比其他的聚類方法,基於密度的聚類方法可以在有噪音的數據中發現各種形狀和各種大小的簇。DBSCAN(Ester, 1996)是該類方法中最典型的代表算法之一(DBSCAN獲得2014 SIGKDD Test of Time Award)。其核心思想就是先發現密度較高的點,然後把相近的高密度點逐步都連成一片,進而生成各種簇。算法實現上就是,對每個數據點爲圓心,以eps爲半徑畫個圈(稱爲鄰域eps-neigbourhood),然後數有多少個點在這個圈內,這個數就是該點密度值。然後我們可以選取一個密度閾值MinPts,如圈內點數小於MinPts的圓心點爲低密度的點,而大於或等於MinPts的圓心點高密度的點(稱爲核心點Core point)。如果有一個高密度的點在另一個高密度的點的圈內,我們就把這兩個點連接起來,這樣我們可以把好多點不斷地串聯出來。之後,如果有低密度的點也在高密度的點的圈內,把它也連到最近的高密度點上,稱之爲邊界點。這樣所有能連到一起的點就成一了個簇,而不在任何高密度點的圈內的低密度點就是異常點。下圖展示了DBSCAN的工作原理。

這裏寫圖片描述
當設置MinPts=4的時候,紅點爲高密度點,藍點爲異常點,黃點爲邊界點。紅黃點串成一起成了一個簇。

由於DBSCAN是靠不斷連接鄰域內高密度點來發現簇的,只需要定義鄰域大小和密度閾值,因此可以發現不同形狀,不同大小的簇。下圖展示了一個二維空間的DBSCAN聚類結果。

這裏寫圖片描述
DBSCAN可以發現2個弧形的簇

DBSCAN算法僞碼錶達如下:

這裏寫圖片描述

DBSCAN實現僞碼(來源: Han 2011)

3、發現不同密度的簇

由於DBSCAN使用的是全局的密度閾值MinPts, 因此只能發現密度不少於MinPts的點組成的簇,即很難發現不同密度的簇。其成功與失敗的情況舉例如下:

這裏寫圖片描述

左圖有三個簇,一個全局密度閾值可以把三個簇分開。但是在右圖中,一個閾值無法把三個簇分開,過高的閾值會把C3全部變成異常點,過低的閾值會把C1和C2合併起來。(來源:http://www.sciencedirect.com/science/article/pii/S0031320316301571

爲了解決其發現不同密度的簇,目前已經有很多新的方法被髮明出來,比如OPTICS(Ordering points to identify the clustering structure)將鄰域點按照密度大小進行排序,再用可視化的方法來發現不同密度的簇,如下圖所示。OPTICS必須由其他的算法在可視化的圖上查找“山谷”來發現簇,因此其性能直接受這些算法的約束。

這裏寫圖片描述
OPTICS將數據以密度的形式排序並展示,不同的山谷就是不同密度大小的簇。(來源:https://en.wikipedia.org/wiki/OPTICS_algorithm

另外SNN採用一種基於KNN(最近鄰)來算相似度的方法來改進DBSCAN。對於每個點,我們在空間內找出離其最近的k個點(稱爲k近鄰點)。兩個點之間相似度就是數這兩個點共享了多少個k近鄰點。如果這兩個點沒有共享k近鄰點或者這兩個點都不是對方的k近鄰點,那麼這兩個點相似度就是0。然後我們把DBSCAN裏面的距離公式替換成SNN相似度,重新算每個點的鄰域和密度,就可以發現不同密度的簇了。SNN的核心就是,把原始的密度計算替換成基於每對點之間共享的鄰域的範圍,而忽略其真實的密度分佈。SNN的缺點就是必須定義最近鄰個數k, 而且其性能對k的大小很敏感。下圖展示了SNN計算相似度的方法。



這裏寫圖片描述

i 點和 j 點共享4個近鄰點,所以它們相似度爲4


2014年Science雜誌刊登了一種基於密度峯值的算法DP(Clustering by fast search and find of density peaks),也是採用可視化的方法來幫助查找不同密度的簇。其思想爲每個簇都有個最大密度點爲簇中心,每個簇中心都吸引並連接其周圍密度較低的點,且不同的簇中心點都相對較遠。爲實現這個思想,它首先計算每個點的密度大小(也是數多少點在鄰域eps-neigbourhood內),然後再計算每個點到其最近的且比它密度高的點的距離。這樣對每個點我們都有兩個屬性值,一個是其本身密度值,一個是其到比它密度高的最近點的距離值。對這兩個屬性我們可以生成一個2維圖表(決策圖),那麼在右上角的幾個點就可以代表不同的簇的中心了,即密度高且離其他簇中心較遠。然後我們可以把其他的點逐步連接到離其最近的且比它密度高的點,直到最後連到某個簇中心點爲止。這樣所有共享一個簇中心的點都屬於一個簇,而離其他點較遠且密度很低的點就是異常點了。由於這個方法是基於相對距離和相對密度來連接點的,所以其可以發現不同密度的簇。DP的缺陷就在於每個簇必須有個最大密度點作爲簇中心點,如果一個簇的密度分佈均與或者一個簇有多個密度高的點,其就會把某些簇分開成幾個子簇。另外DP需要用戶指定有多少個簇,在實際操作的時候需要不斷嘗試調整。下圖展示了一個DP生成的決策圖。



這裏寫圖片描述

左圖爲5個簇的分佈,右圖爲DP生成的決策圖,其右上角5個點就是左圖五個簇的中心點。(來源:http://science.sciencemag.org/content/344/6191/1492


除此之外,還可以用密度比估計(Density-ratio estimation)來克服DBSCAN無法發現不同密度簇的缺陷。密度比的核心思想就是對每個點,計算其密度與其鄰域密度的比率,然後用密度比計算替換DBSCAN的密度計算來發現核心點Core point,而其他過程和DBSCAN不變。這樣一來,每個局部高密度點就會被選出來作爲核心點,從而發現不同密度的簇。基於這個思想,我們還可以把原始數據按其密度分佈進行標準化(ReScale),即把密度高的區域進行擴張,密度低的區域繼續收縮。這樣以來,不同密度的簇就可以變成密度相近的簇了,我們再在標準化後的數據上直接跑DBSCAN就搞定了。這種方法需要用戶設置鄰域範圍來計算密度比,下圖展示了標準化前後的數據分佈對比。

這裏寫圖片描述
不同密度的簇在(ReScale)標準化後,變成密度相近的簇,進而DBSCAN可以用全局閾值發現不同的簇

4、討論

基於密度的聚類是一種非常直觀的聚類方法,即把臨近的密度高的區域練成一片形成簇。該方法可以找到各種大小各種形狀的簇,並且具有一定的抗噪音特性。在日常應用中,可以用不同的索引方法或用基於網格的方法來加速密度估計,提高聚類的速度。基於密度的聚類也可以用在流數據和分佈式數據中,關於其他方向的應用,詳見(Aggarwal 2013).


參考文獻 :

  1. Aggarwal, C. C., & Reddy, C. K.(Eds.). (2013). Data clustering: algorithms and applications. CRC press.

  2. Ankerst, M., Breunig, M. M., Kriegel, H.P., & Sander, J. (1999, June). OPTICS: ordering points to identify theclustering structure. In ACM Sigmod record (Vol. 28, No. 2, pp. 49-60). ACM.

  3. Ertöz, L., Steinbach, M., & Kumar,V. (2003, May). Finding clusters of different sizes, shapes, and densities innoisy, high dimensional data. In Proceedings of the 2003 SIAM InternationalConference on Data Mining(pp. 47-58). Society for Industrial and AppliedMathematics.

  4. Ester, M., Kriegel, H. P., Sander, J.,& Xu, X. (1996, August). A density-based algorithm for discovering clustersin large spatial databases with noise. In SIGKDD (Vol. 96, No. 34, pp.226-231).

  5. Han, J., Pei, J., & Kamber, M.(2011).Data mining: concepts and techniques. Elsevier.

  6. Rodriguez, A., & Laio, A. (2014).Clustering by fast search and find of density peaks.Science,344(6191),1492-1496.

  7. Zhu, Y., Ting, K. M., & Carman, M.J. (2016). Density-ratio based clustering for discovering clusters with varyingdensities. Pattern Recognition, Volume 60, 2016, Pages 983-997, ISSN 0031-3203.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章