DBSCAN 的兩個關鍵超參數是什麼?
企業資料分析團隊使用 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)演算法進行顧客行為分群,並希望模型能自動區分主要群集與雜訊資料。在此演算法中,決定聚類結果的兩個主要超參數為下列何者?
一家企業要把顧客依行為模式分群,選用 DBSCAN 這個演算法。DBSCAN 的特別之處在於:它能自動找出「主要群集」,同時把「孤立的異常點」標記為雜訊,不強迫把每個點都歸入某個群。
問你:DBSCAN 有兩個主要超參數,決定了聚類的結果,這兩個是什麼?
一句話總結
DBSCAN 的兩個主要超參數是:鄰域半徑 Epsilon(ε),決定「多近才算鄰居」;最小點數 MinPts,決定「要幾個鄰居才算是一個密集核心點」。這兩個參數共同決定群集的形狀、大小和雜訊的比例。
先感受問題:如何定義一個「聚集」的地方?
「曜群科技」的資料分析師要把 5 萬名顧客依購買行為分群,找出主要的消費族群,同時也要標記出「怪怪的異常交易」(這些不該被歸入任何正常群)。
他們選用 DBSCAN,因為它不需要事先告訴它「要分幾群」(不像 K-means 要指定 K),而且能自動把孤立點標為雜訊。
但 DBSCAN 需要你告訴它兩件事:
如果兩個顧客的消費行為差距小於 ε,就算彼此的鄰居。
ε 設太小:幾乎沒有人互為鄰居,所有人都被標成雜訊。
ε 設太大:幾乎所有人都是彼此鄰居,全部被歸成一個大群。
如果一個點的 ε 鄰域內有至少 MinPts 個鄰居,它就是「核心點(Core Point)」,可以形成或擴展群集。
MinPts 設太小:噪音點也變核心點,雜訊被錯誤納入群。
MinPts 設太大:密度不夠高的真實群被判為雜訊。
這就是 DBSCAN 的核心:用 ε 定義「近」,用 MinPts 定義「密」,兩個合在一起才能描述什麼叫「一個密集的群」。
在 DBSCAN 之前,K-means 會踩哪些坑?
- 必須事先指定 K(群數):K-means 要你告訴它「分幾群」,但曜群科技不知道顧客自然分成幾種類型,瞎猜 K 值會讓結果沒意義。
- 無法處理非球形群:K-means 把每個群想像成「球形」,如果真實的顧客群是彎曲的、弧形的分佈,K-means 就切不對,DBSCAN 可以找出任意形狀的群。
- 沒辦法自動辨識雜訊:K-means 一定會把每個點歸入某個群,連異常顧客也強制歸群,雜訊點會汙染群中心,讓群的代表性下降。
- 對離群值敏感:K-means 的群中心(Centroid)是平均值,一個極端的異常顧客就能大幅拉偏整個群的中心,讓群的描述失真。
- 結果受初始值影響:K-means 的初始群中心隨機選取,不同初始值可能得到不同結果,需要多次執行取最好的,不穩定。
ε 和 MinPts:DBSCAN 靠這兩個決定一切
曜群科技的分析師設定:ε = 0.5(消費行為向量距離 < 0.5 算鄰居),MinPts = 5(至少要有 5 個鄰居才算核心點)。
DBSCAN 的運作流程:
步驟一:對每個顧客點,找出在 ε 距離內的所有鄰居。如果鄰居數 ≥ MinPts,這個點是「核心點」。
步驟二:把互相在 ε 範圍內的核心點連在一起,形成一個群集(Cluster)。邊緣點(鄰居 < MinPts 但在某個核心點的 ε 範圍內)也納入群集但不擴展。
步驟三:不在任何核心點 ε 範圍內的點,標記為雜訊(Noise),在最終結果裡標為 -1。
ε 和 MinPts 是這個過程中唯一需要人工設定的數字,決定了所有群的形成。
這就是選項 C 講的:鄰域半徑(Epsilon ε)與最小點數(MinPts)是 DBSCAN 決定聚類結果的兩個主要超參數。
技術版:DBSCAN 的演算法細節與超參數選擇
本題沒有複雜公式,但相關技術背景值得知道。
DBSCAN 的三種點分類
| 點的類型 | 條件 | 說明 |
|---|---|---|
| 核心點(Core Point) | ε 鄰域內鄰居數 ≥ MinPts | 群集的形成者,可以擴展群 |
| 邊界點(Border Point) | ε 鄰域內鄰居數 < MinPts,但在某核心點的 ε 鄰域內 | 屬於群集但不擴展,群的邊緣 |
| 雜訊點(Noise Point) | 不在任何核心點的 ε 鄰域內 | 標記為 -1,不屬於任何群 |
如何選擇合適的 ε 和 MinPts?
MinPts 的經驗法則:MinPts ≥ 資料維度 D + 1,通常設為 2D 到 5D 之間。資料維度高或資料有雜訊時,MinPts 要設更大。
ε 的選擇方法:k-distance 圖。對每個點計算它到第 k 個最近鄰居的距離(k = MinPts - 1),從小到大排序畫成圖,圖中出現「手肘(elbow)」的位置就是建議的 ε 值。
ε 太小 → 大多數點被標為雜訊,群太零散 ε 太大 → 所有點都在同一個群,沒有分群效果 MinPts 太小 → 雜訊點也形成群,假群太多 MinPts 太大 → 真實的小群被標為雜訊
DBSCAN vs K-means 的超參數比較
| 特性 | K-means | DBSCAN |
|---|---|---|
| 超參數 | K(群數) | ε 和 MinPts |
| 需要事先知道群數 | 是 | 否 |
| 能處理任意形狀 | 否(只有球形) | 是 |
| 自動識別雜訊 | 否 | 是 |
| 對離群值敏感 | 是(影響 Centroid) | 否(標為雜訊) |
| 計算複雜度 | O(nKt),n 樣本數 K 群數 t 迭代 | O(n log n),使用空間索引時 |
DBSCAN 的限制
高維資料問題:維度詛咒(Curse of Dimensionality)讓距離計算失去意義,ε 很難設定,建議先做降維(PCA)。密度差異大的群:如果資料中有的群很密集、有的很鬆散,單一 ε 無法兼顧,這時可考慮 HDBSCAN(Hierarchical DBSCAN)。
為什麼其他選項是錯的
字面在說什麼:DBSCAN 的兩個主要超參數是資料有幾個特徵,以及學習率的設定。
為什麼不對:「特徵數」是資料本身的屬性,不是演算法的超參數(你不需要「設定」特徵數,它由資料決定)。「學習率」是梯度下降訓練中用的概念,DBSCAN 是一個基於密度的聚類演算法,完全沒有梯度下降、沒有訓練過程,根本不需要學習率。
誰會選錯:把「深度學習超參數」和「聚類演算法超參數」混在一起的人。學習率是神經網路的概念,DBSCAN 屬於傳統機器學習中的非監督式學習,運作原理完全不同。
字面在說什麼:DBSCAN 的超參數是群數 K 和某個距離閾值。
為什麼不對:「K 值」是 K-means 演算法的超參數,DBSCAN 的核心優點之一就是「不需要指定 K(群數)」,演算法自動決定群的數量。雖然 ε 確實是一種距離閾值,但配對的超參數是 MinPts,不是 K 值。這個選項把 K-means 的概念混入 DBSCAN,是考試常見的混淆陷阱。
誰會選錯:聚類演算法學了 K-means 之後,直接把「K 值」的概念套過來,以為所有聚類都要指定 K 的人。DBSCAN 的「D」和「B」代表 Density-Based(基於密度),和 K 值無關。
字面在說什麼:DBSCAN 的超參數是 Cross Entropy 損失函數和神經網路的權重初始化方式。
為什麼不對:Cross Entropy(交叉熵)是神經網路分類任務的損失函數,DBSCAN 不是神經網路,沒有損失函數、沒有反向傳播,Cross Entropy 在這裡完全不適用。「權重初始化」也是神經網路訓練的概念,和 DBSCAN 毫無關係。這個選項考的是「你能不能分辨聚類演算法和神經網路的差異」。
誰會選錯:對神經網路比較熟,聽到「AI 模型」就自動聯想到神經網路超參數,忘記聚類是一類完全不同的演算法的人。
同個考點下次怎麼變形
直覺:如果把 ε 設為無限大,DBSCAN 會得到什麼結果?
答案:所有點都在彼此的 ε 鄰域內,每個點的鄰居數都 ≥ MinPts,所以所有點都是核心點,整個資料集形成一個大群,沒有任何雜訊。等於沒有分群,只有一個群包含所有資料。ε = 無限大讓 DBSCAN 的分群功能完全失效。
直覺:為什麼 DBSCAN 對高維資料(如用戶行為有 100 個特徵)效果變差?
答案:高維空間中,所有點之間的距離都趨向相等(維度詛咒),導致 ε 很難區分「近」和「遠」,幾乎所有點的鄰居數都差不多。ε 稍微大一點全部擠成一群,稍微小一點全部變雜訊,調參極度困難。通常需要先用 PCA 或 UMAP 降維到 2D/3D 再跑 DBSCAN。
直覺:HDBSCAN 和 DBSCAN 的主要差異是什麼?
答案:DBSCAN 使用固定的 ε,對密度不均的資料(有的群很密、有的很鬆散)表現不好。HDBSCAN(Hierarchical DBSCAN)不需要設定 ε,它在不同密度層次建立樹狀結構,自動找出最「穩定」的群集,可以同時處理密度差異大的群,實務上通常比 DBSCAN 更好用。
直覺:DBSCAN 可以用來做異常偵測(Anomaly Detection)嗎?
答案:可以,而且很常用。DBSCAN 自動把孤立點標為雜訊(Noise,標籤 -1),這些雜訊點就是「與任何群集都格格不入的異常點」。在信用卡詐騙、工廠設備故障偵測等場景,DBSCAN 的雜訊點直接對應異常樣本,是一種無需標籤的異常偵測方法(Unsupervised Anomaly Detection)。
直覺:聚類的好壞要怎麼評估?有標準答案嗎?
答案:聚類是非監督式學習,通常沒有「正確答案」,評估方法分兩類:內部指標(不需要真實標籤)如輪廓係數(Silhouette Score,衡量同群緊密、異群分離),以及外部指標(有真實標籤可對比)如調整蘭德指數(Adjusted Rand Index)。DBSCAN 的 ε 和 MinPts 通常用輪廓係數調整。
想再往下看,這 5 個
- 密度分群(Density-Based Spatial Clustering)DBSCAN 的核心演算法族,不需預設群數,以鄰域密度定義群集,自動將孤立點標為雜訊,正解考點所在。
- 超參數(Hyperparameter)訓練前人工設定的模型設計參數,ε 和 MinPts 正是 DBSCAN 的兩個超參數,不同於模型自動學習的權重。
- K 均值分群(K-Means Clustering)與 DBSCAN 並列的常見聚類法,需預先指定 K 值、只能處理球形群,是理解 DBSCAN 優勢時最常對照的易混淆方法。
- 異常偵測(Anomaly Detection)DBSCAN 自動把孤立點標為雜訊(標籤 -1),可直接作為無監督異常偵測工具,延伸至詐欺偵測、設備故障等場景。
- 非監督式學習(Unsupervised Learning)DBSCAN 所屬的學習範式,不需要標籤即可從資料分佈找出結構,是理解聚類演算法定位的上位概念。