AI時代系列(3) 機器學習三部曲: 🔹 第一部:《機器學習 —— AI 智慧的啟航》
43/100 第五週:非監督學習
43. DBSCAN 🔍 密度聚類演算法,能找出不同密度的數據群!
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)🔍
密度聚類演算法,能找出不同密度的數據群,並自動剔除離群值!
________________________________________
✅ 核心概念:
DBSCAN 是一種基於密度的非監督式聚類算法,透過判斷資料點周圍的密度來分群,適合處理形狀不規則、分布不均的數據,並且能有效識別離群點(Outliers)。
________________________________________
✅ 關鍵特色:
• 不需事先指定群數(K)
• 能夠辨識任意形狀的群集
• 天生支援離群值偵測,將不屬於任何群的點標為「雜訊」
• 適合用於含有雜訊或不規則分布的資料集
________________________________________
✅ 三大概念定義:
名稱 說明
ε(Epsilon 半徑): 判定鄰居的距離閾值
MinPts(最小點數): 成為核心點所需的最少鄰居數
核心點(Core Point): 半徑 ε 內鄰居數 ≥ MinPts 的點
邊界點(Border Point): 鄰居不足 MinPts,但落在核心點 ε 範圍內的點
雜訊點(Noise): 既非核心點也非邊界點的離群點
________________________________________
✅ 演算法流程簡單理解:
1️⃣ 對每個點計算 ε 範圍內的鄰居數
2️⃣ 如果鄰居數 ≥ MinPts → 核心點 → 展開群集
3️⃣ 若不夠,但落在其他核心點的 ε 內 → 邊界點
4️⃣ 其他皆視為 雜訊點(Outliers)
________________________________________
✅ 適用場景:
• 地理空間數據分析(GPS、地圖)
• 天文觀測中的星團識別
• 社群網路分析
• 異常偵測(Anomaly Detection)
________________________________________
✅ 優點與缺點總覽:
✅ 優點
自動找出群數,適合不規則形狀資料
可偵測離群點、雜訊
對群內密度變化具彈性
⚠ 缺點
需手動調整 ε 和 MinPts,影響大
高維度資料效果不佳(距離計算困難)
對群內密度變化具彈性 遇到密度差異太大時表現有限
________________________________________
✅ Python 簡單實作範例
python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
from sklearn.datasets import make_moons
# 設定中文字型
plt.rcParams['font.sans-serif'] = ['Microsoft JhengHei']
plt.rcParams['axes.unicode_minus'] = False
# 產生月亮形狀數據
X, _ = make_moons(n_samples=300, noise=0.05, random_state=42)
# 執行 DBSCAN 聚類
dbscan = DBSCAN(eps=0.2, min_samples=5)
y_db = dbscan.fit_predict(X)
# 視覺化結果
plt.scatter(X[:, 0], X[:, 1], c=y_db, cmap='plasma')
plt.title("DBSCAN 聚類結果")
plt.show()
這段程式碼展示了如何使用 DBSCAN(一種密度式聚類演算法)對非線性結構的資料進行分群分析。首先透過 make_moons 產生具有兩個月亮形狀的資料集,並加入些許雜訊來模擬真實情境。接著使用 DBSCAN,設定鄰域半徑 eps=0.2 與最小樣本數 min_samples=5,辨識出密度較高區域中的核心點與邊界點,並將雜訊標記為 -1。最後以顏色區分不同群體,將聚類結果視覺化。此方法特別適合處理形狀不規則或非球狀分布的資料。
________________________________________
✅ 與 K-Means、階層式聚類比較:
方法 特點 適用場景
K-Means: 對球形分群效果好 適合群數已知 資料分布均勻
階層式聚類: 分層結構明確 適合樣本量小 需視覺化關係
DBSCAN:抗雜訊、可辨識不規則形狀 適合含異常值、非線性分布資料
________________________________________
✅ 總結金句:
💡 「DBSCAN 是密度感知型聚類利器,能自動抓出群集與異常,特別適合地理、天文、社群分析!」