AI時代系列(1) 機器學習三部曲: 🔹 第一部:《機器學習 —— AI 智慧的啟航》
42/100 第五週:非監督學習
42. 階層式聚類 🏗 像家族樹一樣逐層分組,適合分析層級關係!
階層式聚類 🏗
像家族樹一樣逐層分組,適合分析層級結構與關聯關係!
________________________________________
✅ 什麼是階層式聚類?(Hierarchical Clustering)
階層式聚類是一種非監督學習方法,透過計算樣本之間的距離,逐層建立資料的層級結構,結果通常呈現為「樹狀圖(Dendrogram)」。
📌 特別適合用來:
• 觀察樣本之間的「親疏關係」
• 分析層級結構(如生物進化樹)
• 社群關係分析、基因資料分析、商品分群
________________________________________
✅ 運作方式(兩種)
類型 說明
凝聚式(Agglomerative) 最常用,從下而上,每個點先獨立,逐步合併成群
分裂式(Divisive) 從上而下,整體視為一群,逐步拆解成小群
🎯 以凝聚式最常見
________________________________________
✅ 演算法流程(Agglomerative 範例)
1️⃣ 每一筆資料各自為一群
2️⃣ 計算所有群之間的距離(相似度)
3️⃣ 合併「最近的兩群」
4️⃣ 重複步驟 2-3,直到只剩下一群或達到預設群數
📌 最後會生成一張「樹狀圖(Dendrogram)」,清楚呈現資料的合併過程和層級結構。
________________________________________
✅ 常見距離計算方式(Linkage Methods)
單一連結(Single Linkage): 取群與群之間最近距離,可能形成鏈狀
完全連結(Complete Linkage): 取群與群之間最遠距離,群內更緊密
平均連結(Average Linkage): 計算兩群內所有點的平均距離
Ward’s Method: 最小化群內變異(最常用,效果最好)
________________________________________
✅ Python 簡單實作範例(含樹狀圖)
python
import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
from sklearn.datasets import make_blobs
# 產生模擬數據
X, _ = make_blobs(n_samples=30, centers=3, random_state=42)
# 執行階層式聚類
Z = linkage(X, method='ward')
# 畫出樹狀圖
plt.figure(figsize=(10, 5))
dendrogram(Z)
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('Sample Index')
plt.ylabel('Distance')
plt.show()
_______________
這段程式碼示範了如何使用 Python 執行階層式聚類(Hierarchical Clustering),先透過 make_blobs 生成具有三個中心的模擬資料,接著使用 scipy 的 linkage 函數(採用 Ward 方法)計算樣本間的聚類順序與距離,最後利用 dendrogram 繪製樹狀圖,視覺化聚類過程。樹狀圖能幫助我們觀察資料樣本的相似性與合併順序,並可依據不同高度決定最終要分成幾群,是探索性資料分析中常用的工具之一。
_________________________
✅ 階層式聚類的優點與缺點
✅ 優點
不需先決定群數 K
結果具層次感,適合分析關係
適合視覺化(Dendrogram)
⚠ 缺點
計算成本高,尤其資料量大時
對離群點敏感
無法「回頭」調整已合併的群
________________________________________
✅ 應用場景
• 基因與生物資訊分析:找出基因相似群
• 市場消費行為分層:高價值、中價值、低價值客群
• 文本或語言資料聚類:建立詞彙關聯樹
• 社群網路結構分析
________________________________________
✅ 總結重點(金句)
💡 「階層式聚類讓 AI 看出資料之間的親疏遠近,像家族樹一樣,層層拆解、逐層合併!」
________________________________________
📌 如果你想知道: ✅ 如何自動決定最佳分群數(剪樹技巧)
✅ 階層式 vs K-Means 聚類的差異與選擇時機
✅ 適合大數據的改良版本(如 Fast Hierarchical Clustering)
歡迎告訴我,我完整補上!