DL、ML筆記(七): Clustering Algorithm(K-means、MeanShift、DBSCAN)

JianJie
Apr 7, 2021

--

Clustering 的中文為分群或聚類,但與分類(Classification)為不相同的議題,通常Clustering所指的為非監督式(Unsupervised)的方法,其所擁有的資料為無標籤資料,將未知類別的數據經由各種方法,計算出數據間的相似度,並依此特徵歸類為同一族群,其資料呈現為下圖:

左圖為原始資料分布狀況,但經過一些算法處裡過後,可以轉換為右圖狀況,呈現為一群群資料狀態,在這種狀態下,就可以給予所有資料標籤,以利之後資料的運用。

此篇主要為整理常見的Cluster方法 (K-means、Mean Shift、DBSCAN、OPTICS),應用於不同資料的狀態下,簡要介紹各方法。

K-means

K-means是一種經典算法,簡單且快速。

其算法需要先設定K值,需要將數據分為K類,之後經過多次迭代過後,可以找出類別的重心及聚類後的結果。

其步驟為:

1. 設定K值,將數據分為K類

2. 在特徵空間中隨機設定K個群體中心

3. 計算所有數據對K個群心的距離

4. 將數據以K個群心最近距離對數據進行分類

5. 將分類完的數據重新計算中心,更新群心點

6. 重複3~5步驟,直到群心點無太大變動,結束聚類

其結果如下:

缺點:

1. 對於離群點和孤立點敏感

2. K值難以抉擇

3. 初始聚類中心會影響聚類結果

4. 只能聚類凸型數據

Mean Shift

Mean shift 演算法是基於核密度估計(Kernel Density Estimation, KDE)的爬山演算法,可用於聚類、影象分割、跟蹤等。可以將數據想像為一種資料分布狀況,核密度估計是將離散資料轉換為連續資料的方法,估計出數據間密度的狀況,如下圖:

Mean Shift 算法會沿著KDE的梯度方向,集中聚類,逐次迭代,之後便可找到多個聚類中心。

其確切算法為:

1. 從數據中選擇一資料點P

2. 將距離該點bandwidth內的所有資料點分為同一群,記為集合G

3. 計算G之重心,同時計算該資料點到重心所需的位移量D

4. 使該資料點往重心移動,Pnew = P + D

5. 重複2~4步驟,使重心不再移動,即完成聚類。(其意義等同於尋找資料的局部極大值,以此為聚類中心)

優點:

  1. 可以應用於任意形狀之分群
  2. 不須指定分群數量

缺點:

  1. 計算複雜度較高,運算量大
  2. 聚類結果會受到bandwidth影響。bandwidth過小時,造成過多局部最大值,分群較為細膩

DBSCAN

Density-Based Spatial Clustering of Applications with Noise

DBSCAN是在 1996 年由Martin Ester, Hans-Peter Kriegel, Jörg Sander 及 Xiaowei Xu 提出的聚類分析算法,為基於”密度”的一種聚類方法,該算法可以將附近的點判斷為同一群組,並且可以分出局外點。

1. 先定義epsilon ε及minPts

ε 為計算密度範圍之半徑,minPts為該範圍內所需之最少資料點數量。

2.尋找核心點

其需符合條件:如果一個點 p 在距離 ε 範圍內有至少 minPts 個點(包括自己),這個點則為核心點,剩餘在 ε 內的資料點則為 p 直接可達之資料點。

同時定義"直接可達",沒有任何資料料點是由非核心點直接可達的。而直接可達為非對稱性關係,沒有點是由非核心點可達的,但非核心點可以是由其他點可達的。

3.將所有核心點以直接可達之條件聚類

假設核心點p1p2為直接可達,則判斷為同一群,而所有由核心點直接可達之資料點皆分類為該群中。

假設核心點p1p2不為直接可達,則這兩個核心點區分為兩類。

每一個群內必須至少擁有一個核心點,其餘不可由任何核心點直接可達的資料點則為局外點。

左圖中,紅色點 A 為核心點,對於所有紅色點互相為直接可達,而 BC則為非核心點,但是可由其他核心點直接可達。N則為局外點,沒有任何點可以達成直接可達條件。

優點:

  1. 不須指定分群數量
  2. 可以應用於任意形狀之分群 (如下圖)
  3. 能分辨出局外點(雜訊)
  4. 如對資料擁有足夠的了解,調整適當的參數可以獲得較佳分類

缺點:

  1. 如果資料分布狀態擁有不同的密度,彼此間差異過大時,無法提供良好聚類結果(同一組參數無法適用所有數據分布狀況)
  2. 高維度數據會產生與第1點相符之狀況,參數難以選擇
  3. 對於資料不夠了解,難以選擇 ε minPts

--

--

JianJie
JianJie

Written by JianJie

Image Processing / Computer Vision / Deep Learning

No responses yet