1. 程式人生 > >聚類之詳解FCM演算法原理及應用

聚類之詳解FCM演算法原理及應用

【之前】 該文的pdf清晰版已被整理上傳,方便儲存學習,下載地址:

(一)原理部分

模糊C均值(Fuzzy C-means)演算法簡稱FCM演算法,是一種基於目標函式的模糊聚類演算法,主要用於資料的聚類分析。理論成熟,應用廣泛,是一種優秀的聚類演算法。本文關於FCM演算法的一些原理推導部分介紹等參考下面視訊,加上自己的理解以文字的形式呈現出來,視訊參考如下,比較長,看不懂的可以再去看看:

首先介紹一下模糊這個概念,所謂模糊就是不確定,確定性的東西是什麼那就是什麼,而不確定性的東西就說很像什麼。比如說把20歲作為年輕不年輕的標準,那麼一個人21歲按照確定性的劃分就屬於不年輕,而我們印象中的觀念是21歲也很年輕,這個時候可以模糊一下,認為21歲有0.9分像年輕,有0.1分像不年輕,這裡0.9與0.1不是概率,而是一種相似的程度,把這種一個樣本屬於結果的這種相似的程度稱為樣本的隸屬度,一般用u表示,表示一個樣本相似於不同結果的一個程度指標。

基於此,假定資料集為X,如果把這些資料劃分成c類的話,那麼對應的就有c個類中心為C,每個樣本j屬於某一類i的隸屬度為uij,那麼定義一個FCM目標函式(1)及其約束條件(2)如下所示:

(1)J=i=1cj=1nuijm||xjci||2 (2)i=1cuij=1,j=1,2...,n
看一下目標函式(式1)而知,由相應樣本的隸屬度與該樣本到各個類中心的距離相乘組成的,m是一個隸屬度的因子,個人理解為屬於樣本的輕緩程度,就像x2x3這種一樣。式(2)為約束條件,也就是一個樣本屬於所有類的隸屬度之和要為1。觀察式(1)可以發現,其中的變數有
uijci
,並且還有約束條件,那麼如何求這個目標函式的極值呢?

這裡首先採用拉格朗日乘數法將約束條件拿到目標函式中去,前面加上係數,並把式(2)的所有j展開,那麼式(1)變成下列所示:

(3)J=i=1cj=1nuijm||xjci||2+λ1(i=1cui11)+...+λj(i=1cuij1)+...+λn(i=ncuin1))
現在要求該式的目標函式極值,那麼分別對其中的變數uijci求導數,首先對uij求導。

分析式(3),先對第一部分的兩級求和的uij求導,對求和形式下如果直接求導不熟悉,可以把求和展開如下: