聚類演算法綜述
聚類分析提供由個別資料物件到資料物件所指派到簇的抽象。此外,一些聚類技術使用簇原型(即代表簇中其他物件的資料物件)來刻畫簇的特徵。聚類分析是研究發現最具有代表性的簇原型的技術。注意:簇的定義是不精確的,而最好的定義依賴於資料的特徵和期望的結果。聚類分析與其他將資料物件分組的技術有關。
1 聚類型別
不同的聚類型別:
層次的(巢狀的)與劃分的(非巢狀的),互斥的,重疊的與模糊的,完全的與部分的。
劃分聚類:簡單地將資料物件劃分成不重疊的子集(簇),使得每個資料物件恰在一個子集中。層次聚類:允許簇具有子簇,層次聚類是巢狀簇的集簇,組織成一棵樹。層次聚類可以看作劃分聚類的序列,劃分聚類可以通過取序列的任意成員得到,即通過在一個特定層剪斷層次樹得到。
互斥聚類:每個物件都指派到單個簇。重疊的或非互斥的聚類用來反映一個物件同時屬於多個組(類)這一事實。
模糊聚類:每個物件以一個0(絕對不屬於)和1(絕對屬於)之間的隸屬權值屬於每個簇。
完全聚類:將每一個(全部的物件)指派到一個簇,而部分聚類是有些物件沒有被聚類。
不同的簇型別:
明顯分離的:不同組中的任意兩點之間的距離都大於組內任意兩點之間的距離。明顯分離的簇不必是球形的,可以具有任意形狀。
基於原型的:簇是物件的集合,其中每個物件到定義該簇的原型的距離比到其他簇的原型的距離更近(或更加相似)。對於具有連續屬性的資料,簇的原型通常是質心,即簇中所有點的平均值。這種簇傾向於呈球狀。基於原型的聚類技術建立資料物件的單層劃分。
基於圖的:如果資料用圖表示,其中節點是物件,而邊代表物件之間的聯絡,則簇可以定義為連通分支,即互相連通但不與組外物件連通的物件組。當簇不規則或纏繞時,簇的這種定義是有用的。但是,當資料具有噪聲時就可能出現問題。也存在其他型別的基於圖的簇。一種方法是定義簇為團,即圖中相互之間完全連線的節點的集合。
基於密度的:簇是物件的稠密區域,被低密度的區域環繞。當簇不規則或互相盤繞,並且有噪聲和離群點時,常常使用基於密度的簇定義。
共同性質的(概念簇):把簇定義為有某種共同性質的物件的集合。發現這樣的簇的過程稱作概念聚類。
4.2 K均值
K均值是基於原型的、劃分的聚類技術。它試圖發現使用者指定個數(K)的簇(由質心代表)。
K均值聚類用於n維連續空間中的物件。K中心點使用中心點定義原型,其中中心點是一組點中最有代表性的點。K中心點聚類可以用於廣泛的資料,因為它只需要物件之間的鄰近性度量。儘管質心幾乎從來不對應實際的資料點,但是根據定義,中心點必須是一個實際的資料點。K均值的演算法步驟:首先選擇K個初始質心,其中K是使用者指定的引數,即所期望的簇的個數。每個點指派到最近的質心,而指派到一個質心的點集為一個簇。然後,根據指派到簇的點,更新每個簇的質心。重複指派和更新步驟,直到簇不發生變化,或等價的,直到質心不發生變化。演算法流程如下:
為了將點指派到最近的質心,我們需要鄰近性度量來量化所考慮的資料的“最近”概念,通常,對歐式空間中的點使用歐幾里得距離,對文件用餘弦相似性。第四步“重新計算每個簇的質心”,因為質心可能隨資料鄰近性度量和聚類目標不同而改變。聚類的目標通常用一個目標函式表示,該函式依賴於點之間,或點到簇的質心的鄰近性;如:最小化每個點到最近質心的距離的平方。然而,關鍵點是:一旦我們選定了鄰近性度量和目標函式,則應當選擇的質心可以從數學上確定。考慮鄰近性度量為歐幾里得距離的資料。我們使用誤差的平方和(SSE也稱散佈)作為度量聚類質量的目標函式。換言之,我們計算每個資料點的誤差,即它到最近質心的歐幾里得距離,然後計算誤差的平方和。給定由兩次執行K均值產生的兩個不同的簇集,我們更喜歡誤差平方和最小的那個,因為這意味聚類的原型(質心)是簇中點的更好代表。假設資料是文件資料,相似度用餘弦來度量。我們的目標是最大化簇中文件與簇的質心的相似性;該度量稱作凝聚度。對於該目標,可以證明,與歐幾里得資料一樣,簇的質心是均值。曼哈頓距離的質心是中位數。Bregman散度也是一種鄰近性度量,該散度函式的重要性為質心的K均值型別的聚類演算法的基礎。用該散度作為鄰近性度函式,則聚類演算法的收斂性、區域性最小等性質與通常的K均值相同。
當質心隨機初始化,K均值的不同執行將產生不同的總SSE。選擇適當的初始質心是基本K 均值過程的關鍵步驟。一種常見的方法是隨機地選取初始質心,但是簇的質量常常會很差的。處理選取初始質心問題的一種常見技術是:多次執行,每次使用一組不同的隨機初始質心,然後選取具有最小SSE的簇集。該策略雖然簡單,但是效果可能不好,這依賴於資料集合尋找的簇的個數。另外還有的技術包括:取一個樣本,並使用層次聚類技術對它聚類。從層次聚類中提取K個簇,並用這些簇的質心作為初始質心。該方法只在下列條件下有效
(1)樣本相對較小(層次聚類開銷較大);
(2)K相對於樣本大小較小。
還有一種選擇初始質心的方法:隨機地選擇第一個點,或取所有點的質心作為第一個點。然後,對於每個後繼初始質心,選擇離已經選取過的初始質心較遠的點。通常該方法用於點樣本。由於離群點很少,他們多半不會在隨機樣本中出現。
前面介紹的基本K均值存在一個問題:如果所有的點在指派步驟都未分配到某個簇,就會得到空簇。如果這種情況發生,則需要某種策略來選擇一個替補質心,否則的話,平方誤差將會偏大。一種方法是選擇一個距離當前任何質心最遠的點。另一種方法是從具有最大SSE的簇中選擇一個替補質心。我們還可能刪除那些很小的簇,因為它們常常代表離群點的組。一種降低SSE的明顯方法是找出更多簇,即使用很大的K。然而,在許多情況下,我們希望降低SSE,但並不想增加簇的個數。因為K均值常常收斂於區域性最小。一種常用的方法是交替地使用簇分裂和簇合並。
增量的更新質心(k-mean的線上版本):可以在點到簇的每次指派之後,增量地更新質心,而不是在所有的點都指派到簇中之後才更新簇的質心,每次需要零次或兩次質心更新。使用增量更新策略確保不會產生空簇。因為所有的簇都從單個點開始;並且一個簇只有單個點,則該點總是被指派到相同的簇。增量更新還有兩個優點:(1)可以調整點的相對權值。(2)使用不同於“最小化SSE”的目標。缺點:增量的更新質心可能導致次序的依賴性,即:所產生的簇可能依賴於點的處理次序。K均值收斂相當快。
二分K均值:為了得到K個簇,將所有點的集合分裂成兩個簇,從這些簇中選取一個繼續分裂,如此下去,直到產生K個簇。待分裂的簇有許多不同的選擇方法。可以選擇最大的簇,選擇具有最大SSE的簇,或者使用一個基於大小和SSE的標準進行選擇。二分K均值演算法最終的簇集並不代表使SSE區域性最小的聚類。二分K均值不太受初始化的困擾,因為它執行了多次二分試驗並選取具有最小SSE的試驗結果,還因為每步只有兩個質心。通過記錄K均值二分簇所產生的聚類序列,我們還可以使用二分K均值產生層次聚類。當簇具有非球形形狀或具有不同尺寸或密度時,K均值很難檢測到“自然的”簇。K均值的目標函式是最優化等尺寸和等密度的球形簇,或者明顯分離的簇。所以K均值只適合與上面的三種情況的聚類。
優缺點:K均值簡單並且可以用於各種資料型別。它也相當有效,儘管常常多次執行。然而,K均值並不適合所有的資料型別。它不能處理非球形簇、不同尺寸和不同密度的簇,儘管指定足夠大的簇個數時它通常可以發現純子簇。對包含離群點的資料進行聚類時,K均值也有問題。K均值僅限於具有中心(質心)概念的資料。K中心點沒有這種限制,但是開銷更大。
最後,給定一個諸如“最小化SSE”這樣的目標函式,可以把聚類視為優化問題。
3 凝聚的層次聚類
它通過如下的步驟產生層次聚類:開始,每個點作為一個單元簇,然後,重複地合併兩個最靠近的簇,直到產生單個的、包含所有點的簇。有兩種產生層次聚類的基本方法:
(1)凝聚的:從點作為個體簇開始,每一合併兩個最接近的簇。這需要定義簇的鄰接性的概念。(2)分裂的:從包含所有點的一個簇開始,每一步分裂一個簇,直到僅剩下單點簇。這種情況下,我們需要確定每一步分裂哪個簇,以及如何分裂。
其中凝聚層次聚類技術是常見的。層次聚類常常使用一種稱作樹狀圖的類似於樹的圖顯示。對於二維點的集合,層次聚類也可以使用巢狀圖表示。層次聚類的關鍵操作是計算兩個簇之間的鄰近度,並且正是簇的鄰近性定義區分了我們將討論的各種凝聚層次技術。簇的鄰近性通常用特定的簇型別定義。通常的方法有MIN、MAX和組平均,都源於簇的基於圖的觀點。MIN(也叫做單鏈)定義簇的鄰近度為不同簇的兩個最近的點之間的鄰近度,使用圖的術語即:不同結點子集中兩個結點之間的最短邊。單鏈技術擅長於處理非橢圓形狀的簇,但對噪聲和離群點很敏感。MAX(也叫全鏈)取不同簇中兩個最遠的點之間的鄰近度作為簇的鄰近度,使用圖的術語即:不同結點子集中兩個結點之間的最長邊。完全連線對噪聲和離群點不太敏感,但是它可能使大的簇破裂,並且偏好於球形。組平均:定義簇鄰近度為取自不同簇的所有點的平均逐對鄰近度。如果我們取基於原型的觀點,簇用質心代表,則不同的簇鄰近度定義就更加自然。使用質心時,簇的鄰近度一般定義為簇質心之間的鄰近度,另一種技術,Ward方法,也假定簇用其質心代表,但它使用合併兩個簇導致的SSE增加來度量兩個簇之間的鄰近性,像K均值一樣,Ward方法也試圖最小化點到其簇質心的距離的平方和。當兩個點之間的鄰近度取它們之間距離的平方時,Ward方法與組平均非常相似。
質心方法:通過計算簇質心之間的距離來計算兩個簇之間的鄰近度。質心方法具有一種其他層次聚類不具備的特性(常被認為是壞的):倒置的可能性。即合併的兩個簇可能比前一步合併的蔟對更相似。對於其他方法,被合併的簇之間的距離隨層次聚類進展單調地增加。
上面的所有方法都可以合併到一個叫Lance-Williams公式中去。任何使用該公式表示的層次聚類技術都不需要保留原來的資料點。替換地,鄰近度矩陣隨聚類而更新。
層次聚類的主要問題:
(1)缺乏全域性目標函式。凝聚層次聚類不能視為全域性優化一個目標函式。這樣的方法沒有區域性最小問題或很難選擇初始點的問題。
(2)處理不同大小的聚類能力。即如何處理待合併的蔟對的相對大小。有兩種方法:加權,平等的對待所有簇,非加權,考慮每個簇的點數。注意:術語加權和非加權是對資料而言,而不是對簇。即,平等的對待不同大小的簇意味著賦予不同簇中的點不同的權值,而考慮簇的大小則賦予不同簇中的點相同的權值。一般地,非加權的方法更可取,除非有理由相信個體點具有不同的權值:例如,或許物件類非均勻地抽樣。
(3)合併決策是最終的。對於合併兩個簇,凝聚層次演算法傾向於作出好的區域性決策,因為它們可以使用所有點的逐對相似度資訊。然而,一旦作出合併兩個簇的決策,以後就不能撤銷。有一些技術試圖克服“合併是最終的”這一限制。一種方法試圖通過如下方法來修補層次聚類,移動樹的分支以改善全域性目標函式。另一種方法使用劃分聚類技術(如K均值)來建立許多小簇,然後從這些小簇出發進行層次聚類。
優點和缺點:使用這類聚類演算法是因為基本應用(如建立一種分類法)需要層次結構。凝聚層次聚類演算法是昂貴的,所有合併是最終的,對於噪聲、高維資料(如文件資料),這也可能造成問題。先使用其他技術(如K均值)進行部分聚類,這兩個問題都可以在某種程度上加以解決。
層次聚類的空間複雜度O(m2)。總時間複雜度O(m2logm)。
4 DBSCAN
這是一種產生劃分聚類的基於密度的聚類演算法,簇的個數由演算法自動的確定。低密度區域中的點被視為噪聲而忽略,因而DBSCAN不產生完全聚類。
基於密度的聚類尋找被低密度區域分離的高密度區域。定義密度的方法有很多,在DBSCAN中使用的是基於中心的方法,在該方法中,資料集中特定點的密度通過對該點的Eps半徑之內的點計數(包括點本身)來估計。核心點:這些點在基於密度的簇內部。一個點是核心點,如果該點的給定鄰域內的點的個數超過給定的閾值MinPts,其中MinPts也是一個使用者指定的引數。邊界點:邊界點不是核心點,但他落在某個核心點的鄰域內。噪聲點:噪聲點是既非核心點也非邊界點的任何點。DBSCAN演算法可以非形式化的描述如下:任何兩個足夠靠近(相互之間的距離在Eps之內)的核心點將放在同一簇中。類似的,任何與核心點足夠靠近的邊界點也放到核心點相同的簇中。(如果一個邊界點靠近不同簇的核心點,則可能需要解決平局問題)。噪聲點被丟棄。
(1)該演算法的時間複雜度是O(m2),然而,在低維空間,有一些資料結構,如kd樹,使得可以有效的檢索特定點給定距離內的所有點,時間複雜度可以降低到O(mlogm)。
(2)選擇DBSCAN的引數(Eps和MinPts)。基本方法是觀察點到它的k個最近鄰的距離(稱為k-距離)的特性。對於屬於某個簇的點,如果k不大於簇的大小的話,則k-距離將很小。然而,對於不在簇中的點(如噪聲點),k-距離將相對較大。因此,如果我們對某個k,計算所有點的k-距離,以遞增的次序將他們排序,然後繪製排序後的值,則我們預期會看到k-距離的急劇變化,對應於合適的Eps值。
(3)變密度的簇:如果簇的密度變化很大,DBSCAN可能會有問題。
(4)DBSCAN優缺點。因為該方法使用簇的基於密度的定義,因此它是相對抗噪聲的,並且能夠處理任意形狀和大小的簇。它可以發現使用K均值不能發現的許多簇。缺點:不適合密度變化太大。對於高維資料,該方法也有問題,因為密度定義困難。最後,當鄰近計算需要計算所有的點對鄰近度時(對於高維資料,常常如此),DBSCAN可能是開銷很大的。
5 簇評估
由於簇的特性,簇評估技術未能很好開發,或者說不是聚類分析普遍使用的。儘管如此,簇評估,或者簇確認是重要的。由於存在大量不同的簇型別(在某種意義下,每種聚類演算法都定義了子集的簇型別),似乎每種情況都可能需要一種不同的評估度量。例如,K均值簇可能需要用SSE來評估,但是基於密度的簇不必是球形的,SSE全然不起作用。儘管如此,簇評估應該是聚類分析中的一部分。一個主要動機是,幾乎每種聚類演算法都會在資料集中發現簇,即便該資料集根本沒有自然的簇結構。簇確認的一些任務:
(1)確定資料集的聚類趨勢,即識別資料中是否實際存在非隨機結構。
(2)確定正確的簇個數;
(3)不引用附加的資訊,評估聚類分析結果對資料擬合情況;
(4)將聚類分析結果與已知的客觀結果(如,外部提供的類標號)比較。
(5)比較兩個簇集,確定哪個更好。
注意:第1、2、3項不適用任何外部資訊(他們是非監督技術),而第4項使用外部資訊。第5項可以用監督或非監督的方式執行。
評估的挑戰:
(1)簇的有效性度量可能受限於它的可用範圍;例如:聚類趨勢度量方面的大部分工作都是針對二、三維空間資料
(2)我們需要一個框架來解釋任意度量。匹配的優良度可以通過考察該值的統計分佈來度量,即這樣的值偶然出現的機率多大。
(3)如果度量太複雜,難以使用或難以理解,則很少有人願意使用它。傳統的,用於評估簇的各方面的評估度量或指標分成如下三類:
(1)非監督的:聚類結構的優良性度量,不考慮外部資訊。如SSE。簇的有效性的非監督度量常常可以進一步分為兩類:
(A)簇的凝聚性(緊湊性、緊緻性)度量確定簇中物件如果密切相關。
(B)簇的分離性(孤立性):度量確定一個簇如何不同於其他簇。非監督度量通常稱為內部指標,因為它們僅使用出現在資料集中的資訊。
(2)監督的:度量聚類演算法發現的聚類結構與某種外部結構的匹配程度。如熵,它度量簇標號與外部提供的標號的匹配程度。監督度量通常稱為外部指標,因為他們使用了不在資料集中出現的資訊。
(3)相對的:比較不同的聚類和簇。
5.1 非監督簇評估:使用凝聚度和分離度
如果有效性函式是凝聚度,則值越高越好。如果是分離度,則越低越好。對於基於圖的簇,簇的凝聚度可以定義為連線簇內點的鄰近度圖中邊的加權和;兩個簇之間的分離度可以用從一個簇的點到另一個簇的點的邊的加權和來度量。對於基於原型的簇,簇的凝聚度可以定義為關於簇原型(質心或中心點)的鄰近度的和;兩個簇之間的分離度可以用兩個簇原型的鄰近度度量。簇原型與總原型的分離度有時與簇原型之間的分離度直接相關。對於簇的凝聚度和分離度,通過使用加權和可以將它們組合成簇的有效性的總度量。儘管度量簇的凝聚性和分離性的基於圖的方法與基於原型的方法看上去截然不同,但是對於某些鄰近性度量它們是等價的。當鄰近度用歐幾里得距離度量時,簇之間分離性的傳統度量是組平方和(SSB),總SSB越高,簇之間的分離性越好。我們也可以使用物件對簇的總凝聚度或分離度的貢獻,來評估簇中的物件。對凝聚度和分離度貢獻越大的物件就越靠近簇的“內部”,反之,物件可能離簇的“邊緣”很近。
輪廓係數:結合了凝聚度和分離度。下面是如何計算個體點的輪廓係數(我們使用距離,但是類似的方法可以使用相似度):(1)對於第i個物件,計算它到簇中所有其他物件的平均距離。該值記為ai。
(2)對於第i個物件和不包含該物件的任意簇,計算該物件到給定簇中所有物件的平均距離,關於所有的簇,找出最小值;該值記為bi。
(3)對於第i個物件,
因為負值表示點到簇內點的平均距離 大於點到其他簇的最小平均距離bi。我們希望輪廓係數是正的( <bi),並且 越靠近0越好,因為當 =0時輪廓係數取其最大值1.我們可以簡單地取簇中點的輪廓係數的平均值,計算簇的平均輪廓係數。通過計算所有點的平均輪廓係數,可以得到聚類優良性的總度量。
5.2 非監督簇評估:使用鄰近度矩陣
有兩種:
(1)比較實際的鄰近度矩陣和理想的鄰近度矩陣;
(2)使用視覺化技術。理想的簇是這樣的簇,它的點與簇內所有點的相似度為1,而與其他簇的所有點的相似度為0,。這樣,如果將相似度矩陣的行和列排序,使得屬於相同的簇的物件在一起,則理想的相似度矩陣具有塊對角結構。鄰近度矩陣對於許多基於密度和基於近鄰的簇,這不是好的度量,因為它們不是球形的,並且常常與其他簇緊密地盤繞在一起。從理論上講,如果有明顯分離的簇,則相似度矩陣粗略地是塊對角的。如果不是,則鄰近度矩陣所顯示的模式可能揭示簇之間的聯絡。所有這些也可以用於相異度矩陣。
5.3 層次聚類的非監督簇評估
基於層次聚類的流行的評估度量——共性分類相關。兩個物件之間的共性分類距離是凝聚層次聚類技術首次將物件放在同一簇時的鄰近度。例如:如果兩個合併簇之間的最小距離是0.1,則一個簇中的所有點關於另一個簇中的各點的共性分類距離都是0.1。在共性分類距離矩陣中,項是每對物件之間的共性分類距離。點集的每個層次聚類的共性分類距離不同。共性相關係數是該矩陣與原來的相異度矩陣的項之間的相關度,是(特定型別的)層次聚類對資料擬合程度的標準度量。該度量的最常見應用時評估對於特定的資料型別,哪種型別的層次聚類最好。
確定正確的簇個數:多種非監督評估度量都可以用來近似地確定正確的或自然的簇個數。我們可以通過尋找簇個數的評估度量曲線圖中的拐點、尖峰或下降點,試圖發現簇的自然個數。
聚類趨勢。確定資料集中是否包含簇的一種明顯的方法是試著對他聚類。我們可以評估結果簇,至少有些簇具有好的質量,才能說資料集中包含簇。然而,事實是資料集中可能存在不同於我們的聚類演算法所能發現的簇型別。聚類趨勢度量:試圖估計資料集中是否包含簇,而不進行聚類。最常用的方法(特別對於歐幾里得空間資料)是使用統計檢驗來檢驗空間的隨機性。如Hopkins(霍普金斯)統計量。
5.4 簇有效性的監督度量
考慮劃分聚類的兩類不同的方法:
(1)使用分類的度量,如熵、純度、精度、召回率和F度量。這些度量評估簇包含單個類的物件的程度。
(2)涉及二後設資料的相似性度量。如:Jaccard係數。這些方法度量在多大程度上,同一類的兩個物件在同一個簇中,或相反。
層次聚類的監督評估更加困難,這裡,我們給出一個根據類標號集評估層次聚類方法的例子。類標號集可能比先前存在的簇結構更容易得到。該方法的關鍵思想是:評估層次聚類是否對於每個類,至少有一個簇相對較純,並且包含了該類的大部分物件。為了根據此目標評估層次聚類,我們對每個類,計算簇層次結構中每個簇的F度量,對於每個類,取最大的F度量。最後,通過計算每類的F度量的加權平均,計算層析聚類的總F度量,其中,權值基於類的大小。
5.5 評估簇有效性度量的顯著性
一種常用的方法是同統計學術語解釋有效性度量值。具體的說,我們試圖確定觀測值隨機得到的可能性有多大。值是好的,如果它是不尋常的。即它不像是隨機結果。這種顯著性有兩個方面:差別是否是統計顯著的(可重複的),差別的量級對於應用是否具有意義。
6 聚類分析:附加的問題和演算法
沒有一種演算法能夠適應所有的資料型別、簇和應用。在許多情況下,對於什麼是一個好的簇集,仍然憑主觀解釋。
K均值聚類可以看作一種統計聚類(混合模型)的特例,所以它假定所有的資料都來自球形高斯分佈,具有不同的均值,但是具有相同的協方差矩陣。DBSCAN不基於任何形式化模型,所以它不對資料的分佈做任何假定。K均值和DBSCAN,當簇具有很不相同的密度時,兩種演算法的效能都很差。K均值可以用於稀疏的高維資料,如文件資料。DBSCAN通常在這類資料上效能很差,因為多域高維資料,傳統的歐幾里得密度定義不能很好的處理。K均值可以發現不是明顯分離的簇,即便簇有重疊也可以發現,但是DBSCAN會合並有重疊的簇。K均值演算法的時間複雜度是O(m)而DBSCAN是O(m2),除非用於諸如低維歐幾里得資料這樣的特殊情況。DBSCAN多次執行產生相同的結果,而K均值通常使用隨機初始化質心。不會產生相同的結果。注意:噪聲可能導致單鏈等技術合併兩個不應當合併的簇。Chameleon、基於SNN密度的聚類和CURE在聚類的過程中顯式的處理噪聲和離群點。
簇特性:
(1)資料分佈:某些聚類演算法假定資料具有特定的分佈。更具體的說,他們常常假定可以用混合分佈對資料建模,其中每個簇對應於一個分佈。
(2)形狀:DBSCAN和單鏈技術可以處理任意形狀的簇,但是基於原型的方法和諸如全鏈和組平均這樣的層次聚類技術不能進行這樣的處理。Chameleon和CURE是專門用來處理這一問題的技術的例子。
(3)不同大小:許多聚類方法,當簇具有不同大小時不能很好的完成任務。
(4)不同的密度:具有很不相同的密度的簇可能對DBSCAN和K均值演算法造成問題,SNN密度聚類技術就是處理這一問題的。)(5)無明顯分離的簇。模糊聚類是一種旨在處理未形成明顯分離的簇的資料的技術。
(6)簇之間的聯絡。在大部分聚類技術中,都不明顯地考慮簇之間的聯絡,如簇的相對位置。自組織對映(SOM)是一種在聚類期間直接考慮簇之間聯絡的聚類技術。具體的,點到簇的指派影響鄰近簇的定義。
(7)子空間簇。簇可能只在維(屬性)的一個子集中存在,並且使用一個維集合確定的簇可能與使用另一個維集合確定的簇很不相同。簡單地在所有可能的維子集中尋找簇是不可行的。
聚類演算法的一般特性:
(1)次序依賴性。對於某些演算法,所產生的簇的質量和個數可能因資料處理的次序不同而顯著地變化。SOM是次序依賴演算法的一個例子。
(2)非確定性。每次執行都產生不同的結果,因為它們依賴於需要隨機選擇的初始化步驟。
(3)可伸縮性。包含數以百萬計物件的資料集並不罕見,而用於這種資料集的聚類演算法應當具有線性或接近線性的時間和空間複雜度。
(4)引數選擇。通常的態度是引數越少越好。
6.1 基於原型的聚類
本節討論的聚類方法以一種或多種方式擴充套件基於原型的概念,如下所述:
(1)允許物件屬於多個簇,更具體的說,物件以某個權值屬於每一個簇,這樣的方法針對這樣的事實,某些物件與多個簇原型一樣近。(有模糊聚類)
(2)用統計分佈對簇進行建模,即物件通過一個隨機過程,有一個被若干統計引數(如均值和方差)刻畫的統計分佈產生。(有混合模型聚類)
(3)簇被約束為具有固定的聯絡。就常見地,這些聯絡是指定近鄰關係的約束,即兩個簇互為鄰居的程度。約束簇之間的聯絡可以簡化對資料的解釋和視覺化。
模糊c均值(也叫FCM)使用模糊邏輯和模糊集合論的概念,提出一種聚類方案,它很像K均值,但是不需要硬性的將某個物件只指派到一個簇中。混合模型聚類採用這樣的聚類方法,簇集合可以使用一個混合分佈建模,每一個分佈對應一個簇。基於自組織對映(SOM)的聚類方法在一個框架(例如二維網格結構)內進行聚類,該框架要求簇具有預先指定的相互聯絡。
(1) 模糊c均值
模糊集合論和模糊邏輯作為一種處理不精確和不確定的方法。簡要的說,模糊集合論允許物件以0和1之間的某個錄屬度屬於一個集合,而模糊邏輯允許一個陳述以0和1之間的確定度為真。存在多種模糊聚類(事實上,許多資料分析演算法都可以“模糊化”),我們只考慮K均值的模糊版本,稱作模糊c均值(FCM)。前提:對每個物件和每個簇賦予一個權值,指明該物件屬於該簇的程度。從數學上講,wij是物件Xi屬於簇Cj的權值。
演算法步驟:
(1)選擇一個初始模糊偽劃分,即對所有的wij賦值;
(2)使用模糊偽劃分,計算每個簇的質心(即依據質心(保證了變化性)更新模糊偽劃分);
(3)重新計算模糊偽劃分,即wij;
(4)重複(2)(3)直到質心不發生變化(替換的終止條件是“如果誤差的變化低於指定的閾值”或“如果所有wij的變化的絕對值都低於指定的閾值”)。演算法中,重新計算模糊偽劃分等價於指派步驟。
將以下合理的條件施加在簇上,以確保簇形成模糊偽劃分:
與K均值一樣,FCM可以解釋為試圖最小化誤差的平方和,儘管FCM基於SSE的模糊版本,事實上,K均值可以看作FCM的特例。
初始化:通常使用隨機初始化。特殊地,權值隨機地選取,同時限定與任何物件相關聯的權值之和必須等於1(但是,隨機選取也和K均值一樣,有他的有點和缺點)。
優缺點:優點:它產生指示任意點屬於任意簇的程度的聚類。除此之外,它具有與K均值相同的優缺點,儘管它的計算密集程度更高一些。
(2) 使用混合模型的聚類
假定資料是由一個統計過程產生的,並且通過找出最佳擬合資料的統計模型來描述資料,其中統計模型中用分佈和該分佈的一組引數描述。在高層,該過程涉及確定資料的統計模型,並由資料估計該模型的引數。混合模型,它使用若干統計分佈對資料建模,每一個分佈對應於一個簇,而每個分佈的引數提供對應簇的描述,通常用中心和發散描述。
混合模型將資料看作從不同的概率分佈得到的觀測值的集合,概念上講,混合模型對應於如下資料產生過程,給定幾個分佈(通常型別相同但引數不同),隨機地選取一個分佈並由產生一個物件。重複過程m次,其中m是物件的個數。對於混合模型,每個分佈描述一個不同的組,即一個不同的簇。通過使用統計方法,我們可以由資料估計這些分佈的引數,從而描述這些分佈(簇)。我們也可以識別哪個物件屬於哪個簇。然而,混合模型並不產生物件的明確指派,而是給出具體物件屬於特定簇的概率。
EM演算法的聚類:假設我們已經知道整體資料集是由幾個相同型別的分佈(只是引數不同)(每個分佈對應一個簇)組成的,我們將每個分佈組合起來成一個混合的模型(比如簡單的,將每個分佈(假設是高斯分佈)的分佈概率函式相加)。為了將資料分類就需要估計混合模型中的引數找到引數後可以知道每個分佈,每一分佈對應一個簇,聚類就完成。而估計引數的方法流行的有兩種:
(1)最大似然估(MLE)計:這個主要用在(A)整體資料集只有一個分佈;
(2)當用最大似然估計來估計混合模型的引數時,我們知道哪個資料物件來自哪個分佈,於是問題又歸結為給定符合某分部的資料,估計單個分佈的引數。
然而實際情況是我們不知道哪個點由哪個分佈產生。這樣我們就不能直接計算每一個點的概率,因此我們不能使用最大似然原理來估計引數。解決這個問題的方案是使用EM演算法(期望最大化)。演算法思想:先給定引數值的一個猜測,EM演算法計算每個點屬於每個分佈的概率,然後使用這些概率,計算引數的新的估計(這些引數是最大化該似然估計的引數)。該迭代繼續下去,直到引數的估計不再改變或改變很小。這樣,我們通過一個迭代搜尋,仍然使用了最大似然估計。
EM演算法步驟:
(1)選擇模型引數的初始集(與K均值一樣,可以隨機地做,也可以用各種方法。)
(2)期望步 對於每個物件,計算每個物件屬於每個分佈的概率。
(3)最大化步 給定期望步得到的概率(保證了動態性),找出最大化該期望的新的引數估計。
(4)重複(2)(3)步直到引數不再改變(替換地,如果引數的改變低於預先指定的閾值則停止)。
事實上,歐幾里得資料的K均值演算法是具有相同協方差矩陣,但具有不同均值的球形高斯分佈的EM演算法的特殊情況。期望步對應於K均值將每個物件指派到一個簇的步驟,但將每個物件以某一概率指派到每個簇(分佈)。最大化步對應於計算簇的質心,但是選取分佈的所有引數以及權值引數來最大化似然。這一過程常常是直截了當的,因為引數一般使用由最大似然估計推匯出來的公式進行計算。每個點最後指派到它具有最大錄屬權值的簇中。
優缺點:
(1)EM演算法可能很慢,對於具有大量分量的模型可能不切實際;當簇只包含少量資料點,或者資料點近似線性時,他也不能很好處理。
(2)在估計簇的個數,或更一般地,在選擇正確的模型形式方面也存在問題。這個問題通常使用貝葉斯方法處理。簡單的說,貝葉斯聚類方法基於由資料得到的估計,給出一個模型相對於另一個模型的概率。(3)混合模型在有噪聲和離群點時也可能有問題。
優點:
(1)混合模型比K均值或模糊K均值更一般,因為它可以使用各種型別的分佈。
(2)混合模型可以發現不同大小或橢球形狀的簇。
(3)基於模型的方法提供了一種消除與資料相關聯的複雜性的方法。
(4)可以簡化資料。如果模型是資料的一個好的匹配,用資料擬合一個模型是一種簡化資料的好方法。
(5)模型更容易刻畫所產生的簇,因為它們可以用少量的引數描述。
(6)很多資料實際上是隨機處理的結果,因此應當滿足這些模型的統計假設。
(3) 自組織對映(SOM)
SOM是一種基於神經網路觀點的聚類和資料視覺化技術。儘管SOM源於神經網路,但它更容易表示成一種基於原型的聚類的變形,與其他基於質心的聚類一樣,SOM的目標是發現質心的集合(用SOM的術語,參考向量),並將資料集中的每個物件指派到提供該物件最佳近似的質心。用神經網路的術語,每一質心都與一個神經元相關聯。與增量K均值一樣,每次處理一個資料物件並更新質心。與K均值不同,SOM賦予質心地形序,也更新附近的質心。此外,SOM不記錄物件的當前簇錄屬情況:並不像K均值,如果物件轉移簇,並不明確地更新簇質心。當然,舊的簇質心可能是新的簇質心的近鄰,這樣它可能因此而更新。繼續處理點,直到達到某個預先確定的界限,或者質心變化不大為止。SOM最終的輸出是一個隱式定義的質心的集合。每個簇由最靠近某個特定質心的點組成。
SOM演算法的顯著特徵是它賦予質心(神經元)一種地形(空間)組織。SOM使用的質心具有預先確定的地形序關係,這是不同於其他基於原型的聚類的根本差別。在訓練的過程中,SOM使用每個資料點更新最近的質心和在地形序下鄰近的質心。以這種方式,對於任意給定的資料集,SOM產生一個有序的質心集合。換言之,在SOM網格中互相靠近的質心比遠離的質心更加密切相關。由於這種約束,可以認為二維點SOM質心在一個儘可能好地擬合n維資料的二維曲面上。SOM質心也可以看做關於資料點的非線性迴歸的結果。
SOM演算法步驟:
(1)初始化質心;
(2)選擇下一個物件;
(3)確定帶該物件最近的質心;
(4)更新該質心和附近的質心,即在一個鄰域內的質心;
(5)重複(2)到(4)直到質心改變不多或超過某個閾值;
(6)指派每個物件到最近的質心。
初始化:有多種方法:
(1)對每個分量,從資料中觀測到的值域隨機地選擇質心的分量值。儘管該方法可行,但不一定是最好的,特別是對於快速收斂;
(2)從資料中隨機地選擇初始質心。選擇物件:由於演算法可能需要許多步才收斂,每個資料物件可能使用多次,特別是物件較少時。然而如果物件較多,則並非需要使用每個物件。
優缺點:
優點:
它將相鄰關係強加在簇質心上,所以,互為鄰居的簇之間比非鄰居的簇之間更相關。這種聯絡有利於聚類結果的解釋和視覺化。
缺點:
(1)使用者必選選擇引數、鄰域函式、網格型別和質心個數;
(2)一個SOM簇通常並不對應單個自然簇,可能有自然簇的合併和分裂。例如:像其他基於原型的聚類技術一樣,當自然簇的大小、形狀和密度不同時,SOM傾向於分裂或合併它們。
(3)SOM缺乏具體的目標函式。SOM受限於質心之間的地形約束(為了更好的近似資料的質心的集合);但是SOM的成功不能用一個函式來表達。這可能使得比較不同的SOM聚類的結果是困難的。
(4)SOM不保證收斂,儘管實際中它通常收斂。
6.2 基於密度的聚類
1.基於網格的聚類。
基本思想:將資料空間劃分成網格單元(方法:將每個屬性的可能值分割成許多相鄰的區間,建立網格單元的集合。每個物件落入一個網格單元。網格單元對應的屬性區間包含物件值)。然後由足夠稠密的網格單元形成簇。這樣的方法是有效地,至少對於低維資料如此。
演算法步驟:
(1)定義一個網格單元集;
(2)將物件指派到合適的單元,並計算每個單元的密度;
(3)刪除密度低於指定的閾值的單元;
(4)由鄰近的稠密單元形成簇。
定義網格單元:存在許多方法將每個屬性的可能值分割成許多相鄰的區間,如:等寬、等頻、聚類等。網格的定義對聚類結果有很大的影響。
網格單元的密度定義:一種自然的方法是:定義網格單元(或更一般形狀的區域)的密度為該區域中的點數除以區域的體積。一種常見的方法是使用具有相同體積的網格單元,使得每個單元的點數直接度量單元的密度。
由鄰接的稠密單元形成簇:問題是我們需要定義鄰接單元的含義以及需要有效的技術發現鄰接單元。
優缺點:
優點:可能是非常有效的。給定每個屬性的劃分,單遍資料掃描就可以確定每個物件的網格單元和網格單元的計數。此外,儘管潛在的網格單元數量可能很高,但是隻需要為非空單元建立網格。這樣,定義網格、將每個物件指派到一個單元並計算每個單元的密度的時間複雜度和空間複雜度為O(m),其中,m是點的個數。如果鄰接的、已佔據的單元可以有效的訪問(例如,通過使用搜尋樹)則整個聚類過程將非常高效,例如具有O(mlogm)的時間複雜度。
缺點:
(1)像大多數基於密度的聚類演算法一樣、基於網格的聚類非常依賴於密度閾值的選擇。(太高,簇可能或丟失;太低,本應分開的簇可能被合併);
(2)如果存在不同密度的簇和噪聲,則也許不可能找到適合於資料空間所有部分的值;
(3)隨著維度的增加,網格單元個數迅速增加(指數增長)。即對於高維資料,基於網格的聚類傾向於效果很差。
2.子空間聚類。
基本思想:在所有維的子空間中尋找簇(稠密區域),由於子空間太多,因此需要有效的技術。目標是:發現簇和它們存在的維。CLIQUE是一種基於網格的聚類演算法,它基於如下觀察提供了一種有效的子空間聚類方法:高維空間的稠密區域暗示低維空間稠密區域的存在性。CLIQUE依賴於以下性質(該性質基於以下事實:低維單元的密度大於等於高維(維可以理解成屬性的個數)單元的密度,即低維單元除了包含所有高維單元的點還包含其他的點。):
基於密度的簇的單調性:如果一個點集在k維(屬性)上形成一個基於密度的簇,則相同的點集在這些維的所有可能子集上也是基於密度的簇的一部分。
演算法步驟如下:
優缺點:
優點:
(1)提供了一種搜尋子空間發現簇的有效技術(相似與Apriori)。
(2)用一小組不等式概括構成一個簇的單元列表的能力。
缺點:
它的缺點和其他基於網格的密度演算法相同,其他缺點和Apriori相同,例如:(1)指數複雜度(2)正如頻繁項集可以共享項一樣,CLIQUE發現的簇也可以共享物件。允許簇重疊可能大幅度增加簇的個數,並使得解釋更加困難。
3.DENCLUE。
基本思想:使用核密度函式用個體資料物件影響之和對點集總密度建模,儘管DENCLUE本質上不是基於網格的技術,但是它使用基於網格的方法提高效能。DENCLUE也是一種基於密度的方法。結果總密度函式具有區域性尖峰(稱作區域性吸引點),並且這些區域性尖峰用來以自然的方式定義簇。具體的說,對於每個資料點,一個爬山過程找出與該點相關聯的最近的尖峰,並且與一個特定的尖峰相關聯的所有資料稱為一個簇。
DENCLUE演算法步驟:
(1)對資料點佔據的空間推導密度函式;
(2)識別區域性最大點(這是區域性吸引點);
(3)通過沿密度增長最大的方向移動,將每個點關聯到一個密度吸引點;
(4)定義與特定的密度吸引點相關聯的點構成的簇;
(5)丟棄密度吸引點的密度小於使用者指定閾值的簇;
(6)合併通過密度大於或等於的點路徑連線的簇。
核密度估計:
核密度估計的目標是用函式描述資料的分佈。對於核密度估計,每個點對總密度函式的貢獻用一個影響或核函式表示。總密度函式僅僅是與每個點相關聯的影響函式之和。核密度的計算可能相當昂貴,為了降低時間複雜度,DENCLUE使用一種基於網格的實現來有效地定義近鄰,並藉此限制定義點的密度所需要考慮的點的數量。首先,預處理步建立網格單元集。僅建立被佔據的單元,並且這些單元及其相關資訊可以通過搜尋樹有效地訪問。然後計算點的密度,並找出其最近的密度吸引點。DENCLUE只考慮近鄰中的點,即相同單元或者與該點所在單元相連線的單元中的點。即犧牲精度加快時間。
優缺點:
(1)DENCLUE提供了比其他基於網格的聚類技術和DBSCAN更加靈和、更加精確的計算密度的方法(DBSCAN是DENCLUE的特例);
(2)DENCLUE擅長處理噪聲和離群點,並且可以發現不同形狀和不同大小的簇;
缺點:
(1)DENCLUE可能比其他基於密度的聚類技術的計算開銷更大;
(2)網格的使用對於密度估計的精度可能產生負面的影響;並且這使得DENCLUE容易受基於網格的方法共同存在的問題的影響,例如:很難選擇合格的網格尺寸;
(3)對於高維資料和包含密度很不相同的簇的資料,DENCLUE可能有問題。
6.3 基於圖的聚類
資料的基於圖的觀點:資料物件用節點表示,而兩個物件之間的鄰近度用對應結點之間邊的權值表示,簇用圖的連通分支表示。本節介紹的基於圖的聚類利用了下面的一些重要的性質:
(1)稀疏化鄰近度圖,只保留物件與其最近鄰之間的連線。這種稀疏化對於處理噪聲和離群點時有用的。稀疏化使得我們可以利用稀疏圖開發有效的圖劃分演算法;
(2)基於共享的最近鄰個數,定義兩個物件之間的相似度性度量。該方法基於如下觀察:物件和它的最近鄰通常屬於同一個類。該方法有助於克服高維和變密度的問題。
(3)定義核心物件並構建環繞它們的簇。與DBSCAN一樣,圍繞核心物件構建簇導致一種聚類技術,可以發現不同形狀和大小的簇。
(4)使用鄰近度圖中的資訊,提供兩個簇是否應當合併的更復雜的評估。具體地,兩個簇合並,僅當結果簇具有類似於原來的兩個簇的特性。(Chameleon演算法的主要思想)。
(1)稀疏化。基於如下事實:對於大部分資料集,物件只與少量物件高度相似,而與大部分其他物件的相似性很弱。這一性質可以用來稀疏化鄰近度圖(矩陣):在實際的聚類過程開始之前,將許多低相似性(高相異度)的值置0。例如,稀疏化可以這樣進行,斷開相似度(相異度)低於(高於)指定閾值的邊,或僅保留連線到點的k個最近鄰的邊。後一種方法建立所謂k-最近鄰圖。鄰近圖的稀疏化使得使用圖劃分演算法進行聚類稱為可能。例如,Opossum和Chameleon都使用圖劃分。應該把鄰近度圖的稀疏化看成使用實際聚類演算法之前的初始化步驟。我們常常將稀疏鄰近度圖修改,產生新的鄰近度圖,新的鄰近度圖還可以被稀疏化。正如我們在演算法Jarvis-Patrick和基於SNN密度的聚類時看到的。
(2)最小生成樹聚類(MST)。MST(一種分裂層次聚類技術)從鄰近度圖的最小生成樹開始,可以看作用稀疏化找出簇的應用。MST也產生與單鏈凝聚聚類相同的聚類。最小生成樹可以看作一種特殊型別的稀疏化圖。演算法步驟:
(1)計算相異度圖的最小生成樹;
(2)斷開對應於最大相異度的邊,建立一個新的簇;
(3)重複第(2)步直到只剩下單個簇。第二步也可以看作圖的稀疏化。因此,MST可以看作一種基於相異度圖稀疏化的聚類演算法。
(3) Opossum:使用METIS的稀疏度相似度最優劃分。Opossum是一種專門為諸如文件或購物籃資料等稀疏、高維資料設計的聚類技術。與MST一樣,它基於鄰近度圖的稀疏化進行聚類。然而,Opossum使用METIS演算法,該演算法是專門為劃分稀疏圖設計的。演算法步驟如下:
(1)計算稀疏化的相似度圖;
(2)使用METIS,將相似度圖劃分成k個不同的分支(簇)。演算法中k引數是使用者指定的引數,所使用的相似性度量是適合於稀疏、高維資料的度量,如擴充的Jaccard度量或餘弦度量。
METIS圖劃分程式旨在(1)最小化分支之間邊的權值(相似度);(2)實現平衡約束。
Opossum使用如下兩種平衡約束中的一種:(1)每個簇中的物件個數必須粗略相等;或(2)屬性值的和必須粗略相等。
優缺點:
優點:
(1)簡單、速度快;
(2)將資料劃分大小粗略相等的簇。
缺點:
(1)由於簇被約束為大小粗略相等,因此簇可能被分裂或合併;
(2)如果使用Opossum產生大量簇,則這些簇通常是更大簇的相對純的片段。事實上Opossum類似於Chameleon聚類過程的初始化步驟。
(4) Chameleon:使用動態建模的層次聚類。
前面的凝聚層次聚類存在的問題:
(1)簇的相似性定義依賴於具體的演算法。如組平均,將其相似性概念建立在兩個簇之間的連線強度上(例如,兩個簇中點的逐對相似性)。而單鏈使用簇的接近性(例如:不同簇中點的最小距離)來度量簇的相似性。儘管有兩種基本方法,但是僅使用其中一種方法可能導致錯誤的簇合並。
(2)大部分聚類技術都有一個全域性(靜態)簇模型。例如,K均值假定簇是球形的,而DBSCAN基於單個密度閾值定義簇。使用這樣一種全域性模型的聚類方案不能處理諸如大小、形狀和密度等簇特性在簇間變化很大的情況。Chameleon是一種凝聚聚類技術,它解決前面提到的兩個問題。它將資料的初始劃分(使用一種有效的圖劃分演算法)與一種新穎的層次聚類方案相結合。這種層次聚類使用接近性和互連性概念以及簇的區域性建模。關鍵思想是:僅當合並後的結果簇類似於原來的兩個簇時,這兩個簇才應當合併。因為這種方法依賴於蔟對而不是全域性模型(所以稱作動態建模),Chameleon能夠處理包含具有各種不同特性的簇的資料。相對接近度(RC):是被簇的內部接近度規範化的兩個簇的絕對接近度。兩個簇合並,僅當結果簇中的點之間的接近程度幾乎與原來的每個簇一樣。相對互連度(RI):是被簇的內部互連度規範化的兩個簇的絕對互連度。如果結果簇中的點之間的連線幾乎與原來的每個簇一樣強,兩個簇合並。RI和RC可以用多種不同的方法組合,產生自相似性的總度量。Chameleon就是使用合併最大化自相似性的蔟對。
演算法步驟:
(1)構造k-最近鄰圖;
(2)使用多層圖劃分演算法劃分圖;
(3)合併關於相對互連性和相對接近性而言,最好地保持簇的自相似性的簇;
(4)重複(3)直到不再有可以合併的簇。
在演算法Chameleon中可以用引數指定,讓Chameleon一步合併多個簇對,並且在所有的物件都合併到單個簇之前停止。步驟的第二步——圖劃分:一旦得到稀疏化圖,就可以使用METIS等有效的多層圖劃分演算法來劃分資料集。Chameleon從一個全包含的圖(簇)開始。然後,二分當前最大的子圖(簇),直到沒有一個簇多於MIN_SIZE個點,其中MIN_SIZE是使用者指定的引數。這一過程導致大量大小相等的、良連線的頂點(高度相似的資料點)的集合。目標是確保每個劃分包含的物件都大部分來自一個真正的簇。演算法時間複雜度(假設m是資料點數,p是劃分的個數):在p個劃分進行凝聚層次聚類需要O(p2logp)時間,劃分圖需要的時間總量是O(mp+mlogm)。建立k-鄰近圖如果使用k-d 樹或類似的資料結果,需要O(mlogm)時間。但是這種資料結構只適用於低維資料,因此,對於高維資料,稀疏化的時間複雜度是O(m2)。空間複雜度:由於只需要存放k-最近鄰表,空間複雜度是O(km)加上存放資料所需要的空間。
優缺點:
優點:能夠很好的聚類空間資料,即便存在噪聲和離群點,並且簇具有不同的形狀、大小和密度。
缺點:
(1)演算法假定有稀疏化和圖劃分過程產生的物件組群是子簇,即一個劃分中的大部分點屬於同一個真正的簇。如果不是,則凝聚層次聚類將混合這些錯誤,因為它絕對不可能再將已經錯誤地放到一起的物件分開。這樣,當劃分過程未產生子簇時,Chameleon就有問題,對於高維資料,常常出現這種情況。
(2)Chameleon並不丟棄噪聲點,而是把它們指派到簇中。
共享最近鄰相似度。本節引入一種相似度的間接方法,它基於以下原理:如果兩個點與相同的點中的大部分都相似,則即使直接的相似性度量不能指出,它們也相似。一個物件的大多數最近鄰通常仍然屬於同一個類。相似性的SNN版本解決的兩個問題:低相似性和不同密度。
SNN相似度計算。關鍵思想是:在定義相似性度量時考慮點的環境。點的環境可以用相似性的共享最近鄰(SNN)定義量化。本質上講,只要兩個物件都在對方的最近鄰列表中,SNN相似度就是它們共享的近鄰個數。
計算共享最近鄰相似度的演算法步驟:(1)找出所有點的k-最近鄰;(2)if 兩個點x 和
(5) 物件之間snn相似度的相似度圖稱作SNN相似度圖。由於許多物件之間的SNN相似度為0,所以相似度圖非常稀疏。SNN相似度可以處理如下情況:一個物件碰巧與另一個物件相對接近,但屬於不同的類。在這種情況下,物件一般不共享許多近鄰,並且它們的SNN相似度低。SNN相似度也能處理變密度的問題。由於SNN相似度只依賴於兩個物件共享的最近鄰的個數,而不是這些近鄰相距多遠。所以,SNN相似度關於點的密度進行自動縮放。
(6)Jarvis-Patrick聚類演算法。JP聚類演算法用SNN相似度取代兩個點之間的鄰近度。然後使用一個閾值來稀疏化SNN相似度矩陣。使用圖的術語就是,建立並稀疏化SNN相似度圖。簇是SNN圖的連通分支。
JP聚類演算法步驟:
(1)計算SNN相似度圖;
(2)使用相似度閾值,稀疏化相似度圖;
(3)找出稀疏化的SNN相似度圖的連通分支(簇)。
JP演算法的儲存需求僅為O(km),因為即便在初始階段也不需要存放整個相似度矩陣。JP聚類的基本時間複雜度是O(m2)。因為k-最近鄰列表的建立可能需要計算O(m2)個鄰近度。然而,如果對低維歐幾里得資料,可以使用像k-d樹來有效地找出k-最近鄰,而不必計算整個相似度矩陣。時間複雜度就為O(mlogm,)。
優缺點:
優點:
(1)刪除處理噪聲和離群點,並且能夠處理不同大小、形狀和密度的簇;
(2)該演算法對高維資料效果良好,尤其擅長髮現強相關物件的緊緻簇。
缺點:
(1)演算法優點脆弱,即它可能分裂真正的簇,或者合併本應該分開的簇;
(2)並非所有的物件都被聚類(剩下的物件可以新增到已有的簇中);
(3)與其他聚類演算法一樣,選擇好的引數值可能是一個挑戰。
(7) SNN密度。解決的問題:傳統的歐幾里得密度在高維空間變得沒有意義。由於SNN相似性度量反映了資料空間中點的區域性結構,因此它對密度的變化和空間的維度都相對不太敏感。所以可以基於它定義高維空間的密度。SNN密度度量一個點被類似的點(關於最近鄰)包圍的程度。這樣,在高密度和低密度區域的點一般具有相對較高的SNN密度,而在從低密度到高密度過度的區域中的點(簇間的點)將傾向於具有低SNN密度。這樣的方法可能更適合這樣的資料集,其中密度變化很大,但是低密度的簇仍然是有趣的。具有高SNN密度(即SNN圖中的高連線性)的點是候選代表點或核心點,因為它們傾向於在簇的內部;而具有低連線性的點是候選噪聲點或離群點,因為它們多半在環繞簇的區域中。
(8) 基於SNN密度的聚類。是一種將SNN密度與DBSCAN演算法結合在一起的演算法。類似於JP演算法,都以SNN相似度圖開始。然而,基於SNN密度的聚類演算法簡單地使用DBSCAN,而不是使用閾值稀疏化SNN相似度圖,然後取連通分支作為簇。
演算法步驟:
(1)計算SNN相似度圖;
(2)以使用者指定的引數Eps和MinPts,使用DBSCAN。
演算法自動地確定資料中的簇的個數。注意並非所有的點都被聚類。被丟棄的點包括噪聲和離群點,以及沒有很強地連線到一組點的那些點。基於SNN密度的聚類發現這樣的簇,簇中的點相互之間都是強連線的。依賴於應用,我們可能希望丟棄許多點。例如:基於SNN密度的聚類對於發現文件組中的主題效果很好。
優缺點:優缺點類似於JP聚類,然而,核心點和SNN密度的使用大大增加了該方法的能力和靈活性,不像DBSCAN,它可以用於高維資料和簇具有不同密度的情況。不像JP聚類簡單地使用閾值,然後取連通分支作為簇,基於SNN密度的聚類使用SNN密度和核心點概念的方法。
6.4 可伸縮的聚類演算法
層次聚類的儲存需求一般是O(m2),其中m是物件的個數。使用k-d樹或R*樹,一般產生資料空間的層次劃分,可以用來減少發現點的最近鄰所需要的時間。注意,基於網格的聚類方法也劃分資料空間。使用抽樣可以降低時間複雜度,但是,抽樣的問題是小簇可能丟失。另一種降低時間複雜度的方法是,使用某種有效的技術,將資料劃分成不相交的集合,然後分別對這些集合聚類。最終的簇的集合是這些分離的簇的集合的並,或者通過合併和對分離的簇的集合求精得到。一個例子是二分K均值,所以二分K均值顯著地比一般的K均值快。另一種角力方法:首先彙總資料(通過一遍掃描),然後在彙總資料上聚類。特殊地,領導者演算法或者將一個資料物件放進最近的簇(如果該簇足夠近),或者建立一個包含當前物件的新簇。這種方法關於物件個數是線性的,可以用來彙總資料,以便使用其他聚類技術。BIRCH演算法使用了類似的概念。
(1) BIRCH:它用於歐幾里得向量空間資料,即平均值是有意義的資料。BIRCH能夠用一遍掃描有效地對這種資料進行聚類,並可以使用附加的掃描改進聚類。BIRCH還能夠有效的處理離群點。BIRCH不要求資料都在記憶體中。BIRCH基於聚類特徵(CF)和CF樹的概念。其基本思想是:資料點(向量)的簇可以用三元組(N,LS,SS)表示。N:簇中點的個數;LS:點的線性和;SS點的平方和。這些量可以增量的更新。CF樹是一顆高度平衡的樹。葉節點由一個聚類特徵序列CFi組成,葉節點的直徑必須小於引數化的閾值T。可以通過調整閾值引數T,可以控制樹的高度。目標是通過調整引數T,將CT樹儲存在記憶體中。CF樹在掃描時建立。BIRCH在每次分裂後跟隨一個合併步。這一步的目的是提高空間利用率,避免不對稱的資料輸入順序帶來的問題。BIRCH還有一個刪除離群點的過程。當用盡記憶體而需要重建樹時,可以將離群點寫到磁碟。(離群點定義為包含的點遠小於平均情況的結點)。在該過程的特定點,掃描離群點,看是否可以將它們吸收到樹中,而不導致樹增長。如果可以,則吸收它們,如果不可以,則刪除它們。
演算法步驟:
(1)通過建立彙總資料的CF樹,將資料轉入記憶體;
(2)根據第3階段的需要,構造一顆較小的CF樹。T增值,然後重新插入葉頂點項(簇)。由於T已增加,某些簇將合併;
(3)進行全域性聚類。可以使用不同形式的全域性聚類(使用所有簇之間的逐對距離的聚類)。然而,我們選取一種凝聚的層次技術,因為聚類特徵存放了對於特定聚類型別很重要的彙總資訊,可以使用全域性聚類演算法,就像它用於CF代表的簇中的所有點上一樣;
(4)使用步驟(3)發現的簇質心,重新分佈資料點,從而發現新的簇集合。這克服了可能在BIRCH第一階段發現的問題。由於頁面大小的限制和引數T的緣故,應當在一個簇中的點有時可能被分裂,而應當在不同簇中的點有時可能被合併。此外,如果資料集中包含重複點,則這些點根據出現次序的不同,有時可能被聚類到不同的類。通過多次重複本階段,過程將收斂到一個區域性最優解。
(2)CURE:它能夠處理大型資料、離群點和具有非球形和非均勻大小的簇的資料的方法。CURE使用簇中的多個代表點來表示一個簇。理論上,這些點捕獲了簇的幾何形狀。選取的點的個數是一個引數,但是業已發現10或更大的值效果很好。CURE使用一種凝聚層次聚類方案進行實際的聚類。兩個簇之間的距離是任意兩個代表點(在它們向它們代表的中心收縮之後)之間的最短距離。儘管這種方法與我們看到的其他層次聚類方案不完全一樣。但是如果 alpha=0,它等價於基於質心的層次聚類;而 alpha=1時它與單鏈層次聚類大致相同。注意,儘管使用層次聚類方案,但是CURE的目標是發現使用者指定個數的簇。CURE利用層次聚類過程的特性,在聚類過程的兩個階段刪除離群點。首先,如果一個簇增長緩慢,則這意味它主要由離群點組成,因為根據定義,離群點遠離其他點,並且不會經常與其他點合併。在CURE中,離群點刪除的第一個階段一般出現在簇的個數是原來點數的1/3時。第二個離群點刪除階段出現在簇的個數達到K(期望的簇的個數)的量級時。此時,小簇又被刪除。由於CURE在最壞情況下複雜度為O(m2logm),它不能直接用於大型資料集。因此CURE使用了兩種技術來加快聚類過程。第一種技術是取隨機樣本,並在抽樣的資料點上進行層次聚類。隨後是最終掃描,通過選擇具有最近代表點的簇,將資料集中剩餘的點指派到簇中。在某些情況下,聚類所需要的樣本仍然太大,需要第二種技術。在這種情況下,CURE劃分樣本資料,然後聚類每個劃分中的點。這種預聚類步後通常緊隨中間簇的聚類,以及將資料集中的每個點指派到一個簇的最終掃描。
CURE演算法步驟:
(1)由資料集抽取一個隨機樣本。值得注意的是,CURE的文章明確地推出一個公式,指出為了以較高的概率確保所有的簇都被最少的點代表,樣本應當多大;
(2)將樣本劃分成p個大小相等的劃分;
(3)使用CURE的層次聚類演算法,將每個劃分中的點聚類成個簇,得到總共個簇。注意,在此處理過程中將刪除某些離群點;
(4)使用CURE的層次聚類演算法對上一步發現的個簇進行聚類,直到只剩下K個簇;
(5)刪除離群點。這是刪除離群點的第二階段;
(6)將所有剩餘的資料點指派到最近的簇,得到完全聚類。CURE抽樣:關鍵問題是樣本是否具有代表性,即它是否捕獲了感興趣的特徵。對於聚類,該問題是我們是否能夠在樣本中發現與整個樣本物件集中相同的簇。CURE的建立者推匯出了一個樣本大小的界,指出為了(以較高的概率)確保我們從每個簇至少得到一定數量的點,
數。再次說明,CURE以如下方式使用抽樣。首先抽取一個樣本,然後使用CURE對該樣本進行聚類。找到簇之後,將每個未聚類的點指派到最近的簇。劃分:關鍵問題是如何選擇p和q。CURE的時間複雜度是O(m2)或更高,並且還需要將所有的資料放在記憶體。因此,我們希望選擇儘可能小的p,使得整個劃分可以以“合理的”時間在記憶體處理。選擇p和q的另一個因素涉及聚類質量。具體的說,目標是選取p和q的值,使得同一個基本簇的物件最終在一個簇中。
相關文章
- 可伸縮聚類演算法綜述(可伸縮聚類演算法開篇)聚類演算法
- Math-Model演算法綜述演算法
- 聚類演算法聚類演算法
- 收藏!機器學習演算法優缺點綜述機器學習演算法
- 聚類之K均值聚類和EM演算法聚類演算法
- 聚類(part3)--高階聚類演算法聚類演算法
- 模擬經營類遊戲(Simulation Game)綜述遊戲GAM
- 機器學習 – 特徵選擇演算法流程、分類、優化與發展綜述機器學習特徵演算法優化
- 機器學習 - 特徵選擇演算法流程、分類、優化與發展綜述機器學習特徵演算法優化
- 「技術綜述」視訊分類/行為識別研究綜述,從資料集到方法
- 深度學習演算法簡要綜述(下)深度學習演算法
- CNN 模型壓縮與加速演算法綜述CNN模型演算法
- 7大類深度CNN架構創新綜述CNN架構
- Spring綜述Spring
- API安全綜述API
- OPTICS聚類演算法原理聚類演算法
- 初探DBSCAN聚類演算法聚類演算法
- DBSCAN密度聚類演算法聚類演算法
- BIRCH聚類演算法原理聚類演算法
- 聚類之dbscan演算法聚類演算法
- Meanshift,聚類演算法聚類演算法
- 公鑰密碼學演算法型別綜述密碼學演算法型別
- 14聚類演算法-程式碼案例六-譜聚類(SC)演算法案例聚類演算法
- 09聚類演算法-層次聚類-CF-Tree、BIRCH、CURE聚類演算法
- 各類聚類(clustering)演算法初探聚類演算法
- 視覺SLAM綜述視覺SLAM
- Spring Bean 綜述SpringBean
- JavaScript模板引擎綜述JavaScript
- Java集合框架綜述Java框架
- pl/sql reference綜述SQL
- (譯)haslayout 綜述(一)
- 04聚類演算法-程式碼案例一-K-means聚類聚類演算法
- 深度聚類演算法淺談聚類演算法
- 深度聚類演算法敘談聚類演算法
- Spark中的聚類演算法Spark聚類演算法
- 計算廣告系統演算法與架構綜述演算法架構
- 聯邦GNN綜述與經典演算法介紹GNN演算法
- 影像區域性特徵點檢測演算法綜述特徵演算法