主要的聚類算法可以划分為如下幾類:基於划分方法、基於層次方法、基於密度的方法、基於網格的方法以及基於模型的方法。目前在許多領域都得到了廣泛的研究和成功的應用,如用於模式識別、數據分析、圖像處理、市場研究、客戶分割、Web文檔分類等。常用的有k-means聚類算法、凝聚型層次聚類算法、神經網絡聚類算法之SOM,以及模糊聚類的FCM算法。
------------------------------------------------------------------------------
(以下部分轉自網上,具體出處忘了是哪里的,此處轉載,用以備查和學習,請原作者見諒)
---------------------------------------------------------------------------
聚類算法的種類:
基於划分聚類算法(partition clustering)
k-means: | 是一種典型的划分聚類算法,它用一個聚類的中心來代表一個簇,即在迭代過程中選擇的聚點不一定是聚類中的一個點,該算法只能處理數值型數據 |
k-modes: | K-Means算法的擴展,采用簡單匹配方法來度量分類型數據的相似度 |
k-prototypes: | 結合了K-Means和K-Modes兩種算法,能夠處理混合型數據 |
k-medoids: | 在迭代過程中選擇簇中的某點作為聚點,PAM是典型的k-medoids算法 |
CLARA: | CLARA算法在PAM的基礎上采用了抽樣技術,能夠處理大規模數據 |
CLARANS: | CLARANS算法融合了PAM和CLARA兩者的優點,是第一個用於空間數據庫的聚類算法 |
Focused CLARAN: | 采用了空間索引技術提高了CLARANS算法的效率 |
PCM: | 模糊集合理論引入聚類分析中並提出了PCM模糊聚類算法 |
基於層次聚類算法:
CURE: | 采用抽樣技術先對數據集D隨機抽取樣本,再采用分區技術對樣本進行分區,然后對每個分區局部聚類,最后對局部聚類進行全局聚類 |
ROCK: | 也采用了隨機抽樣技術,該算法在計算兩個對象的相似度時,同時考慮了周圍對象的影響 |
CHEMALOEN(變色龍算法): | 首先由數據集構造成一個K-最近鄰圖Gk ,再通過一個圖的划分算法將圖Gk 划分成大量的子圖,每個子圖代表一個初始子簇,最后用一個凝聚的層次聚類算法反復合並子簇,找到真正的結果簇 |
SBAC: | SBAC算法則在計算對象間相似度時,考慮了屬性特征對於體現對象本質的重要程度,對於更能體現對象本質的屬性賦予較高的權值 |
BIRCH: | BIRCH算法利用樹結構對數據集進行處理,葉結點存儲一個聚類,用中心和半徑表示,順序處理每一個對象,並把它划分到距離最近的結點,該算法也可以作為其他聚類算法的預處理過程 |
BUBBLE: | BUBBLE算法則把BIRCH算法的中心和半徑概念推廣到普通的距離空間 |
BUBBLE-FM: | BUBBLE-FM算法通過減少距離的計算次數,提高了BUBBLE算法的效率 |
基於密度聚類算法:
DBSCAN: | DBSCAN算法是一種典型的基於密度的聚類算法,該算法采用空間索引技術來搜索對象的鄰域,引入了“核心對象”和“密度可達”等概念,從核心對象出發,把所有密度可達的對象組成一個簇 |
GDBSCAN: | 算法通過泛化DBSCAN算法中鄰域的概念,以適應空間對象的特點 |
DBLASD: | |
OPTICS: | OPTICS算法結合了聚類的自動性和交互性,先生成聚類的次序,可以對不同的聚類設置不同的參數,來得到用戶滿意的結果 |
FDC: | FDC算法通過構造k-d tree把整個數據空間划分成若干個矩形空間,當空間維數較少時可以大大提高DBSCAN的效率 |
基於網格的聚類算法:
STING: | 利用網格單元保存數據統計信息,從而實現多分辨率的聚類 |
WaveCluster: | 在聚類分析中引入了小波變換的原理,主要應用於信號處理領域。(備注:小波算法在信號處理,圖形圖像,加密解密等領域有重要應用,是一種比較高深和牛逼的東西) |
CLIQUE: | 是一種結合了網格和密度的聚類算法 |
OPTIGRID: | |
基於神經網絡的聚類算法:
自組織神經網絡SOM: | 該方法的基本思想是--由外界輸入不同的樣本到人工的自組織映射網絡中,一開始時,輸入樣本引起輸出興奮細胞的位置各不相同,但自組織后會形成一些細胞群,它們分別代表了輸入樣本,反映了輸入樣本的特征 |
基於統計學的聚類算法:
COBWeb: | COBWeb是一個通用的概念聚類方法,它用分類樹的形式表現層次聚類 |
CLASSIT: | |
AutoClass: | 是以概率混合模型為基礎,利用屬性的概率分布來描述聚類,該方法能夠處理混合型的數據,但要求各屬性相互獨立 |
---------------------------------------------------------
幾種常用的聚類算法從可伸縮性、適合的數據類型、高維性(處理高維數據的能力)、異常數據的抗干擾度、聚類形狀和算法效率6個方面進行了綜合性能評價,評價結果如表1所示:
算法名稱 |
可伸縮性 |
適合的數據類型 |
高維性 |
異常數據的抗干擾性 |
聚類形狀 |
算法效率 |
WaveCluster |
很高 |
數值型 |
很高 |
較高 |
任意形狀 |
很高 |
ROCK |
很高 |
混合型 |
很高 | 很高 |
任意形狀 |
一般 |
BIRCH |
較高 |
數值型 |
較低 |
較低 |
球形 |
很高 |
CURE |
較高 |
數值型 |
一般 |
很高 |
任意形狀 |
較高 |
K-Prototypes |
一般 |
混合型 |
較低 |
較低 |
任意形狀 |
一般 |
DENCLUE |
較低 |
數值型 |
較高 |
一般 |
任意形狀 |
較高 |
OptiGrid |
一般 |
數值型 |
較高 |
一般 |
任意形狀 |
一般 |
CLIQUE |
較高 |
數值型 |
較高 |
較高 |
任意形狀 |
較低 |
DBSCAN |
一般 |
數值型 |
較低 |
較高 |
任意形狀 |
一般 |
CLARANS |
較低 |
數值型 |
較低 |
較高 |
球形 |
較低 |
---------------------------------------------------------
目前聚類分析研究的主要內容:
對聚類進行研究是數據挖掘中的一個熱門方向,由於以上所介紹的聚類方法都存在着某些缺點,因此近些年對於聚類分析的研究很多都專注於改進現有的聚類方法或者是提出一種新的聚類方法。以下將對傳統聚類方法中存在的問題以及人們在這些問題上所做的努力做一個簡單的總結:
1 從以上對傳統的聚類分析方法所做的總結來看,不管是k-means方法,還是CURE方法,在進行聚類之前都需要用戶事先確定要得到的聚類的數目。然而在現實數據中,聚類的數目是未知的,通常要經過不斷的實驗來獲得合適的聚類數目,得到較好的聚類結果。
2 傳統的聚類方法一般都是適合於某種情況的聚類,沒有一種方法能夠滿足各種情況下的聚類,比如BIRCH方法對於球狀簇有很好的聚類性能,但是對於不規則的 聚類,則不能很好的工作;K-medoids方法不太受孤立點的影響,但是其計算代價又很大。因此如何解決這個問題成為當前的一個研究熱點,有學者提出將 不同的聚類思想進行融合以形成新的聚類算法,從而綜合利用不同聚類算法的優點,在一次聚類過程中綜合利用多種聚類方法,能夠有效的緩解這個問題。
3 隨着信息時代的到來,對大量的數據進行分析處理是一個很龐大的工作,這就關系到一個計算效率的問題。有文獻提出了一種基於最小生成樹的聚類算法,該算法通 過逐漸丟棄最長的邊來實現聚類結果,當某條邊的長度超過了某個閾值,那么更長邊就不需要計算而直接丟棄,這樣就極大地提高了計算效率,降低了計算成本。
4 處理大規模數據和高維數據的能力有待於提高。目前許多聚類方法處理小規模數據和低維數據時性能比較好,但是當數據規模增大,維度升高時,性能就會急劇下 降,比如k-medoids方法處理小規模數據時性能很好,但是隨着數據量增多,效率就逐漸下降,而現實生活中的數據大部分又都屬於規模比較大、維度比較 高的數據集。有文獻提出了一種在高維空間挖掘映射聚類的方法PCKA(Projected Clustering based on the K-Means Algorithm),它從多個維度中選擇屬性相關的維度,去除不相關的維度,沿着相關維度進行聚類,以此對高維數據進行聚類。
5 目前的許多算法都只是理論上的,經常處於某種假設之下,比如聚類能很好的被分離,沒有突出的孤立點等,但是現實數據通常是很復雜的,噪聲很大,因此如何有效的消除噪聲的影響,提高處理現實數據的能力還有待進一步的提高。