機器學習Chapter3-(聚類分析)聚類簡介

聚類簡介

聚類任務

在實際問題中,樣本大多數是無標記的,而機器學習的目的是通過對無標記訓練樣本的學習來揭示數據的內在性質和規律。此類方法應用最廣的是“聚類”(clustering)。

形式化的來說,在“無監督學習”中,聚類試圖將樣本劃分爲若干個通常是不相交的子集,每個子集稱爲一個“簇”(cluster)。聚類的作用:
- 作爲一種探索性的方法,用於尋找數據內在特點和分佈規律
- 作爲分類等其他學習任務的前驅過程。作爲分類的預處理,不直接解決數據分析

mark

我們要做的事情,無外乎就是把相似的樣本歸爲一類,把不同的類別區分開。如上圖所示。

但是問題來了:怎麼劃分樣本,怎麼評價劃分的好壞? 回答這個問題,需要先討論聚類算法涉及的兩個基本問題–性能度量距離計算


性能度量

聚類的性能度量和“監督學習”的性能度量作用類似,對於聚類結果,我們需要一個評價標準來評估好壞;同時,給定的性能度量如同損失函數一樣,給了聚類過程優化目標,這樣聚類能得到更好的結果。

聚類是將樣本劃分爲若干個簇,從直觀的上來看,我們希望同一簇的樣本儘可能相似,不同簇的樣本儘可能不同,這類似線性模型-線性判別分析的度量定義。形式化的來說,聚類結果的“簇內相似度”(intra-cluster similarity)高且“簇間相似度”(inter-cluster similarity)低。如下圖:

mark

聚類性能度量大概分爲兩類:

  • 一類是將聚類結果與某個“參考模型”進行比較,稱爲“外部指標”(external index)
  • 另一類是直接考察聚類結果而不利用任何參考模型,稱爲“內部指標”(internal index)

對於有參考模型的

下面引入一些定義:
對數據集D={x1,x2,...,xm} ,假定通過聚類給出的簇劃分爲C={C1,C2,...,Ck} ,參考模型給出的簇劃分爲C={C1,C2,...,Cs} ,相應地,令λλ 分別表示CC 對於的簇標記向量,我們將樣本兩兩配對,定義如下:

a=|SS|,SS={(xi,xj)|λi=λj,λi=λj,i<j}
b=|SD|,SD={(xi,xj)|λi=λj,λiλj,i<j}
c=|DS|,DS={(xi,xj)|λiλj,λi=λj,i<j}
d=|DD|,DD={(xi,xj)|λiλj,λiλj,i<j}

集合SS 包含了在C 中隸屬於相同簇且在C 也是隸屬於相同簇的樣本對;集合SD 包含了在C 中隸屬於相同簇但是在C 不屬於相同簇的樣本;…每個樣本對(xi,xj)(i<j) 僅能出現在一個集合中:
因此有a+b+c+d=C2m=m(m1)2 成立.

基於上面的定義,有下面常用的聚類性能度量外部指標:

  • Jaccard係數(Jaccard Coefficient,簡稱JC)

    JC=aa+b+c
    所有屬於同一類的樣本對,同時在C,C 中隸屬於同一類的樣本對的比例。
  • FM指數(Fowlkes and Mallows Index,簡稱FMI)

    FMI=aa+baa+c
    C 中屬於同一類的樣本對中,同時屬於C 的樣本對的比例爲p1 ;在C 中屬於同一類的樣本對中,同時屬於C 的樣本對的比例爲p2 ,FMI就是p1p2 的幾何平均。
  • Rand指數(Rand Index,簡稱RI)

    RI=2(a+d)m(m1)
  • ARI指數(Adjusted Rand Index,ARI):

    ARI=RIE[RI]max(RI)E[RI]
    使用RI有個問題,對於隨機聚類,RI指數不保證接近0。而ARI指數可通過隨機聚類情況下的RI(即E[RI] )來解決。

顯然,上述性能度量的結果值均在[0,1] 區間,值越大越好。

直接考察聚類結果的

考慮聚類結果的簇劃分爲C={C1,C2,...,Ck} ,定義:

avg(C)=2|C|(|C|1)1i<j|C|dist(xi,xj)
diam(C)=max1i<j|C|dist(xi,xj)
dmin(Ci,Cj)=minxiCi,xjCjdist(xi,xj)
dcen(Ci,Cj)=dist(μi,μj)

其中,dist(,) 用於計算兩個樣本之間的距離;μ 代表簇C 的中心點μ=1|C|1i|C|xi ,顯然,avg(C) 對應於簇C 內樣本間的平均距離,diam(C) 對應於簇C 內樣本間的最遠距離,dmin(Ci,Cj) 對應於簇Ci 與簇Cj 最近樣本間的距離,dcen(Ci,Cj) 對應於簇Ci 與簇Cj 中心點間的距離.

基於上面的定義,下面是常用的聚類性能度量內部指標:

  • DB指數( Davies-Bouldin Index,簡稱DBI)

    DBI=1ki=1kmaxji(avg(Ci)+avg(Cj)dcen(Ci,Cj))
    給定兩個簇,每個簇樣本之間平均值之和和比上兩個簇的中心點之間的距離作爲度量。然後考察該度量對所有簇的平均值。顯示DBI越小越好。
  • Dunn指數( Dunn Index,簡稱DI)

    DI=min1i<k{minji(dmin(Ci,Cj)max1lkdiamCl)}
    任意兩個簇之間最近的距離的最小值,除以任意一個簇內距離最遠的兩個點的距離的最大值。DI越大越好。

顯然,DBI的值越小越好,DI值相反,越大越好


距離計算

在上面度量性能內部指標中,我們用到了dist(,) 函數,dist(,) 是一個“距離度量”,爲什麼需要定義這個距離度量?
在實際聚類過程中,我們會對數據做預處理,如果處理的不當,會影響聚類的結果。如下圖:

mark

分別對x軸和y軸放縮0.2,會直接影響聚類結果。故我們在做聚類時,需要一個好的距離度量標準。

形式上,度量距離函數dist(,) 需要滿足一些性質:

  • 非負性:dist(xi,xj)0
  • 同一性:dist(xi,xj)=0 當前僅當xi=xj
  • 對稱性:dist(xi,xj)=dist(xj,xi)
  • 直遞性:dist(xi,xj)dist(xi,xk)+dist(xk,xj)

給定樣本xi={xi1,xi2,...,xin}xj={xj1,xj2,...,xjn} ,最常用的是Minkowski distance:

distmk(xi,xj)=(u=1n|xiuxju|p)1p
xi,xjLp 範數||xixj||p
  • p=1 ,即爲Manhattan distance:
    distman(xi,xj)=||xixj||1=u=1n|xiuxju|
  • p=2 ,即爲Euclidean distance:
    disted(xi,xj)=||xixj||2=u=1n|xiuxju|2

有序屬性和無序屬性下的距離測量

在討論距離計算時,屬性上是否定義了“序”關係更爲重要。例如定義域{1,2,3} 能直接計算距離,這樣的屬性稱爲“有序屬性”。又有定義域爲{} 這樣的數據不能之間計算距離,稱爲“無序屬性”。

對於無序屬性可採用VDM(Value Difference Metric),令mu,a 表示在屬性u 上取值爲a 的樣本數,mu,a,i 表示第i 個樣本簇中在屬性u 上取值爲a 的樣本數,k 爲樣本簇數,則屬性u 上兩個離散值ab 之間的VDM距離爲

CDMp(a,b)=i=1k|mu,a,imu,amu,b,imu,b|p

將Minkowski distance和VDM結合即可處理混合屬性。假定有nc 個有序屬性、nnc 個無序屬性,則:

MinkovDMp(xi,xj)=(u=1nc||xiuxju|p+u=nc+1nVDMp(xiu,xju))1p

當樣本空間中不同屬性的重要性不同,可使用“加權距離”.例如:
distwmk(xi,xj)=(w1|xi1xj1|p+...+wn|xinxjn|p)1p
權重wi0 表徵不同屬性的重要性,且ni=1wi=1

k均值算法

見我的Blog 機器學習Chapter3-(聚類分析)Python實現K-Means算法



高斯混合模型與EM算法

見我的Blog機器學習Chapter3-(聚類分析)詳解高斯混合模型與EM算法(Python實現)



密度聚類

密度聚類即“基於密度的聚類”(density-based clustering),此類算法假設聚類結構能通過樣本分佈的緊密程度確定。通常情況下,密度聚類算法從樣本密度的角度考察樣本之間的可連接性,並基於可連接樣本不斷擴展聚類簇以獲得最終的聚類結果。

例如下面的數據集就很適合用密度聚類:

mark

DBSCAN算法

DBSCAN是一種著名的密度聚類算法,基於一組“領域”來刻畫樣本分佈的緊密程度。

mark
mark

一些定義的定義圖

mark

mark

DBSCAN算法流程

mark



層次聚類

mark
mark
mark



實際中的聚類要求

scikit-learn官方給出了一份各種聚類模型的參數調整和使用場景的建議表格。如下:

模型 關鍵參數 使用場景
K均值算法 簇的數量 通用的聚類方法,用於均勻的簇的大小,簇的數量不多的情況
GMM算法 簇數量等 用於平坦的集合結構,對密度估計很合適
DBSCAN算法 領域ϵ
MinPts
用於不均勻的簇大小,以及非平坦的集合結構
Agglomerative Clustering算法 簇的數量,鏈接類型 用於簇的數量較多,有連接約束的情況

上面介紹了多種聚類算法,不同的聚類算法有着不同的應用背景。聚類也許是機器學習算法中“新算法”出現最多、最快的領域。一個重要的原因是聚類不存在客觀的標準

在實際應用中,聚類簇的數量的選擇選取通過結合性能度量指標和具體問題分析。例如給出了ARI隨n_clusters曲線,通常選擇ARI最大值附近的一批n_clusters。

實際中可能潛在的簇數量數量較大,從0開始繪製ARI隨n_clusters曲線不太現實,則可以大概估計簇的數量範圍,通過降維技術觀測原始數據集經過降維後在平面或三維空間的分佈規律,從中大概估計出簇的量級。或者通過他人求解類似的聚類問題來獲取這一類問題的近似簇量級。

發佈了77 篇原創文章 · 獲贊 572 · 訪問量 67萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章