FCM算法是一種基於划分的聚類算法,它的思想就是使得被划分到同一簇的對象之間相似度最大,而不同簇之間的相似度最小。模糊C均值算法是普通C均值算法的改進,普通C均值算法對於數據的划分是硬性的,而FCM則是一種柔性的模糊划分。在介紹FCM具體算法之前我們先介紹一些模糊集合的基本知識。
6.1.1 模糊集基本知識[21]
首先說明隸屬度函數的概念。隸屬度函數是表示一個對象x隸屬於集合A的程度的函數,通常記做μA(x),其自變量范圍是所有可能屬於集合A的對象(即集合A所在空間中的所有點),取值范圍是[0,1],即0<=
μA(x)<=1。μA(x)=1表示x完全隸屬於集合A,相當於傳統集合概念上的x∈A。一個定義在空間X={x}上的隸屬度函數就定義了一個模糊集合A,或者叫定義在論域X={x}上的模糊子集。對於有限個對象x1,x2,……,xn模糊集合可以表示為:
(6.1)
有了模糊集合的概念,一個元素隸屬於模糊集合就不是硬性的了,在聚類的問題中,可以把聚類生成的簇看成模糊集合,因此,每個樣本點隸屬於簇的隸屬度就是[0,1]區間里面的值。
6.1.2 K均值聚類算法(HCM)介紹
K均值聚類,即眾所周知的C均值聚類,已經應用到各種領域。它的核心思想如下:算法把n個向量xj(1,2…,n)分為c個組Gi(i=1,2,…,c),並求每組的聚類中心,使得非相似性(或距離)指標的價值函數(或目標函數)達到最小。當選擇歐幾里德距離為組j中向量xk與相應聚類中心ci間的非相似性指標時,價值函數可定義為:
(6.2)
這里是組i內的價值函數。這樣Ji的值依賴於Gi的幾何特性和ci的位置。
一般來說,可用一個通用距離函數d(xk,ci)代替組I中的向量xk,則相應的總價值函數可表示為:
(6.3)
為簡單起見,這里用歐幾里德距離作為向量的非相似性指標,且總的價值函數表示為(6.2)式。
划分過的組一般用一個c×n的二維隸屬矩陣U來定義。如果第j個數據點xj屬於組i,則U中的元素uij為1;否則,該元素取0。一旦確定聚類中心ci,可導出如下使式(6.2)最小uij:
(6.4)
重申一點,如果ci是xj的最近的聚類中心,那么xj屬於組i。由於一個給定數據只能屬於一個組,所以隸屬矩陣U具有如下性質:
(6.5)
且
(6.6)
另一方面,如果固定uij則使(6.2)式最小的最佳聚類中心就是組I中所有向量的均值:
, (6.7)
這里|Gi|是Gi的規模或。
為便於批模式運行,這里給出數據集xi(1,2…,n)的K均值算法;該算法重復使用下列步驟,確定聚類中心ci和隸屬矩陣U:
步驟1:初始化聚類中心ci,i=1,…,c。典型的做法是從所有數據點中任取c個點。
步驟2:用式(6.4)確定隸屬矩陣U。
步驟3:根據式(6.2)計算價值函數。如果它小於某個確定的閥值,或它相對上次價值函數質的改變量小於某個閥值,則算法停止。
步驟4:根據式(6.5)修正聚類中心。返回步驟2。
該算法本身是迭代的,且不能確保它收斂於最優解。K均值算法的性能依賴於聚類中心的初始位置。所以,為了使它可取,要么用一些前端方法求好的初始聚類中心;要么每次用不同的初始聚類中心,將該算法運行多次。此外,上述算法僅僅是一種具有代表性的方法;我們還可以先初始化一個任意的隸屬矩陣,然后再執行迭代過程。
K均值算法也可以在線方式運行。這時,通過時間平均,導出相應的聚類中心和相應的組。即對於給定的數據點x,該算法求最近的聚類中心ci,並用下面公式進行修正:
(6.8)
這種在線公式本質上嵌入了許多非監督學習神經元網絡的學習法則。
6.2.3 模糊C均值聚類
模糊C均值聚類(FCM),即眾所周知的模糊ISODATA,是用隸屬度確定每個數據點屬於某個聚類的程度的一種聚類算法。1973年,Bezdek提出了該算法,作為早期硬C均值聚類(HCM)方法的一種改進。
FCM把n個向量xi(i=1,2,…,n)分為c個模糊組,並求每組的聚類中心,使得非相似性指標的價值函數達到最小。FCM與HCM的主要區別在於FCM用模糊划分,使得每個給定數據點用值在0,1間的隸屬度來確定其屬於各個組的程度。與引入模糊划分相適應,隸屬矩陣U允許有取值在0,1間的元素。不過,加上歸一化規定,一個數據集的隸屬度的和總等於1:
(6.9)
那么,FCM的價值函數(或目標函數)就是式(6.2)的一般化形式:
, (6.10)
這里uij介於0,1間;ci為模糊組I的聚類中心,dij=||ci-xj||為第I個聚類中心與第j個數據點間的歐幾里德距離;且是一個加權指數。
構造如下新的目標函數,可求得使(6.10)式達到最小值的必要條件:
(6.11)
這里lj,j=1到n,是(6.9)式的n個約束式的拉格朗日乘子。對所有輸入參量求導,使式(6.10)達到最小的必要條件為:
(6.12)
和
(6.13)
由上述兩個必要條件,模糊C均值聚類算法是一個簡單的迭代過程。在批處理方式運行時,FCM用下列步驟確定聚類中心ci和隸屬矩陣U[1]:
步驟1:用值在0,1間的隨機數初始化隸屬矩陣U,使其滿足式(6.9)中的約束條件
步驟2:用式(6.12)計算c個聚類中心ci,i=1,…,c。
步驟3:根據式(6.10)計算價值函數。如果它小於某個確定的閥值,或它相對上次價值函數值的改變量小於某個閥值,則算法停止。
步驟4:用(6.13)計算新的U矩陣。返回步驟2。
上述算法也可以先初始化聚類中心,然后再執行迭代過程。由於不能確保FCM收斂於一個最優解。算法的性能依賴於初始聚類中心。因此,我們要么用另外的快速算法確定初始聚類中心,要么每次用不同的初始聚類中心啟動該算法,多次運行FCM。
6.2.4 FCM算法的應用
通過上面的討論,我們不難看出FCM算法需要兩個參數一個是聚類數目C,另一個是參數m。一般來講C要遠遠小於聚類樣本的總個數,同時要保證C>1。對於m,它是一個控制算法的柔性的參數,如果m過大,則聚類效果會很次,而如果m過小則算法會接近HCM聚類算法。
算法的輸出是C個聚類中心點向量和C*N的一個模糊划分矩陣,這個矩陣表示的是每個樣本點屬於每個類的隸屬度。根據這個划分矩陣按照模糊集合中的最大隸屬原則就能夠確定每個樣本點歸為哪個類。聚類中心表示的是每個類的平均特征,可以認為是這個類的代表點。
從算法的推導過程中我們不難看出,算法對於滿足正態分布的數據聚類效果會很好,另外,算法對孤立點是敏感的。
