歡迎來到階層式分群的世界!
在我們探索非監督式學習(Unsupervised Learning)的旅程中,之前已經介紹過 K-means 分群。雖然 K-means 非常強大,但它有一個主要「痛點」:在開始之前,你必須先告訴電腦你到底想要多少個群組(K 值)!如果你根本不知道呢?或者,如果你想觀察群組如何嵌套在更大的群組中呢?
這就是階層式分群(Hierarchical Clustering)大顯身手的地方。在本章中,我們將學習如何建立一棵數據「樹」,讓我們在分析完成後,才決定分群的數量。精算師非常喜歡這種方法,因為它提供了一張清晰的視覺地圖,展示資料點之間是如何相互關聯的。讓我們馬上開始吧!
1. 核心概念:聚合式分群(Agglomerative Clustering)
最常見的階層式分群版本是聚合式(Agglomerative)分群。別被這術語嚇到了,它其實就是指「由下而上(bottom-up)」的過程。
想像一場同學會,剛開始每個人都是陌生人。首先,最像的兩個人開始交談;接著,下兩位最相似的人(或小團體)加入。最終,所有人都合併成一個巨大的群體。
演算法是如何運作的(逐步說明):
1. 從 \(n\) 個觀測值開始。將每個單獨的觀測值視為一個獨立的群集(所以一開始你有 \(n\) 個群集)。
2. 計算所有群集兩兩之間的不相似度(dissimilarity)(距離)。
3. 找出最相似(距離最小)的兩個群集,並將它們合併成一個新的群集。現在你剩下 \(n-1\) 個群集。
4. 重複步驟 2 和 3,直到所有觀測值都被合併成一個包含一切的巨大群集。
小撇步:在階層式分群中,我們不只是在分組;我們還記錄了群集合併的順序與距離。這段歷史正是讓此方法如此特別的原因。
2. 樹狀圖(Dendrogram):你的視覺地圖
階層式分群的輸出是一個精美的樹狀圖,稱為樹狀圖(Dendrogram)。這是解讀結果時最重要的工具。
如何解讀樹狀圖:
- 底部的葉片(leaves)代表個別的觀測值。
- 當你往樹的上方移動時,葉片會合併成分支(branches)。
- 合併處的垂直高度(連接兩個分支的水平線)代表那兩個群集有多不同。合併位置越高,表示兩群的差異越大。
- 關鍵法則:你不能僅根據葉片在水平方向上的接近程度來判斷相似性,你必須查看它們第一次共享共同分支時的垂直高度。
選擇分群數量
與 K-means 不同,我們不需要在一開始就選擇 \(K\)。相反,我們查看樹狀圖,決定在哪個高度「切開」這棵樹。你劃一條水平線,它穿過多少條垂直線,就代表你產生了多少個群組。
類比:想像這棵樹狀圖是一棵真實的樹。如果你在某個高度把樹幹鋸斷,掉到地上的分開樹枝數量,就是你的群組數量!
重點總結:一張樹狀圖可以代表從 1 到 \(n\) 的任何群組數量。你只需選擇對你的業務問題最有意義的「切割」高度即可。
3. 連結法(Linkage):我們如何衡量群組間的距離?
我們知道如何測量兩個點之間的距離(通常是歐幾里得距離,Euclidean distance),但如何測量一個單點與一群點之間的距離?或是兩群點之間呢?這就是所謂的連結法(Linkage)。
SRM 課程中最常見的四種連結類型是:
1. 完整連結(Complete / Max):兩個群集之間的距離定義為兩群中最遠兩點之間的距離。這往往會產生邊界清晰、緊湊的群組。
2. 單一連結(Single / Min):距離定義為兩群中最近兩點之間的距離。警告:這可能會導致「鏈接效應(chaining)」,即群組呈現細長的線條形狀,而不是整齊的圓形。
3. 平均連結(Average):距離定義為群集 A 與群集 B 中所有點兩兩距離的平均值。這非常受歡迎,因為它是一個「折衷方案」。
4. 重心連結(Centroid):距離是根據兩個群集的重心(centroids,幾何中心)來計算的。注意:這可能會導致一個奇怪的瑕疵,稱為「反轉(inversion)」,即合併發生的高度比之前的合併還低,這會導致樹狀圖難以閱讀。
速查表:
- 完整與平均連結:通常較受推崇;它們能建立更平衡的樹。
- 單一連結:可能會產生「拖曳狀」的群組。
- 重心連結:某些領域會用到,但可能導致雜亂的「反轉」問題。
4. 不相似度衡量指標的選擇
雖然歐幾里得距離(直線距離)是預設值,但它並非唯一選擇。有時我們會使用基於相關性的距離(Correlation-based distance)。
何時使用什麼?
- 如果你關心數值的量級(例如總銷售額),請使用歐幾里得距離。
- 如果你關心資料的模式或形態(例如:兩檔股票是否同時漲跌,即便其中一個是 10 美元而另一個是 100 美元),請使用基於相關性的距離。
你知道嗎?數據的標準化(scaling)在這裡極為重要!如果一個變數是「收入」(以千美元計),另一個是「年齡」(以年計),那麼「收入」這個變數會因為數值較大而主導距離計算。通常我們在分群前會將變數標準化,使其平均值為 0,標準差為 1。
5. 比較階層式分群與 K-means 分群
學生經常問:「哪一個比較好?」答案是:「視情況而定!」
K-means 的優勢:
- 當你有非常龐大的數據集時(通常速度較快)。
- 當你對所需的群組數量有明確概念時。
階層式分群的優勢:
- 當你想觀察潛在的結構或嵌套關係時。
- 當你不想在一開始就決定特定的 \(K\) 值時。
- 當你想要視覺化呈現(樹狀圖)給利害關係人看時。
常見陷阱:不要因為階層式分群看起來比較複雜,就以為它一定「比較準確」。如果數據本身沒有自然的群組結構,兩種方法都可能會「出錯」!
6. 總結與最後建議
階層式分群是一種靈活且視覺化的資料分組方式。請記住考試所需的這些重點:
- 它是聚合式的(由下而上)。
- 樹狀圖是主要的視覺化工具。
- 樹狀圖上的高度代表不相似度。
- 連結法(完整、平均、單一、重心)決定了我們如何衡量群集間的距離。
- 數據標準化通常是必要的,以確保所有變數的貢獻權重相等。
如果連結法讓你覺得有點抽象,別擔心!只要記住「完整」會尋找最遠鄰居,「單一」會尋找最近鄰居。大多數情況下,「完整連結」和「平均連結」是產生乾淨、實用樹狀圖的首選。
你一定做得到的!階層式分群不過是一種整理混亂房間的方法:先把相似的東西放在一起,再把這些小組放進更大的箱子,直到一切都被歸類為止。保持這個畫面在心中,你很快就能掌握這一章!