在資料分析中,分群分析(Cluster Analysis)是一種常見的無監督學習(Unsupervised Learning)方法,用來探索資料中的自然群集結構。當我們沒有標籤資料、也不知道該分成幾群時,分群分析能幫助我們發現潛在的分類邏輯。
在眾多分群方法中,階層式分群分析(Hierarchical Clustering)以「從個體到群體、由小而大」的方式建構群集結構,並能用一張樹狀圖(dendrogram)清楚地展示整體層級關係。一、階層式分群分析的核心概念
階層式分群可分為兩種思考方向:
- 凝聚式(Agglomerative)
每個觀察值起初都是一群,依據相似程度逐步合併(自下而上)。 - 分裂式(Divisive)
先將所有資料視為一群,再逐步拆分(自上而下)。
實務上最常見的是「凝聚式」方法。
整個分析結果可以用「族譜樹狀圖(dendrogram)」呈現,顯示每次合併的距離與層級。
二、距離與連結方式(Linkage Method)
階層式分群的結果會受到兩個要素影響:
- 距離衡量方式(Distance Metric):
- 歐氏距離(Euclidean distance)
- 曼哈頓距離(Manhattan distance)
- 馬氏距離(Mahalanobis distance)
2.群與群之間的距離定義(Linkage Method):

在社會科學與醫學研究中,Ward法最為常見,因為它能產生相對穩定、緊湊的群組。
三、適用情境
階層式分群分析特別適合以下情境:
- 📊 探索性分析(Exploratory Analysis):
想先觀察資料的自然群集結構。 - 🧬 樣本數較少(數十到數百筆):
可清楚繪出樹狀圖,不易過度複雜。 - 🧠 重視解釋與可視化:
可透過 dendrogram 理解每次合併的層級與距離。 - 🧪 應用領域廣泛:
例如基因表現資料分群、心理量表項目分類、病患分型、消費者行為分析等。
四、與其他分群方法的比較

五、實作範例:R 語言進行階層式分群
1️⃣ 資料介紹:USArrests
這是 R 內建的一個經典資料集,記錄了 美國 50 州在 1973 年的四項暴力犯罪率:

這份資料常被用來示範分群分析,因為各州在犯罪型態上存在自然差異。
2️⃣ R 程式碼實作
# 載入資料
data("USArrests")
# 1. 標準化(避免不同變數尺度差異)
data_scaled <- scale(USArrests)
# 2. 計算距離矩陣(歐氏距離)
dist_matrix <- dist(data_scaled, method = "euclidean")
# 3. 階層式分群(使用 Ward.D2)
hc <- hclust(dist_matrix, method = "ward.D2")
# 4. 繪製樹狀圖
plot(hc, main = "階層式分群樹狀圖", xlab = "", sub = "")
# 5. 以三群為例:標示框線
rect.hclust(hc, k = 3, border = "red")
# 6. 分群結果
groups <- cutree(hc, k = 3)
table(groups)
這樣即可看到樹狀圖與三群劃分的結果

六、如何判斷「合理的分群數」?
在階層式分群中,樹狀圖提供了視覺線索 ---越「高」的水平線代表群體合併時差異越大。 理論上,應在樹狀圖的「長枝」處切割,以形成彼此差異明顯的群。
但除了目測之外,還有更系統的方法:肘部法則(Elbow Method)。
💡 肘部法則 (Elbow Method)
肘部法則透過觀察「群內平方和(Within-cluster sum of squares, WSS)」的變化,
找出當群數增加時,誤差下降幅度開始趨緩的轉折點(像手肘一樣的彎曲處)。
在 R 中,我們可用 factoextra 套件視覺化這個現象:
# 安裝與載入套件
install.packages("factoextra")
library(factoextra)
# 使用 Ward 法進行階層分群
hc <- hclust(dist_matrix, method = "ward.D2")
# 繪製肘部法則圖
fviz_nbclust(data_scaled, FUN = hcut, method = "wss") +
labs(title = "肘部法則圖:選擇最佳群數")

在圖中,你會看到 WSS 隨著群數增加而下降,但在某個點之後,下降速度明顯趨緩。 那個「轉折點」就是最合理的分群數。
七、結語
階層式分群分析像是一棵「資料的家族樹」,幫助我們理解觀察值之間的親近程度與分群邏輯。它的優勢在於可視化、可解釋性高,非常適合在研究初期探索資料結構。在實務應用上,搭配肘部法則或樹狀圖觀察,就能更有依據地決定分群數。
🔍 延伸閱讀
- Kaufman, Leonard, and Peter J. Rousseeuw. Finding groups in data: an introduction to cluster analysis. John Wiley & Sons, 2009.
- S Brian, Everitt, et al. "Cluster analysis." Library of Congress Cataloging-in-Publication Data, 2011.
- R 官方文件:
hclust,cutree,factoextra套件說明
















