在我之前的 JMP 部落格文章中,我討論了用於聚類的兩種演算法:k 均值和正態混合(使用期望最大化)。在這裡,我看一個層次聚類的例子。
雖然 k 均值通常給出硬聚類分配(每個資料點僅屬於一個聚類),但常態混合給出軟聚類分配或機率聚類分配。在正常混合物聚類中,每個數據點(無論是人類或細胞培養物)都屬於每一個以一定機率聚類。類似地,層次聚類允許我們將點視為屬於多種的集群。但在層次聚類中,集群本質上是層次化的(也許很明顯)。
何時使用層次聚類
當資料中存在層次結構時,層次聚類最有用。分層資料具有的組本身是由子組組成的,而子組又是由子組組成的…以此類推。例如,當我們觀察血液時,我們可以看到紅血球、白血球、血漿和血小板。 
白血球內可以有嗜中性球、嗜鹼性球、淋巴球…以及許多其他細胞。 
淋巴球內可以含有 T 細胞、B 細胞和自然殺手細胞。
T 細胞內可有輔助 T 細胞、記憶 T 細胞、抑制性 T 細胞或殺傷性 T 細胞。我可以繼續說下去,但這是一個統計博客,而不是免疫學博客。 
雖然查看非常特定的細胞組通常很有用,但在許多情況下我們需要概括並查看更高級別的細胞組,例如當醫生查看血液測試中的白血球計數時。 
當您根據購買習慣對客戶進行分組時,您有時可能有足夠的資金來建立 50 封不同的行銷電子郵件,以滿足購物者的特定習慣。但其他時候,您可能只有預算來創建五個。分層集群可讓您選擇任意數量的集群,同時提供盡可能內聚的集群。
長話短說:當您認為資料可能具有層次結構時,請使用層次聚類。事情真的可以這麼簡單。
凝聚層次聚類
JMP使用層次結構聚集性聚類(簡稱HAC),透過連續將相似的簇合併在一起,直到所有資料都在一個簇中來對資料中的層次關係進行建模。首先,每個數據點都是它自己的單例集群。但是,這非常孤獨,因此我們將兩個最接近的簇合併在一起以形成一個新的簇。然後我們合併下一個兩個最接近的簇在一起,然後我們再做一次。然後再次。然後再次。直到所有數據都在一個簇中。我們經常將 HAC 稱為自下而上的聚類,因為我們從底部開始,現在我們已經有了一個包含所有資料點的聚類。可以說整個團隊都在這裡。 
距離測量
決定哪些簇彼此接近並不總是那麼簡單。我們可以使用許多連結標準來確定兩個簇之間的距離。
單身的連接將兩個簇(A 和 B)之間的距離定義為最低限度 A 中任意點與 B 中任意點之間的距離。
平均的連接將簇(A 和 B)之間的距離定義為平均的A 中的點與 B 中的點之間的距離。 
完全的連接將簇(A 和 B)之間的距離定義為最大限度A 中任意點與 B 中任意點之間的距離。
這質心方法將簇(A 和 B)之間的距離定義為它們各自的平均向量(質心)之間的距離。 
沃德的方法與上面的方法略有不同。單變量變異數分析不使用純粹的距離測量,而是使用聚類分配作為組別進行擬合。如果兩個簇(A 和 B)產生以下結果,則將它們合併:最小的當 A 和 B 合併為一組執行另一個變異數分析時,誤差平方和會增加。從 我們的變異數分析文章中,我們知道誤差是之內群體變異。所以沃德的方法詢問我們可以組合哪兩組並且仍然具有低之內群體變異(即哪兩組最相似)。 
如何閱讀樹狀圖
一旦我們確定了資料的層次結構,我們就可以檢查任何層級的不同集群。我們經常想要對結構進行觀察。最簡單的方法是查看樹狀圖。
樹狀圖顯示了聚類是如何組合的。在JMP中,Y 軸表示資料點/聚類,X 軸表示距離。例如,如果兩個簇在樹狀圖的較低位置(向左)連接,那麼它們比在樹狀圖的較高位置(更靠右)連接的其他兩個簇更相似。 
底部(左)密集的樹形圖通常具有更可分離的簇,而底部(左)不密集的樹形圖往往具有可分離性較差、更分散的簇。
集群更像是一門藝術而不是一門科學,因此集群的解釋可能需要領域專業知識才能產生有意義的東西。使用樹狀圖,您可以建立從 1 到 N 的任意數量的聚類(其中 N 是您擁有的資料點的數量)。在任何層級「切割」樹狀圖都會告訴您每個簇的成員資格。 
在 JMP 中
讓我們來看一個資料集,記錄了 150 個人的平均蛋白質、脂肪和碳水化合物克數。我們想要對這些不同的飲食進行分類的原因有很多。也許我們想看看不同的飲食是否有不同的心臟病發病率。或者也許我們想查看每個簇的膽固醇或鐵水平。
在 JMP 中,執行層次聚類非常簡單。只要去分析 > 聚類 > 層次聚類並選擇要聚類的列。如果每個資料點都有名稱或標籤,請選擇它並將其新增為標籤。您也可以在此處選擇連結標準。點選好的,JMP 將為您建立聚類和樹狀圖。 
進入分層平台後,您可以按聚類對樹狀圖進行著色,這可以幫助您在聚類中挑選出不同的模式。 
您還可以獲得從 1 到 N 的任意數量的聚類的硬聚類分配(其中 N 是樣本大小)。只需轉到紅色小三角選單並選擇簇數並輸入您想要的號碼。您也可以拖曳樹狀圖上的黑色小菱形來選擇多個簇。然後返回紅色小三角選單並選擇保存簇。當您選擇 ak(聚類數)時,JMP 將在恰好有 k 個聚類的位置「切割」樹狀圖。
您也可以將圖一側的菱形拖曳到樹狀圖上要剪下的點。 
將聚類保存為一列使我們能夠更好地可視化聚類,並在進一步分析中使用聚類分配作為組變量(如方差分析來查看聚類成員資格是否對心臟病發生率有顯著影響)。
當只查看兩個簇時,我們可以看到有一個相對較高的蛋白質、低碳水化合物、低脂肪簇,以及一個相對較低的蛋白質、高脂肪和碳水化合物簇。 
我們也可以看看三簇解決方案,它使我們能夠將高蛋白、低碳水化合物、低脂肪組分成極端組和更溫和的組。層次結構幫助我們理解這些群體如何連結在一起,同時仍允許我們在需要時將它們視為單獨的。 
JMP 將根據樹狀圖下方顯示的距離圖為您推薦 ak。圖表的 x 軸代表每次合併兩個群集的時間。 y 軸表示最後連接的兩個簇之間的距離。當斜率發生顯著變化時,這意味著最後合併的兩個簇相距相對較遠。這表明其餘簇相對獨立,並且當前配置對於 k 來說是一個不錯的選擇。
該資料集的樹狀圖在底部(左)最密集,這意味著可能存在一些可分離的簇,我們可以透過查看上面的圖來確認這一點。
嘗試一下
層次聚類(以及一般的聚類)並不是解決所有未標記資料問題的靈丹妙藥。但它非常擅長對資料中的層次結構進行建模,有層次結構。它為我們提供了非層次聚類之外的信息,因為它告訴我們不同的聚類如何相互關聯。如果我們需要合併或拆分集群,這些資訊可能非常寶貴。層次聚類為您的資料分組方式提供了一定的彈性,最終,我們都需要更加靈活一點。使用本文所附的資料表親自嘗試。
HCA 的相似軸在哪裡? 我們如何打開它?
我簡單地瀏覽了谷歌和手冊,但什麼也沒找到。 在 JMP 的早期版本中,相似性是在 X 軸上描述的。 這被刪除了嗎?
@ASHU4JMP ,了解 JMP 報告各部分的最簡單方法是使用問號工具在“工具”菜單中,單擊報告中您有疑問的部分。
在您的情況下,單擊該圖表將帶您進入樹狀圖報告幫助頁面在那裡你會知道那是一個距離圖。
距離圖距離圖是顯示在樹狀圖下方的圖。 該圖的每個步驟都有一個點,其中兩個簇連接成一個簇。 橫坐標表示簇的數量,從左到右依次遞減。 該點的垂直坐標是在給定步驟中連接的簇之間的距離。
您可以單擊並拖動樹狀圖中的任一菱形手柄來控制所選的簇數。 單擊並拖動菱形時,圖中會出現一條垂直線,該線會根據簇數進行移動。 通常,距離圖的斜率會在某個點趨於平穩。 這樣的點表明自然中斷,並幫助您確定簇的數量。
你好 Chelsea,我有一個與 HAC 相關的疑問。 請找到圖片。 這張圖有什麼意義。
嗨切爾西,
感謝您的這篇文章。這是非常清楚和解釋性的。
我有一個關於聚類的問題,我想知道你是否可以提供幫助。
我正在嘗試使用相對較小的數據集(17 行和+/-90 列)進行分層(和 K 均值)聚類。
當我使用所有列進行聚類時,某些行被排除在聚類之外。 因此,根據所選的簇數,我可能有 1-2-3 等簇,但這些簇中的行數(觀察值)小於 17(即,某些行根本沒有分配任何簇)。
有什麼理由會發生這種情況嗎?
歡迎任何幫助。
謝謝!
阿西爾