1. 程式人生 > >常見的5中聚類算法

常見的5中聚類算法

然而 集合 com 保留 都是 缺點 sca 聚類算法 包含

聚類是機器學習中一種方法,常用用於處理數據分組的問題。給定一組數據,利用聚類算法將每一個數據點分批到一個特定的組。這就要求對於同一組的數據點,應該具有相同的性質(特征);對於不同組的數據點,在性質(特征)上應該有顯著的區別。聚類算法數據無監督學習(unsupervised learning),常用於處理靜態數據的分類問題。

K-Means

K-Means算法是一種簡單的叠代性聚類算法,采用距離作為相似性度量指標。從而將給定的數據集分為K個類,每個類的中心是由該類中所有點的均值得到,每個類均由聚類中心進行表示。

對給定的一個包含n個點的d維數據集X以及分類的個數K,選取歐式距離作為相似度指標。距離的目標是使各類的聚類平方和最小,即最小化度量函數即損失函數為:
\[J=\sum_{k=1}^{K}{\sum_{j=1}^{n}{(||x_i-u_k||^2)}}\]

分類過程

  1. 確定聚類個數,即設定K值;
  2. 從數據集中隨機選擇K個點作為初始類中心 ;
  3. 對於數據集中的每一個樣本點,分別計算其到各個類中心的距離,並選擇距離最近的類中心作為該樣本點的分組 ;
  4. 執行完上一步驟後。對於每一個類,分別重新聚類中心,不斷叠代,知道聚類中心收斂(不再移動)。聚類中心重新計算的方法是,計算該類的中點(幾何重心、均值)。

    技術分享圖片

    K-Means算法具有較高的聚類速度,其復雜度是\(O(n)\)。但是該方法也具有明顯的缺點:1、需要制定K值;2、其隨機選擇初始類重心,因此對於同一組數據可能會得到不同的分類模型。

K-Medians是一種和K-Means相似的叠代性聚類算法,只不過其在重新計算聚類中心時進行了改變,將均值計算改為中值計算。因此該方法相對於K-Means對異常值更魯棒,但是其代價卻是計算復雜度的增加,因為每個叠代過程中都需要對每類中的數據點進行排隊找中值。

MeanShift

MeanShift是一個基於滑動窗口和質心的聚類算法,其目的是找出數據集中密度最大的區域。基於質心的意思是定位每一個組/類的質心,通過滑動窗口的方式不斷更新質心的候選點。

對給定的d維空間\(R^d\)上的n個樣本點,在空間中任選一點x,則MeanShift向量的表達形式為:\[M_h=\frac{1}{K}\sum_{{x_i}\in{S_h}}{(x_i-x)}\] \(S_k\)是滿足以h為半徑的高維球區域,滿足一下關系的y的集合:\[S_k(x)=\{y:(y-x_i)^T(y-x_i)<h^2\}\]k表示在n\(x_i\)點中,落在高維球區域\(S_k\)

的內的點的個數。

直白來說,是以x為中心,畫一個半徑為h的高維球(當是二維空間時就是圓,當時三維空間時就是球,當是多維空間時就是多維球),假設落在高維球內的點有k個,則分別將圓心(x)和其他點進行連接,構成k個向量,然後再將k個向量進行相加,最後得到的向量和就是MeanShift。

分類過程

  1. 對於數據集,首先指定半徑h並隨機初始化一個中心點x,即得到第一個高維球區域。MeanShift是一種爬山算法,它在每次叠代中都將核移動至具有較高密度的區域,直至收斂。
  2. 對上述高維球區域,計算MeanShift,然後移動中心點,得到一個新的高維球區域。
  3. 不斷地移動中心點,可以使高維球區域一直向具有更高密度區域的方向進行移動,直至沒有移動方向(即)。
  4. 通過設置多個高維球區域,不斷地執行1-3的步驟,直至所有的高維球都收斂。當多個高維球發生重疊時,包含最多點的高維球區域被保留。最後數據集則根據高維球區域分類完畢。

    技術分享圖片
    單個高維球區域
    技術分享圖片
    多個高維球區域

Density-Based Spatial Clustering of Applications with Noise(DBSCAN)

DBSCAN(具有噪聲的密度聚類算法)是一種特別的聚類算法,相比於只用於凸優化樣本集中的K-Means算法,DBSCAN既可以用於凸優化樣本集也可以用於非凸優化樣本集。DBCAN是一種基於密度的聚類算法,該算法假設樣本的類別可以通過樣本分布的緊密程度進行區分。同一類別的樣本,他們之間是緊密相連的;不同類別的樣本則分布的相對較遠。通過將緊密相連的樣本劃為一類,這樣就得到了一個聚類類別。通過將所有各組緊密相連的樣本劃為各個不同的類別,則我們就得到了最終的所有聚類類別結果。

DBSCAN是基於一組鄰域來描述樣本集的緊密程度,參數\((\varepsilon, minPts)\)來描述鄰域的樣本分布密度,其中\(\varepsilon\)表示某一樣本的鄰域距離的閾值,minPts表示某一樣本的距離為\(\varepsilon\)的鄰域中樣本個數的閾值。

假設樣本集是\(D=(x_1,x_2,,,x_m)\),則DBSCAN具體的密度描述定義如下:

  • \(\varepsilon\)-鄰域:對於\(x_j\epsilon{D}\),其\(\varepsilon\)鄰域是指,樣本集D內所有與\(x_j\)的距離不大於\(\varepsilon\)的子樣本集,即\[N_\varepsilon{(x_i)}={\{x_i\epsilon{D}|distance(x_i,x_j)< \varepsilon \}}\]這個子樣本集的個數是\(|N_\varepsilon{(x_i)}|\)
  • 核心對象:對任意一個樣本\(x_j\),如果其\(\varepsilon\)-鄰域包含的樣本個數\(|N_\varepsilon{(x_i)}|\)大於minPts,則稱該樣本點\(x_j\)是核心對象;
  • 密度直達:如果\(x_i\)位於\(x_j\)\(\varepsilon\)鄰域內,且\(x_j\)是核心對象,則稱\(x_i\)\(x_j\)密度直達。註意,反之不成立,不能說是\(x_j\)\(x_i\)密度直達,除非\(x_i\)也是核心對象;
  • 密度可達:對於\(x_i\)\(x_j\),存在核心對象序列\(P=\{p_1,p_2,,,p_T\}\),滿足\(p_{t+1}\)\(p_t\)可達,如果\(x_i=p_1,x_j=p_T\),則稱\(x_j\)\(x_i\)密度可達,即說明密度直達具有傳遞性;
  • 密度相連:對於\(x_i\)\(x_j\),存在一個核心對象\(x_k\),如果\(x_i\)\(x_k\)密度可達且\(x_j\)\(x_k\)密度可達,則稱\(x_i\)\(x_j\)密度相連;

    Exception-Maximization(EM) Clustering using Gaussian Mixture Models(GMM)

    K-Means主要的缺點是其使用均值作為聚類中心,在某些聚類情況下無法有效區分聚類中心。例如下圖的左側圖像,我們肉眼可以很容易的看出整個圖像分為兩類:左側綠色點,右側藍色點。然而在使用K-Means算法時,卻無法有效區分分聚類中心,因為采用均值計算聚類中心,則聚類中心大約都處在圓心部位。


    技術分享圖片

Gaussian Mixture Models(GMMs)相比於K-Means具有更高的靈活性,使用GMMS的前提是假設數據點是服從高斯分布的。因此我們使用兩個參數來對聚類進行描述:均值和標準偏差。例如在二位空間中我們可以表示任何形式的橢圓,因為我們具有中心點和x,y軸的標準差。

為找到每個類的高斯參數,我們采用期望最大策略(Expectation-Maximization,EM)。GMMs聚類的步驟如下:


技術分享圖片

  1. 像K-Means一樣,首先需要制定聚類的個數,然後再為每個類隨機生成高斯分布參數;
  2. 給定每個集群的高斯分布參數,然後計算每個點屬於特定集群的概率。離高斯中心最近點越有可能屬於該集群。因為在高斯分布中,我們假設大多數數據點靠近集群中心。
  3. 基於上面的概率,重新計算高斯分布參數,以便使集群內所有點的概率和最大。在計算高斯分布參數時,采用數據點位置的加權方式計算參數,權重就是數據點屬於特定集合的概率。
  4. 重復進行上述第2、3步,直至收斂,既在每次叠代中參數個改變小於某個閾值。

GMMs具有兩個關鍵的優勢:1、對於cluster covariance(聚類協方差)情況下,相比於K-Means更為靈活。因為通過使用標準偏差參數可以表示任何形式的橢圓,而K-Means只能表示圓,當然K-Means可以看做是GMMs的一種特例,每個群在各個維度上的協方差均為0。2、因為GMMs采用概率的方式,因此可解決一個點屬於多簇的情況。例如一個點在兩個簇的交叉點上,可以描述為屬於簇1的概率是X,屬於簇2的概率是Y。

Agglomerative Hierarchy Clustering(AHC)

層次聚類根據聚類的方式分為兩類:自上而下和自下而上。自下而上的聚類算法,起初假設每個樣本都是一個單獨的類別,然後相繼的合並類別,直到最後只有一個類別。最終將得到一個類似於樹的結構,樹的根是一個類別,其包含所有的樣本點,而葉子則是只有一個樣本的集群。

聚類過程如下:


技術分享圖片

  1. 首先假設集群內的每個樣本都是一個單獨的類,然後再選擇一個距離度量方式,計算任何兩類之間的距離。比如使用平均距離法計算兩個類之間的距離,取第一個簇內樣本點和第二個簇內樣本點之間的平均距離。
  2. 在每一次叠代過程中都會將兩個簇合並為一個簇
  3. 重復執行第二步驟,直至所所有樣本點被合並到一個簇內,即只有一個頂點。

常見的5中聚類算法