C均值聚類

1. 標準C-Means

1.1. 基本思路

通過迭代尋找c個聚類的一種劃分方案,使這c個聚類的代表點——各類樣本的均值所得到的總體誤差最小。
假設第ii類樣本集合τi\tau_i的數目爲NiN_i,則該類樣本均值向量爲mi\boldsymbol{m_i}的計算公式爲:
mi=1Niyτiy(1.1) \begin{aligned} \boldsymbol{m_i}=\frac{1}{N_i}\sum_{\boldsymbol{y} \in \tau_i}\boldsymbol{y} \end{aligned} \tag{1.1}
整個樣本空間上的誤差平方和爲
Je=i=1cyτiymi2(1.2) \begin{aligned} J_e=\sum_{i=1}^{c} \sum_{\boldsymbol{y} \in \tau_i} ||\boldsymbol{y}-\boldsymbol{m_i}||^2 \end{aligned} \tag{1.2}
JeJ_e越小,**說明聚類結果越優。**通常稱該類劃分結果爲:最小方差劃分。

1.2. 樣本在類間調整思路

假設已經有一個樣本劃分的方案,將樣本y\boldsymbol{y}τi\tau_i劃分到τj\tau_j中,則τi\tau_iτj\tau_j發生了變化而其他樣本類沒有發生變化,因此,這兩類的均值變化情況爲:
m~i=1Ni1y{τiy}ymi=1Niy{τi}y(2.1) \begin{aligned} \boldsymbol{\widetilde{m}_i}=\frac{1}{N_i-1}\sum_{\boldsymbol{y} \in \{\tau_i-y'\}}\boldsymbol{y}\\ \boldsymbol{m_i}=\frac{1}{N_i}\sum_{\boldsymbol{y} \in \{\tau_i\}}\boldsymbol{y}\\ \end{aligned} \tag{2.1}

  • 對於失去樣本的來來說:
    m~imi\boldsymbol{\widetilde{m}_i}-\boldsymbol{m_i}得到:
    m~i=mi+(1Ni1y{τiy}y1Ni1Ni1Niy{τi}y)=mi+1Ni1(y{τiy}yNi1Niy{τi}y)=mi+1Ni1(NiNiy{τi}(yy)Ni1Niy{τi}y)=mi+1Ni1[ymi](2.2) \begin{aligned} \boldsymbol{\widetilde{m}_i} =& \boldsymbol{m_i}+(\frac{1}{N_i-1}\sum_{\boldsymbol{y} \in \{\tau_i-y'\}}\boldsymbol{y}-\frac{1}{N_i-1} \frac{N_i-1}{N_i}\sum_{\boldsymbol{y} \in \{\tau_i\}}\boldsymbol{y})\\ =&\boldsymbol{m_i}+\frac{1}{N_i-1}(\sum_{\boldsymbol{y} \in \{\tau_i-y'\}}\boldsymbol{y}-\frac{N_i-1}{N_i}\sum_{\boldsymbol{y} \in \{\tau_i\}}\boldsymbol{y})\\ =&\boldsymbol{m_i}+\frac{1}{N_i-1}(\frac{N_i}{N_i}\sum_{\boldsymbol{y} \in \{\tau_i\}}(\boldsymbol{y}-y')-\frac{N_i-1}{N_i}\sum_{\boldsymbol{y} \in \{\tau_i\}}\boldsymbol{y})\\ =&\boldsymbol{m_i}+\frac{1}{N_i-1}[\boldsymbol{y}-\boldsymbol{m_i}] \end{aligned} \tag{2.2}
  • 對於得到樣本的來說:
    m~k=mk+1Nk+1[ymk](2.2) \begin{aligned} \boldsymbol{\widetilde{m}_k} =&\boldsymbol{m_k}+\frac{1}{N_k+1}[\boldsymbol{y}-\boldsymbol{m_k}] \end{aligned} \tag{2.2}
    對應的,誤差平方和也變爲:
    J~i=Ji+NiNi1ymi2J~k=Jk+NkNk+1ymk2(2.3) \begin{aligned} \widetilde{J}_i =&J_i+\frac{N_i}{N_i-1}||\boldsymbol{y}-\boldsymbol{m_i}||^2\\ \widetilde{J}_k =&J_k+\frac{N_k}{N_k+1}||\boldsymbol{y}-\boldsymbol{m_k}||^2 \end{aligned} \tag{2.3}

如果移出一個樣本會帶來某一類均方誤差的減少,移入這個樣本會帶來另一類均方誤差的增大,如果減少量大於增大量,那麼
NiNi1ymi2>NkNk+1ymk2(2.3) \begin{aligned} \frac{N_i}{N_i-1}||\boldsymbol{y}-\boldsymbol{m_i}||^2 > \frac{N_k}{N_k+1}||\boldsymbol{y}-\boldsymbol{m_k}||^2 \end{aligned} \tag{2.3}
則認爲該操作是合理的,否則不移動。

1.3. 具體步驟

  1. 初始劃分c個聚類,計算出這c類的均值和總的均方誤差和JeJ_e
  2. 任取一個樣本y\boldsymbol{y},設yτi\boldsymbol{y} \in \tau_i
  3. 計算公式(2.3),其中,kk是除了ii之外的所有類。
  4. 如果移出的損失大於所有移入的損失,則不移動,否則移入損失最小的類中。
  5. 重新計算這c類的均值和總的均方誤差和JeJ_e
  6. 若連續N次JeJ_e都不發生改變,則停止,否則轉(2).

1.4. 初始化類的方法

1.4.1 選擇代表點

  1. 經驗選擇
  2. 將全部數據隨機劃分成c類,計算每一類的重心,以重心爲代表點。
  3. 按照樣本天然的排列順序選擇c前c個點作爲代表

1.4.2 初始類劃分

  1. 根據其餘點與代表點的距離進行劃分
  2. 每個代表點自成一類,將樣本按順序歸入該類中,每次某一類的數量發生改變,則重新計算該類的重心。

2. IOSDATA

2.1 簡介

ISODATA全稱爲Iterative Self-Organizing Data Analysis Techniques:迭代自組織數據分析技術,可以看做是改進的C-means算法,與C-means的區別在於:

  1. C-Means在每次樣本所屬類別發生變化時,就計算一次均值;而ISODATA 則是在全部樣本調整完成之後才重新計算各類的均值。
  2. ISODATA算法在聚類的過程中引入了對類別的評判準則,根據這些準則可以將某些類別合併或者分裂,使得聚類結果更加合理。

2.2 算法流程

2.2.1 符號釋義

  • 樣本集{y1,y2,...,yN}\{\boldsymbol{y_1}, \boldsymbol{y_2}, ..., \boldsymbol{y_N}\},其中yi\boldsymbol{y_i}代表第ii個樣本,是一個1×d1 \times d維的向量。
  • KK:期望得到的聚類數
  • θN\theta_N:一個聚類中最少的樣本數目
  • θs\theta_s:標準偏差參數
  • θc\theta_c:合併參數
  • LL:每次迭代允許合併的最大聚類對數
  • II:允許迭代的次數

2.2.2 算法步驟

  1. 初始化聚類數目c(不一定要是K),初始化的方法與C均值差不多,選取代表點。
  2. 判斷其餘點與代表點的距離,按照距離對其餘點進行劃分。
  3. 若某個類τj\tau_j中樣本的數目過少(Nj<θNN_j<\theta_N),則去掉該類,將該類中的樣本分配到其他類中,聚類的數目c=c1c=c-1
  4. 重新計算每一類的均值。
    mj=1Njyτjy \boldsymbol{m_j}=\frac{1}{N_j}\sum_{\boldsymbol{y} \in \tau_j}\boldsymbol{y}
  5. 計算第jj類中,樣本與該類均值的平均距離:
    δjˉ=1Njyτjymj,j=1....c \bar{\delta_j} =\frac{1}{N_j}\sum_{\boldsymbol{y} \in \tau_j}||\boldsymbol{y}-\boldsymbol{m_j}||, j=1....c
    總平均距離:
    δˉ=1Ni=1cNiδiˉ \bar{\delta} =\frac{1}{N}\sum_{i=1}^{c}N_i \bar{\delta_i}
  6. 如果滿足迭代次數滿足要求,則結束;如果cK/2c \leqslant K/2,則執行分裂操作 ;如果c2Kc \geqslant 2K,則執行合併操作
  7. 如果是最後一次迭代,停止,否則轉向2。

2.2.3 分裂操作

  1. 對於每個類,求各維標準偏差σj=[σj1,σj2,...,σjd]T\boldsymbol{\sigma_j}=[\sigma_{j1}, \sigma_{j2},...,\sigma_{jd}]^T,(大白話就是對第jj類中的每一個特徵都計算其標準差),具體計算公式爲:
    σji=1Nykτj(ykimji) \sigma_{ji}=\sqrt{\frac{1}{N}\sum_{\boldsymbol{y}_k \in \tau_j}(y_{ki}-m_{ji})}
    在上式中,ykiy_{ki}爲第kk個樣本的第ii個特徵,mjim_{ji}代表第jj個聚類均值的第ii個分量;σji\sigma_{ji}是第jj個類的第ii個分量的標準偏差。

  2. 對每個類,求出標準偏差最大的分量σjmax,j=1,2,...,c\sigma_{j\max}, j=1,2,...,c。(其實就相當於落實到某一個類的某個特徵上)

  3. 對各類的σjmax\sigma_{j\max},如果滿足以下條件(注意,這裏僅僅是選出了兩個代表點而已):

    1. 存在某個類的σjmax>θs\sigma_{j\max}>\theta_sδjˉ>δˉ\bar{\delta_j}>\bar{\delta}Nj>2(θN+1)N_j>2(\theta_N+1)
    2. 存在某個類的σjmax>θs\sigma_{j\max}>\theta_sδjˉ>δˉ\bar{\delta_j}>\bar{\delta}cK/2c \leqslant K/2

    τj\tau_{j}分成2類,中心分別爲mj+\boldsymbol{m}_j^+mj\boldsymbol{m}_j^-,此時c=c+1c=c+1,其中,mj+\boldsymbol{m}_j^+mj\boldsymbol{m}_j^-的計算公式爲:
    mj+=mj+γjmj=mjγj \boldsymbol{m}_j^+=\boldsymbol{m}_j + \boldsymbol{\gamma}_j \\ \boldsymbol{m}_j^-=\boldsymbol{m}_j - \boldsymbol{\gamma}_j
    γj=kσj,k(0,1]\boldsymbol{\gamma}_j=k\boldsymbol{\sigma}_j, k \in (0,1 ]或者,γj=[0,...,0,σimax,0,...,0]T\boldsymbol{\gamma}_j=[0,...,0,\sigma_{i\max},0,...,0]^T

2.2.4 合併操作

  1. 計算各類中心兩兩之間的距離
    δij=mimj,i,j=1,2,...,c,ij \delta_{ij}=||\boldsymbol{m}_i-\boldsymbol{m}_j||, i, j = 1,2,...,c , i \neq j
  2. 比較δij\delta_{ij}θc\theta_c(合併參數),對**小於θc\theta_c**的距離排序:
    δi1,j1<δi2,j2,...,δil,jl \delta_{i_1,j_1}< \delta_{i_2,j_2},...,\delta_{i_l,j_l}
  3. 從最小的δi1,j1\delta_{i_1,j_1}開始把每個δil,jl\delta_{i_l,j_l}對應的mil,mjlm_{i_l},m_{j_l}合併,組成新類,新的中心爲:
    ml=1Nil+Njl[Nilmil+Njlmjl] m_l=\frac{1}{N_{i_l}+N_{j_l}}[N_{i_l}m_{i_l}+N_{j_l}m_{j_l}]

3. 基於樣本與核相似度的動態聚類算法

3.1 C-Means與IOSDATA面臨的問題

如果數據樣本的兩類分佈如下圖所示,這個時候兩類的均值不能很好的代表一類,雖然二者都服從正態分佈,但是方差比較大,那麼,在圖中A點明顯距離第二類比較近,這可能會導致分類錯誤。
在這裏插入圖片描述
所以,這個時候需要使用其他方法代表每個聚類
在C-Means中,準則函數爲:整個樣本空間上的誤差平方和爲
Je=i=1cyτiymi2(1.2) J_e=\sum_{i=1}^{c} \sum_{\boldsymbol{y} \in \tau_i} ||\boldsymbol{y}-\boldsymbol{m_i}||^2 \tag{1.2}
JeJ_e越小,**說明聚類結果越優。

針對目前這種分佈,我們選用的準則函數爲:
JK=i=1cyτjΔ(y,Kj)(1.2) J_K=\sum_{i=1}^{c} \sum_{\boldsymbol{y} \in \tau_j} \Delta (\boldsymbol{y},\boldsymbol{K_j}) \tag{1.2}
其中,Δ\Delta表示某種距離度量,JKJ_K越小,說明聚類結果越優。

3.2 具體步驟

  1. 選擇初始劃分,將樣本集劃分成cc類,確定每類的初始核Kj,j=1,2,...,cK_j, j=1,2,...,c
  2. 按照下列規則將每個樣本劃分到對應的類中。
    Δ(y,Kj)=minkΔ(y,Kk),k=1,2,...,c \Delta (\boldsymbol{y}, \boldsymbol{K_j})=\min_k \Delta (\boldsymbol{y}, \boldsymbol{K_k}), k=1,2,...,c
    yτj\boldsymbol{y} \in \tau_j
  3. 重新修正核Kj,j=1,2,...,cK_j, j=1,2,...,c,若kk不變,則算法終止,否則轉2.

相對的,在C-Means中,類均值對應樣本到均值的歐式距離相當於Δ(y,Kj)\Delta (\boldsymbol{y}, \boldsymbol{K_j})

3.3 常用的核函數

3.3.1 正態核函數

如果數據分佈類似於下圖:
在這裏插入圖片描述
則可選用正態核:
Kj(y,Vj)=1(2π)d/2Σj^1/2exp{12(ymj)TΣj^1(ymj)} \boldsymbol{K_j} (\boldsymbol{y}, \boldsymbol{V_j})=\frac{1}{(2\pi)^{d/2}|\hat{\Sigma_j}|^{1/2}}\exp\{-\frac{1}{2}(\boldsymbol{y}-\boldsymbol{m_j})^T\hat{\Sigma_j}^{-1}(\boldsymbol{y}-\boldsymbol{m_j})\}
其中,參數集Vj\boldsymbol{V_j}包括:mj,Σj^\boldsymbol{m_j}, \hat{\Sigma_j},分別代表第jj類的樣本均值和協方差矩陣。
樣本到核的相似性度量爲:
Δ(y,Kj)=12(ymj)TΣj^1(ymj)+12logΣj^ \Delta (\boldsymbol{y}, \boldsymbol{K_j})=\frac{1}{2}(\boldsymbol{y}-\boldsymbol{m_j})^T\hat{\Sigma_j}^{-1}(\boldsymbol{y}-\boldsymbol{m_j})+\frac{1}{2}\log|\hat{\Sigma_j}|

3.3.2 主軸核函數

在這裏插入圖片描述

4. 模糊C-Means方法(Fuzzy C-means, FCM)

4.1 模糊集的基本知識

4.1.1 什麼是模糊集

在傳統的集合中,一個元素要麼屬於一個集合,要麼不屬於一個集合。但是在模糊集中,一個元素可以是以一定程度屬於某個集合,也可以以不同程度的屬於多個集合。

4.1.2 隸屬度函數

隸屬度函數是一個對象xx隸屬於集合A的程度。記爲μA(x)\mu_A(x)。自變量是集合A中的所有對象,0μA(x)10 \leq \mu_A(x) \leq 1。當μA(x)=1\mu_A(x) = 1說明xx完全屬於A;μA(x)=0\mu_A(x) =0說明xx完全不屬於A。

模糊集合A:
對於有限個對象x1,x2,...,xnx_1, x_2, ..., x_n來說,若這nn個值都可能存在於集合A中,則模糊集合A可以表示爲:
A={(μA(xi),xi)}(4.1) A=\{(\mu_A(\boldsymbol{x_i}), \boldsymbol{x_i})\} \tag{4.1}
或者
A=iμi/xi(4.2) A=\bigcup _i\mu_i/ \boldsymbol{x_i} \tag{4.2}

支持集S(A)S(A)
空間X中A的隸屬度大於0的對象的集合。
S(A)={x,xX,μA(x)>0}(4.3) S(A)=\{\boldsymbol{x}, \boldsymbol{x} \in X, \mu_A(\boldsymbol{x})>0\} \tag{4.3}

4.3 算法思想

4.3.1 符號說明

  1. nn個樣本集合:{xi,i=1,2,...,3}\{\boldsymbol{x_i}, i=1,2,...,3\}
  2. 預定類別的數目: cc
  3. 每個聚類的中心:mi,i=1,2,...,c\boldsymbol{m_i}, i=1,2,...,c
  4. ii個樣本對於第jj類的隸屬度:μj(xi)\mu_j(\boldsymbol{x_i})

(因爲模糊集表示的是樣本屬於某個類的程度,所以要考慮所有的樣本
模糊C-means的聚類損失函數可以寫成:
Jf=j=1ci=1n[μj(xi)]bximj2(4.4) J_f=\sum_{j=1}^c \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 \tag{4.4}

C-means中的聚類損失函數爲:
Je=i=1cyτiymi2(1.2) J_e=\sum_{i=1}^{c} \sum_{\boldsymbol{y} \in \tau_i} ||\boldsymbol{y}-\boldsymbol{m_i}||^2 \tag{1.2}

在公式4.4中,bb代表控制聚類結果模糊程度的常數,通常爲2。

  • b=1b=1:等同於C-means的確定性聚類結果
  • b>1b>1:控制模糊程度的聚類結果
  • bb \rightarrow \infty:完全模糊的解,各類算法都收斂到訓練樣本的中心,所有樣本都以等同的概率歸屬各個類,所以沒有聚類的意義。

4.3.2 FCM的損失函數

要求一個樣本對於各個聚類的隸屬度之和爲1,用公式表示爲j=1cμj(xi)=1,i=1,2,...,n\sum_{j=1}^c\mu_j(\boldsymbol{x_i})=1, i=1,2,...,n,結合限制條件,可以求得:
minJf=j=1ci=1n[μj(xi)]bximj2s.t.j=1c[μj(xi)]=1,i=1,2,...,n(4.5) \min J_f=\sum_{j=1}^c \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 \\ s.t. \sum_{j=1}^c[\mu_j(\boldsymbol{x_i})]=1, i=1,2,...,n \tag{4.5}
引入n個拉格朗日因子:
minJf=j=1ci=1n[μj(xi)]bximj2i=1nλi(j=1c[μj(xi)]1)(4.6) \min J_f = \sum_{j=1}^c \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - \sum_{i=1}^n\lambda_i(\sum_{j=1}^c[\mu_j(\boldsymbol{x_i})]-1) \tag{4.6}
對均值mj\boldsymbol{m_j}求導有:
Jfmj=2i=1n[μj(xi)]bximj=2i=1n[μj(xi)]bxi+2i=1n[μj(xi)]bmjmj=[μj(xi)]bxi[μj(xi)]b(4.7) \begin{aligned} \frac{\partial J_f}{\partial \boldsymbol{m_j}} &= -2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}|| \\ &= -2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b \boldsymbol{x_i}+ 2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b \boldsymbol{m_j } \\ \boldsymbol{m_j} &= \frac { \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b\boldsymbol{x_i} } { \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b } \end{aligned} \tag{4.7}

對隸屬度μj(xj)\mu_j(\boldsymbol{x_j})求導,記μj(xj)\mu_j(\boldsymbol{x_j})μji\mu_{ji},後一半的求導結果爲:
Jfμji=μjii=1nλi(j=1c[μji]1)=μjii=1n(j=1cλi[μji]λi)=i=1nj=1cλi=i=1ncλi(4.8) \begin{aligned} \frac{\partial J_f}{\partial \mu_{ji}} &=-\frac{\partial }{\partial \mu_{ji}} \sum_{i=1}^n\lambda_i(\sum_{j=1}^c [\mu_{ji}]-1)\\ &=-\frac{\partial }{\partial \mu_{ji}} \sum_{i=1}^n(\sum_{j=1}^c \lambda_i[\mu_{ji}]-\lambda_i)\\ &=-\sum_{i=1}^n \sum_{j=1}^c \lambda_i\\ &=-\sum_{i=1}^n c \lambda_i \end{aligned} \tag{4.8}

前一半的求導結果爲:
Jfμji=i=1nj=1cbμjib1ximj2 \begin{aligned} \frac{\partial J_f}{\partial \mu_{ji}} &=\sum_{i=1}^n \sum_{j=1}^c b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 \end{aligned}

即令:
Jfμji=i=1nj=1cbμjib1ximj2i=1ncλi=0=i=1n(j=1cbμjib1ximj2cλi)=0(4.9) \begin{aligned} \frac{\partial J_f}{\partial \mu_{ji}} &=\sum_{i=1}^n \sum_{j=1}^c b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2-\sum_{i=1}^n c \lambda_i=0\\ &=\sum_{i=1}^n (\sum_{j=1}^c b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - c \lambda_i) = 0\\ \end{aligned} \tag{4.9}
即相當於:
j=1cbμjib1ximj2cλi=0j=1c(bμjib1ximj2λi)=0bμjib1ximj2λi=0μji=(λibximj2)1b1(4.10) \begin{aligned} \sum_{j=1}^c b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - c \lambda_i =& 0\\ \sum_{j=1}^c (b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - \lambda_i)=& 0 \\ \Rightarrow b \mu_{ji}^{b-1} ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - \lambda_i =& 0 \\ \Rightarrow \mu_{ji} =&( \frac{\lambda_i}{b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2})^{\frac{1}{b-1}} \end{aligned} \tag{4.10}
因爲:
j=1c[μji]=1 \sum_{j=1}^c[\mu_{ji}]=1
所以(等式4.11中,注意λi1b1\lambda_i^{\frac{1}{b-1}}實際上是在分母的位置)
j=1c(λibximj2)1b1=1(λibxim12)1b1+...+(λibximc2)1b1=1j=1c(bximj2)1b1(λi)1b1=1j=1c(bximj2)1b1=(λi)1b11j=1c(bximj2)1b1=(λi)1b11j=1c(1(bximj2))1b1=(λi)1b1(4.11) \begin{aligned} \sum_{j=1}^c( \frac{\lambda_i}{b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2})^{\frac{1}{b-1}}&=1 \\ ( \frac{\lambda_i}{b ||\boldsymbol{x_i}-\boldsymbol{m_1}||^2})^{\frac{1}{b-1}}+...+( \frac{\lambda_i}{b ||\boldsymbol{x_i}-\boldsymbol{m_c}||^2})^{\frac{1}{b-1}}&=1 \\ \frac{\sum_{j=1}^c (b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^{\frac{-1}{b-1}}}{(\lambda_i)^{\frac{-1}{b-1}}}&=1 \\ \sum_{j=1}^c (b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^{\frac{-1}{b-1}}&=(\lambda_i)^{\frac{-1}{b-1}}\\ \frac{1}{\sum_{j=1}^c (b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^{\frac{-1}{b-1}}}=&(\lambda_i)^{\frac{1}{b-1}}\\ \frac{1}{\sum_{j=1}^c (\frac{1}{(b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)})^{\frac{1}{b-1}}}=&(\lambda_i)^{\frac{1}{b-1}}\\ \end{aligned} \tag{4.11}
將4.11代入4.10
μji=(λibximj2)1b1=1j=1c(1(bximj2))1b1(bximj2)1b1=1(bximj2)1b1j=1c(1(bximj2))1b1=1(ximj2)1b1j=1c(1(ximj2))1b1(4.12) \begin{aligned} \Rightarrow \mu_{ji} =&( \frac{\lambda_i}{b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2})^{\frac{1}{b-1}} \\\\ =& \frac{ \frac{1}{\sum_{j=1}^c (\frac{1}{(b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)})^{\frac{1}{b-1}}} }{(b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^\frac{1}{b-1}}\\\\ =& \frac{ \frac{1}{(b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^\frac{1}{b-1}} }{ \sum_{j=1}^c (\frac{1}{(b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)})^{\frac{1}{b-1}} }\\\\ =& \frac{ \frac{1}{(||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^\frac{1}{b-1}} }{ \sum_{j=1}^c (\frac{1}{( ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)})^{\frac{1}{b-1}} } \end{aligned} \tag{4.12}

4.3.3 具體步驟

  1. 設定聚類數目c和參數b
  2. 初始化各個聚類的中心mi\boldsymbol{m_i}
  3. 重複下列運算,直到各個樣本的隸屬度穩定
    1. 根據聚類中心mj\boldsymbol{m_j}計算隸屬度函數μj(xi)\mu_j(\boldsymbol{x_i})
    2. 使用隸屬度函數μj(xi)\mu_j(\boldsymbol{x_i})更新隸屬度。

5. 改進後的模糊C-Means方法

5.1 算法思想

FZM算法從樣本的歸屬性方面進行了改進,但是針對野點的情況無法有效的解決。設想這樣一種情況,某個樣本遠離各類的聚類中心,而FCM中要求該樣本對於各類的隸屬度之和爲1,即j=1c[μj(xi)]=1,i=1,2,...,n\sum_{j=1}^c[\mu_j(\boldsymbol{x_i})]=1, i=1,2,...,n,這樣某個野點對最終的迭代效果具有很大的影響。

因此,爲了克服此類情況,人們對限制條件進行了修改:
j=1ci=1n[μj(xi)]=n,i=1,2,...,n(5.1) \sum_{j=1}^{c}\sum_{i=1}^{n}[\mu_j(\boldsymbol{x_i})]=n, i=1,2,...,n \tag{5.1}
在該條件下,拉格朗日函數爲:
minJf=j=1ci=1n[μj(xi)]bximj2i=1nλi(k=1nj=1c[μj(xi)]n)(5.2) \min J_f = \sum_{j=1}^c \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2 - \sum_{i=1}^n \lambda_i(\sum_{k=1}^n\sum_{j=1}^c[\mu_j(\boldsymbol{x_i})]-n) \tag{5.2}
對均值mj\boldsymbol{m_j}求導結果不變,仍然爲:
Jfmj=2i=1n[μj(xi)]bximj=2i=1n[μj(xi)]bxi+2i=1n[μj(xi)]bmjmj=[μj(xi)]bxi[μj(xi)]b(5.3) \begin{aligned} \frac{\partial J_f}{\partial \boldsymbol{m_j}} &= -2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b ||\boldsymbol{x_i}-\boldsymbol{m_j}|| \\ &= -2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b \boldsymbol{x_i}+ 2 \sum_{i=1}^n \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b \boldsymbol{m_j } \\ \boldsymbol{m_j} &= \frac { \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b\boldsymbol{x_i} } { \begin{bmatrix} \mu_j(\boldsymbol{x_i}) \end{bmatrix}^b } \end{aligned} \tag{5.3}

對隸屬度μj(xj)\mu_j(\boldsymbol{x_j})求導,記μj(xj)\mu_j(\boldsymbol{x_j})μji\mu_{ji},前一半的結果不變,後一半的求導結果爲:
Jfμji=μjii=1nλi(k=1nj=1c[μji]1)=μjii=1n(k=1nj=1cλi[μji]λi)=i=1nk=1nj=1cλi=i=1nk=1ncλi(5.4) \begin{aligned} \frac{\partial J_f}{\partial \mu_{ji}} &=-\frac{\partial }{\partial \mu_{ji}} \sum_{i=1}^n\lambda_i(\sum_{k=1}^n\sum_{j=1}^c [\mu_{ji}]-1)\\ &=-\frac{\partial }{\partial \mu_{ji}} \sum_{i=1}^n(\sum_{k=1}^n\sum_{j=1}^c \lambda_i[\mu_{ji}]-\lambda_i)\\ &=-\sum_{i=1}^n \sum_{k=1}^n \sum_{j=1}^c \lambda_i\\ &=-\sum_{i=1}^n \sum_{k=1}^n c \lambda_i \end{aligned} \tag{5.4}
後面的推導思想同(4.9)~(4.12),最後的結果爲:
μji=n(ximj2)1b1j=1ck=1n(1(ximj2))1b1(5.5) \begin{aligned} \Rightarrow \mu_{ji} =& \frac{ \frac{n}{(||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)^\frac{1}{b-1}} }{ \sum_{j=1}^c\sum_{k=1}^n (\frac{1}{( ||\boldsymbol{x_i}-\boldsymbol{m_j}||^2)})^{\frac{1}{b-1}} } \end{aligned} \tag{5.5}

5.2 改進FCM的缺點

  1. 與C-means一樣,仍然對聚類的初始值十分敏感,通常將使用C-means或者FCM處理樣本後得到的結果作爲初始值。
  2. 如果在迭代過程中出現某個聚類中心距離某個樣本非常近,則最後可能得到只包含這一個樣本的聚類

6. 參考文獻

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章