層次聚類演算法 層次方法概述

2021-10-12 04:46:10 字數 4246 閱讀 7676

前 言

層次聚類演算法對給定的資料進行層次分解,直到某種條件滿足為止,具體有可分為凝聚的和**的兩種方案。凝聚的層次聚類是一種自底向上的策略,首先將每個物件作為乙個簇然後合併這些原子簇為越來越大的簇,直到多有的物件都在乙個簇中或者到底某個條件終止;**的層次聚類與凝聚的層次聚類相反,採用的是自頂向下的策略,它首先將所有物件置於乙個簇中然後逐漸細分為越來越小的簇,直到每個物件自成一簇,或者到某個終止條件.

層次聚類方法是通過將資料組織為若干組並形成乙個相應的樹來進行聚類的。根據層次分解是自底而上還是自頂而下形成的,層次聚類演算法可以進一步分為凝聚方法(agglomerative method)和**方法(divisive method)兩種。本章主要討論了層次聚類方法,通過分析傳統的層次聚類方法的不足之處,提出了一種基於動態近鄰選擇模型的chameleon演算法。乙個純粹的層次聚類方法的聚類質量受限於:一旦乙個合併或**被執行,就不能修正。也就是說,如果某個合併或**決策在後來證明是不好的選擇,該方法無法退回並更正。

層次方法概述

1 凝聚的和**層次聚類

一般來說,有兩種型別的層次聚類方法:

(1)凝聚的層次聚類:這種自底向上的策略首先將每個物件作為乙個簇,然後合併這些原子簇為越來越大的簇,直到所有的物件都在乙個簇中,或者某個終結條件被滿足。絕大多數層次聚類方法屬於這一類,它們只是在簇間相似度的定義上有所不同。

(2)**的層次聚類:這種自頂向下的策略與凝聚的層次聚類相反,它首先將所有物件置於乙個簇中,然後逐步細分為越來越小的簇,直到每個物件自成一簇,或者達到了某個終結條件,例如達到了某個希望的簇數目,或者兩個最近的簇之間的距離超過了某個閾值。

圖 1 描述了凝聚的層次聚類方法 agnes(agglomerative nestling)和**的層次聚類方法 diana(divisive analysis)在乙個包含五個物件的資料集合{}a,b,c,d,e} 上的處理過程。其中,物件間距離函式採用歐式聚類,簇間距離採用最小距離。在 agnes 中,選擇簇間距離最小的兩個簇進行合併。而在 diana 中,按最大歐式距離進行簇**。

層次聚類方法的優點在於可以在不同粒度水平上對資料進行探測,而且容易實現相似度量或距離度量。而層次聚類演算法的困難在於合併或**點的選擇。這樣的決定是非常關鍵的,因為一旦一組物件被合併或者**,下一步的處理將在新生的簇上進行。己做的處理不能被撤銷,聚類之間也不能交換物件。如果在某一步沒有很好地選擇合併或**的決定,可能會導致低質量的聚類結果。而且,這種聚類方法不具有很好的可伸縮性,因為合併或**的決定需要檢查和估算大量的物件或簇。

圖 1 凝聚和**層次聚類

2 簇間距離度量方法

對於任意兩個簇之間的距離度量,有以下四種方法:

(3)均值的距離(質心方法):是指用兩個聚類各自中心點之間的距離代表兩個聚類的距離。

其中,簇間距離(相似度)的函式很多,最常用的度量準則是歐幾里得距離。不同的距離函式可以得到不同的層次聚類方法。

3 主要的幾種層次聚類方法

目前,比較有代表性的層次聚類演算法有:birch 演算法、 cure 演算法、rock 演算法和 chameleon 演算法。

3.1 birch 演算法

birch(利用層次方法進行平衡迭代規約和聚類)演算法是乙個綜合的層次聚類方法。它首先將資料集以一種緊湊的壓縮格式存放,然後直接在壓縮的資料集(而不是原始的資料集)上進行聚類,所以其 i/o 成本與資料集的大小呈線性關係。birch 特別適合大資料集,且支援增量聚類或動態聚類。演算法掃瞄資料集一遍就可生成較好的聚類,增加掃瞄次數可用來進一步改進聚類質量。它引入用於概括簇資訊的兩個概念:聚類特徵(clustering feature)和聚類特徵樹(cf樹)。乙個聚類特徵是乙個三元組,給出物件子聚類資訊的彙總描述。假設某個子

從統計學的觀點來看,聚類特徵是對給定子聚類的統計彙總:子聚類的 0 階矩,1 階矩,以及 2 階矩。它記錄了計算聚類和有效利用儲存的關鍵度量,因為它彙總了關於子聚類的資訊,而不是所儲存的物件。乙個 cf 樹是高度平衡的樹,它儲存了層次聚類的聚類特徵。

birch 採用了一種多階段聚類技術:資料集的單遍掃瞄產生了乙個基本的聚類,一遍或多遍的額外掃瞄可以進一步改進聚類質量。這個演算法的所需時間複雜度是o(n) 。n 是物件的數目。birch 演算法具有對物件數目的線性伸縮性,及較好的聚類質量。但是,cf 樹的每個節點由於大小限制只能包含有限數目的條目,乙個cf樹節點並不總是對應於使用者所認為的乙個自然聚類。而且,如果類不是球形的,birch不能很好的工作,因為它用了半徑或直徑的概念來控制聚類的邊界。

birch 演算法的步驟如下:

(1)掃瞄資料集,將密集的資料點分組成為子簇,而將稀疏的資料點作為孤立點去除,並利用得到的資料總結,建立一棵初始存放於記憶體的 cf 樹。演算法試圖使 cf 樹在記憶體許可範圍內盡可能詳細地反映資料集的聚類資訊;

(2)有選擇地壓縮。對初始 cf 樹中的葉條目進行掃瞄,重建一棵更小的cf樹,同時去掉多餘的孤立點,並將比較密集的子簇組合成更大的子簇;

(3)採用乙個己有的全域性或半全域性的聚類演算法對 cf 樹中所有跨不同節點邊界的葉條目進行聚類;

(4)有選擇地對聚類結果提煉。將(3)產生的簇質心作為種子,將資料點重新分配給距離其最近的種子,以得到乙個新的聚類集合,從而更正了不精確的地方,提煉出更好的聚類結果。

3.2 cure 演算法

cure(利用代表點聚類)演算法是對基於代表物件方法和基於質心方法進行折中的方法。在 cure 演算法中,不是利用質心或單個代表物件點來代表乙個簇,而是首先在簇中選取固定數目的,離散分布的點,用這些點反映簇的形狀和範圍。然後把離散的點按收縮因子α向簇的質心收縮。收縮後的離散點作為簇的代表點。兩個簇的距離定義為代表點對(分別來自兩個簇)距離的最小值,在 cure 演算法的每一步合併距離最近的兩個簇。

cure 演算法克服了利用單個代表點或基於質心方法的缺點,可以發現非球形及大小差異較大的簇。簇的收縮(離散點的收縮)降低了cure演算法對孤立點的敏感性。

調節收縮因子α,α∈[0,1],可以讓cure發現不同形式的簇。當α=1時,cure還原為基於質心的方法。α=0時,cure還原為 mst(最小生成樹)方法。

針對大型資料庫,cure 採用隨機取樣和劃分兩種方法的組合:乙個隨機樣本首先被劃分,每個劃分被部分聚類。這些結果類然後被聚類產生希望的結果。下面步驟描述了 cure 演算法的核心:

(1)從源資料物件中抽取乙個隨機樣本 s ;

(2)將樣本 s 分割為一組劃分;

(3)對每個劃分進行區域性範圍內的聚類;

(4)剔除隨機樣本中的孤立點;

(5)對區域性的類進行聚類。落在每個新形成的類中的代表點根據使用者定義的乙個收縮因子α收縮或向類中心移動。這些點代表和捕捉到了類的形狀;

(6)用相應的類標籤來標記整個資料集合。

對於容量為 n 的樣本,cure 演算法的最差時間複雜度是o(n2log n) .當資料點維數較低時,時間複雜度可減少到o(n2) .該演算法僅對資料庫掃瞄一遍,其空間複雜度為o(n) .

3.3 rock 演算法

rock 演算法是介於基於鄰居方法和基於鏈結方法之間的一種相似度計算方法。使用 rock 演算法首先需要求出資料點中所有資料的全部鄰居,並求出資料點中所有資料對應的所有鏈結。

在得到上述初始化值之後,開始進行迭代聚類過程,迭代過程中每次迭代合併的類是通過如下的最優函式來決定的。其中,ci ,c j分別表示兩個類別,ni, nj分別表示兩個類別的大小, f(θ)表示輸入引數,link(c i, c j)表示類ci 與cj 的交叉鏈結數目,

這樣保證 rock 演算法在聚類過程中每次迭代合併的都是最優值最大的兩個類。除了上述與 cure 演算法具有較顯著的不同之外,rock 演算法的主要流程與 cure演算法基本一致。類似地,rock 演算法的主要思想除了與 cure 演算法思想的第二點、第四點不同之外,其餘基本與 cure 演算法一致。

3.4 chameleon 演算法

chameleon 演算法也是一種層次聚類演算法,且是一種聚合層次聚類演算法。與基本的聚合層次聚類不同的是,該演算法在合併兩個類別時,採用精度更高的標準來提高聚類的質量。具體地說:該演算法在判定兩個類別是否進行合併時,會綜合考慮互連性和近似度,尤其會考慮類內部的內在特徵。該演算法的上述特點使得新類能自動地適應被合併的類的內部特徵,從而具有發現、構造任意大小類的能力。 與 cure 和 dbscan 相比,chameleon 演算法在發現高質量的任意形狀的簇方面能力更強。不過,在處理n個物件的高維資料時,演算法的最壞複雜度已經達到o(n2) .

石顯:chameleon 演算法及其改進​zhuanlan.zhihu.com

石顯:層次聚類方法——試驗結果與分析​zhuanlan.zhihu.com

聚類演算法 層次聚類演算法

層次聚類演算法 hierarchical clustering method 又稱為系統聚類法 分級聚類法。層次聚類演算法又分為兩種形式 凝聚層次聚類 首先將每個物件作為乙個簇,然後合併這些原子簇為越來越大的簇,直到某個終結條件被滿足。層次聚類 首先將所有物件置於乙個簇中,然後逐漸細分為越來越小的簇...

層次聚類演算法(一)

層次聚類 hierarchical clustering 試圖在不同層次上對資料集進行劃分,從而形成樹形的聚類結構,資料集的劃分可採用 自底向上 的聚合策略,也可以採用 自頂向下 的分拆策略。即層次聚類可以是凝聚的也可以是 的。凝聚的層次聚類方法使用自底向上的策略。即剛開始每個點都認為是乙個簇,然後...

層次聚類演算法(二)

上篇博文簡單的講述了層次聚類的基本概念,接下來就是具體的講述凝聚的聚類演算法agnes演算法與 的聚類演算法diana聚類演算法。agnes演算法 演算法描述 輸入 包含n個物件的資料庫,終止條件簇的數目k 輸出 k個簇 1 將每個物件當成乙個初始簇 2 repeat 3 根據兩個簇中最近的資料點找...