聚類算法總結
聚類算法的種類:
基於划分聚類算法(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 目前的許多算法都只是理論上的,經常處於某種假設之下,比如聚類能很好的被分離,沒有突出的孤立點等,但是現實數據通常是很復雜的,噪聲很大,因此如何有效的消除噪聲的影響,提高處理現實數據的能力還有待進一步的提高。
目前看到的比較全面的分類算法,總結的還不錯.
2.4.1 主要分類方法介紹解決分類問題的方法很多[40-42] ,單一的分類方法主要包括:決策樹、貝葉斯、人工神經網絡、K-近鄰、支持向量機和基於關聯規則的分類等;另外還有用於組合單一分類方法的集成學習算法,如Bagging和Boosting等。
(1)決策樹
決策樹是用於分類和預測的主要技術之一,決策樹學習是以實例為基礎的歸納學習算法,它着眼於從一組無次序、無規則的實例中推理出以決策樹表示的分類規則。構造決策樹的目的是找出屬性和類別間的關系,用它來預測將來未知類別的記錄的類別。它采用自頂向下的遞歸方式,在決策樹的內部節點進行屬性的比較,並根據不同屬性值判斷從該節點向下的分支,在決策樹的葉節點得到結論。
主要的決策樹算法有ID3、C4.5(C5.0)、CART、PUBLIC、SLIQ和SPRINT算法等。它們在選擇測試屬性采用的技術、生成的決策樹的結構、剪枝的方法以及時刻,能否處理大數據集等方面都有各自的不同之處。
(2)貝葉斯
貝葉斯(Bayes)分類算法是一類利用概率統計知識進行分類的算法,如朴素貝葉斯(Naive Bayes)算法。這些算法主要利用Bayes定理來預測一個未知類別的樣本屬於各個類別的可能性,選擇其中可能性最大的一個類別作為該樣本的最終類別。由於貝葉斯定理的成立本身需要一個很強的條件獨立性假設前提,而此假設在實際情況中經常是不成立的,因而其分類准確性就會下降。為此就出現了許多降低獨立性假設的貝葉斯分類算法,如TAN(Tree Augmented Na?ve Bayes)算法,它是在貝葉斯網絡結構的基礎上增加屬性對之間的關聯來實現的。
(3)人工神經網絡
人工神經網絡(Artificial Neural Networks,ANN)是一種應用類似於大腦神經突觸聯接的結構進行信息處理的數學模型。在這種模型中,大量的節點(或稱”神經元”,或”單元”)之間相互聯接構成網絡,即”神經網絡”,以達到處理信息的目的。神經網絡通常需要進行訓練,訓練的過程就是網絡進行學習的過程。訓練改變了網絡節點的連接權的值使其具有分類的功能,經過訓練的網絡就可用於對象的識別。
目前,神經網絡已有上百種不同的模型,常見的有BP網絡、徑向基RBF網絡、Hopfield網絡、隨機神經網絡(Boltzmann機)、競爭神經網絡(Hamming網絡,自組織映射網絡)等。但是當前的神經網絡仍普遍存在收斂速度慢、計算量大、訓練時間長和不可解釋等缺點。
(4)k-近鄰
k-近鄰(kNN,k-Nearest Neighbors)算法是一種基於實例的分類方法。該方法就是找出與未知樣本x距離最近的k個訓練樣本,看這k個樣本中多數屬於哪一類,就把x歸為那一類。k-近鄰方法是一種懶惰學習方法,它存放樣本,直到需要分類時才進行分類,如果樣本集比較復雜,可能會導致很大的計算開銷,因此無法應用到實時性很強的場合。
(5)支持向量機
支持向量機(SVM,Support Vector Machine)是Vapnik根據統計學習理論提出的一種新的學習方法[43] ,它的最大特點是根據結構風險最小化准則,以最大化分類間隔構造最優分類超平面來提高學習機的泛化能力,較好地解決了非線性、高維數、局部極小點等問題。對於分類問題,支持向量機算法根據區域中的樣本計算該區域的決策曲面,由此確定該區域中未知樣本的類別。
(6)基於關聯規則的分類
關聯規則挖掘是數據挖掘中一個重要的研究領域。近年來,對於如何將關聯規則挖掘用於分類問題,學者們進行了廣泛的研究。關聯分類方法挖掘形如condset→C的規則,其中condset是項(或屬性-值對)的集合,而C是類標號,這種形式的規則稱為類關聯規則(class association rules,CARS)。關聯分類方法一般由兩步組成:第一步用關聯規則挖掘算法從訓練數據集中挖掘出所有滿足指定支持度和置信度的類關聯規則;第二步使用啟發式方法從挖掘出的類關聯規則中挑選出一組高質量的規則用於分類。屬於關聯分類的算法主要包括CBA[44] ,ADT[45] ,CMAR[46] 等。
(7)集成學習(Ensemble Learning)
實際應用的復雜性和數據的多樣性往往使得單一的分類方法不夠有效。因此,學者們對多種分類方法的融合即集成學習進行了廣泛的研究。集成學習已成為國際機器學習界的研究熱點,並被稱為當前機器學習四個主要研究方向之一。
集成學習是一種機器學習范式,它試圖通過連續調用單個的學習算法,獲得不同的基學習器,然后根據規則組合這些學習器來解決同一個問題,可以顯著的提高學習系統的泛化能力。組合多個基學習器主要采用(加權)投票的方法,常見的算法有裝袋[47] (Bagging),提升/推進[48, 49] (Boosting)等。
有關分類器的集成學習見圖2-5。集成學習由於采用了投票平均的方法組合多個分類器,所以有可能減少單個分類器的誤差,獲得對問題空間模型更加准確的表示,從而提高分類器的分類准確度。
圖2-5:分類器的集成學習
以上簡單介紹了各種主要的分類方法,應該說其都有各自不同的特點及優缺點。對於數據庫負載的自動識別,應該選擇哪種方法呢?用來比較和評估分類方法的標准[50] 主要有:(1)預測的准確率。模型正確地預測新樣本的類標號的能力;(2)計算速度。包括構造模型以及使用模型進行分類的時間;(3)強壯性。模型對噪聲數據或空缺值數據正確預測的能力;(4)可伸縮性。對於數據量很大的數據集,有效構造模型的能力;(5)模型描述的簡潔性和可解釋性。模型描述愈簡潔、愈容易理解,則愈受歡迎。
2.4.1 主要分類方法介紹解決分類問題的方法很多[40-42] ,單一的分類方法主要包括:決策樹、貝葉斯、人工神經網絡、K-近鄰、支持向量機和基於關聯規則的分類等;另外還有用於組合單一分類方法的集成學習算法,如Bagging和Boosting等。
(1)決策樹
決策樹是用於分類和預測的主要技術之一,決策樹學習是以實例為基礎的歸納學習算法,它着眼於從一組無次序、無規則的實例中推理出以決策樹表示的分類規則。構造決策樹的目的是找出屬性和類別間的關系,用它來預測將來未知類別的記錄的類別。它采用自頂向下的遞歸方式,在決策樹的內部節點進行屬性的比較,並根據不同屬性值判斷從該節點向下的分支,在決策樹的葉節點得到結論。
主要的決策樹算法有ID3、C4.5(C5.0)、CART、PUBLIC、SLIQ和SPRINT算法等。它們在選擇測試屬性采用的技術、生成的決策樹的結構、剪枝的方法以及時刻,能否處理大數據集等方面都有各自的不同之處。
(2)貝葉斯
貝葉斯(Bayes)分類算法是一類利用概率統計知識進行分類的算法,如朴素貝葉斯(Naive Bayes)算法。這些算法主要利用Bayes定理來預測一個未知類別的樣本屬於各個類別的可能性,選擇其中可能性最大的一個類別作為該樣本的最終類別。由於貝葉斯定理的成立本身需要一個很強的條件獨立性假設前提,而此假設在實際情況中經常是不成立的,因而其分類准確性就會下降。為此就出現了許多降低獨立性假設的貝葉斯分類算法,如TAN(Tree Augmented Na?ve Bayes)算法,它是在貝葉斯網絡結構的基礎上增加屬性對之間的關聯來實現的。
(3)人工神經網絡
人工神經網絡(Artificial Neural Networks,ANN)是一種應用類似於大腦神經突觸聯接的結構進行信息處理的數學模型。在這種模型中,大量的節點(或稱”神經元”,或”單元”)之間相互聯接構成網絡,即”神經網絡”,以達到處理信息的目的。神經網絡通常需要進行訓練,訓練的過程就是網絡進行學習的過程。訓練改變了網絡節點的連接權的值使其具有分類的功能,經過訓練的網絡就可用於對象的識別。
目前,神經網絡已有上百種不同的模型,常見的有BP網絡、徑向基RBF網絡、Hopfield網絡、隨機神經網絡(Boltzmann機)、競爭神經網絡(Hamming網絡,自組織映射網絡)等。但是當前的神經網絡仍普遍存在收斂速度慢、計算量大、訓練時間長和不可解釋等缺點。
(4)k-近鄰
k-近鄰(kNN,k-Nearest Neighbors)算法是一種基於實例的分類方法。該方法就是找出與未知樣本x距離最近的k個訓練樣本,看這k個樣本中多數屬於哪一類,就把x歸為那一類。k-近鄰方法是一種懶惰學習方法,它存放樣本,直到需要分類時才進行分類,如果樣本集比較復雜,可能會導致很大的計算開銷,因此無法應用到實時性很強的場合。
(5)支持向量機
支持向量機(SVM,Support Vector Machine)是Vapnik根據統計學習理論提出的一種新的學習方法[43] ,它的最大特點是根據結構風險最小化准則,以最大化分類間隔構造最優分類超平面來提高學習機的泛化能力,較好地解決了非線性、高維數、局部極小點等問題。對於分類問題,支持向量機算法根據區域中的樣本計算該區域的決策曲面,由此確定該區域中未知樣本的類別。
(6)基於關聯規則的分類
關聯規則挖掘是數據挖掘中一個重要的研究領域。近年來,對於如何將關聯規則挖掘用於分類問題,學者們進行了廣泛的研究。關聯分類方法挖掘形如condset→C的規則,其中condset是項(或屬性-值對)的集合,而C是類標號,這種形式的規則稱為類關聯規則(class association rules,CARS)。關聯分類方法一般由兩步組成:第一步用關聯規則挖掘算法從訓練數據集中挖掘出所有滿足指定支持度和置信度的類關聯規則;第二步使用啟發式方法從挖掘出的類關聯規則中挑選出一組高質量的規則用於分類。屬於關聯分類的算法主要包括CBA[44] ,ADT[45] ,CMAR[46] 等。
(7)集成學習(Ensemble Learning)
實際應用的復雜性和數據的多樣性往往使得單一的分類方法不夠有效。因此,學者們對多種分類方法的融合即集成學習進行了廣泛的研究。集成學習已成為國際機器學習界的研究熱點,並被稱為當前機器學習四個主要研究方向之一。
集成學習是一種機器學習范式,它試圖通過連續調用單個的學習算法,獲得不同的基學習器,然后根據規則組合這些學習器來解決同一個問題,可以顯著的提高學習系統的泛化能力。組合多個基學習器主要采用(加權)投票的方法,常見的算法有裝袋[47] (Bagging),提升/推進[48, 49] (Boosting)等。
有關分類器的集成學習見圖2-5。集成學習由於采用了投票平均的方法組合多個分類器,所以有可能減少單個分類器的誤差,獲得對問題空間模型更加准確的表示,從而提高分類器的分類准確度。
圖2-5:分類器的集成學習
以上簡單介紹了各種主要的分類方法,應該說其都有各自不同的特點及優缺點。對於數據庫負載的自動識別,應該選擇哪種方法呢?用來比較和評估分類方法的標准[50] 主要有:(1)預測的准確率。模型正確地預測新樣本的類標號的能力;(2)計算速度。包括構造模型以及使用模型進行分類的時間;(3)強壯性。模型對噪聲數據或空缺值數據正確預測的能力;(4)可伸縮性。對於數據量很大的數據集,有效構造模型的能力;(5)模型描述的簡潔性和可解釋性。模型描述愈簡潔、愈容易理解,則愈受歡迎。