機器學習入門|聚類(二)

kissjz發表於2018-02-01

密度聚類

顧名思義,密度聚類是基於樣本分佈的緊密程度來劃分的。因為這個性質,密度聚類可以劃分出形狀不規則的簇,彌補了原型聚類只能劃分凸形的聚類簇的不足。

DBSCAN演算法

DBSCAN演算法是基於鄰域引數$(epsilon,MinPts)$來刻畫樣本分佈的緊密程度。

幾個概念:

  • $epsilon$鄰域:給定物件半徑$epsilon$內的區域
  • 核心物件:物件的$epsilon$鄰域內有至少MinPts個樣本點,則該物件為核心物件
  • 密度值達:對於樣本集合D,樣本點$x_{j}$在$x_{i}$的$epsilon$鄰域內,且$x_{i}$為核心物件,則稱$x_{j}$由$x_{i}$密度直達
  • 密度可達:若$x_{i}$由$x_{i-1} (i=2,3,…n)$密度直達,則稱$x_{1}$由$x_{n}$密度可達
  • 密度相連:若$x_{i}$和$x_{j}$均由$x_{k}$密度可達,則$x_{i}$和$x_{j}$密度相連

如果把一個核心物件以及由這個核心物件匯出的所有密度可達的樣本點組成一個集合,則此集合就是一個聚類簇,即DBSCAN演算法就是通過遍歷每一個未被劃分的樣本點來進行簇劃分,而不是核心物件且沒有歸屬的簇的樣本點就是噪聲點。

DBSCAN演算法的鄰域$epsilon$和MinPts都需要使用者指定。它的缺陷是很難識別密度不同的簇,MinPts過高,則有可能使部分低密度的資料誒被錯誤地當成噪聲點,MinPts過低,則無法正確劃分高密度的簇,使不同的簇被劃分到一起。

層次聚類

層次聚類對資料集進行拆分或者合併操作最終形成簇劃分的一種聚類思路

AGNES演算法

AGNES演算法採用合併策略進行聚類,初始使資料集中每一個樣本都已是一個簇,之後通過找出最近的兩個簇進行合併,遞迴進行直到滿足停止條件或者所有書籍都合併成一個簇。這裡判斷最近距離可以採用不同的距離計算。

1.最小距離:$d_{min}(C_{i},C_{j})=min(dist(x,z))$即兩個簇之間距離最近的兩個樣本的距離
2.最大距離:$d_{max}(C_{i},C_{j})=max(dist(x,z))$即兩個簇之間距離最大的樣本之間的距離
3.平均距離:$d_{avg}(C_{i},C_{j})=frac{1}{|C_{i}||C_{j}|}sum_{xin C_{i}}sum_{xin C_{j}} dist(x,z)$即質心距離

其中,$C_{i} (i=1,2,…,n)$是簇,$x,z$分別是$C_{i},C_{j}$中的樣本點

預設情況下,$dist()$為歐氏距離。

由於演算法複雜度為$O(n^{2})$,不適合大資料集。

層次聚類過程最明顯的特點就是不可逆性,由於物件在合併或分裂之後,下一次聚類會在前一次聚類基礎之上繼續進行合併或分裂,結果一旦產生就無法變更。

由於聚類是無監督學習,不同的聚類演算法還有很多,且都有各自的作用,例如把資料量化成有限單元,使所有的聚類操作都在這個網格結構(即量化的空間)上進行的網格聚類;對每一個簇都假設一個模型進行擬合的模型聚類等。


相關文章