1. 程式人生 > >FCM(Fuzzy C-Means)模糊C聚類

FCM(Fuzzy C-Means)模糊C聚類

1. FCM初識

FCM的C跟K-Means的K是一樣的,指的是聚類的數目。F—Fuzzy是模糊的意思,指的是”一個事件發生的程度“。用在我們的聚類上面,第一條記錄以怎樣的概率或者說程度屬於第一類,又以怎樣的程度屬於第二類等等。跟傳統的聚類有所區別的地方就是,他改變了傳統分類的時候非此即彼的一個現象,一個物件可以以不同的程度同時屬於多個類。這個其實是跟我們的現實世界是更契合的。比如說,“禿與不禿”,一個人有多少髮量就說他是禿的,下面這幾張圖:

                                            

究竟那幾個可以分成:禿“,這個就具有一定的模糊性。

所以說,”模糊“概念的提出,更能描述現實。

模糊的程度我們用模糊函式來衡量他表示的是集合X中的元素x對集合A的隸屬程度。

2.FCM演算法

作為一個演算法,FCM的輸入就是一個待聚類的資料集,每一個數據都有p個特徵。它的輸出是一個cn列的矩陣Uc剛才提到是聚類數目,n是資料集中元素的個數,用這個矩陣就可以表示分類的結果,因為你看某一列,表示的就是這個元素對各個類的隸屬程度,哪一個值最大,就說這個元素屬於哪一類。

還有一個輸出是各個類的聚類中心向量集合V,一共有c個元素。每個元素也是有p維的。




舉個例子,直觀感受一下,比如現在待分類的資料集有188個點,每個點是二維的,我們要把他分成4類,通過FCM演算法得到的輸出V就是下面第一張圖表示這

4箇中心向量,下面這第二張圖表示的就是矩陣U,橫座標是188個元素,縱座標是隸屬度值,可以看到,可以根據這個值把大家區分開。

                

那我們怎麼實現這樣的結果呢?FCM有他自己的目標函式[1],

μij指的就是隸屬度值,元素j對類別i的隸屬程度,dij平方指的就是歐氏距離下元素j跟中心點i之間的距離,整個表示的就是各個點到各個類的加權距離的和。

m是一個模糊化程度的引數,待會我們會提到它對演算法效能的影響。這個演算法有一個約束條件,就是某一個元素對所有類別的隸屬程度的值加起來要等於1.

聚類要達到的最終效果就是類內相似度最小,類間相似度最大,這個時候點和中心的加權距離之和就是最小的。所以我們我們只要使得目標函式取得最小值就可以了。所以最優解的的表示式就是:



對於有約束條件的求極值問題,一般使用拉格朗日乘子法解決。先構造拉格朗日函式:


函式中共有三個變數,μij, vi, 和(lambda)j,分別求偏導


得到U和V的最優解


演算法的步驟

  • 初始化

             設定聚類個數c (1<c<n), 模糊指數m(m>1),最大迭代數T,收斂的精度ε,用隨機數初始化隸屬度矩陣U(0)

     

  • 優化過程         

             計算類中心

             更新隸屬度矩陣
  • 重複優化過程,直到滿足如下的終止條件      

3. 引數的選擇

前面提到,在應用FCM對給定資料集進行聚類分析時,需要涉及兩個引數的選取問題:cm。只有選取正確了才能得到好的聚類效果。所以說怎樣選取好的引數是關鍵所在。

3.1   聚類數目c的選擇

c的選取我們有一個評價指標,就是L(c)這個函式,分子表示的是類間距離之和,分母表示的是類內間距之和,因此整個L的值就越大越好。


下面四個圖是論文[2]裡面對不同的c做的一個實驗,表格第一行指的是最佳的分類數目,第二行是L函式對不同分類數目的值,可以看到用L函式就可以選擇出最佳的c


3.2   模糊係數m的選擇

另外,目標函式裡面的m值也是需要我們確定好的。那這個m值我們怎樣選擇呢,首先m代表的是模糊C平均演算法的模糊係數,它可以影響分類的準確程度。

我們看下面四張圖,第一個圖是原始的資料集,我們給定c等於9,23,4這三個圖裡我們只給出中心向量,當m=1.2的時候,這9個點比較分散,這樣就會受噪聲點的影響比較大,遠離了我們的主流,而當m=3.5的時候這些點又比較集中,對偏離主流的點的控制力又比較弱。

通常來說,m選取2.0是比較合理的。


References

[1] J.Bezdek,“Cluster validity with fuzzy sets”, Cybernetics and Systems, 1973

[2] “FCM演算法中引數優選方法及應用例項


相關推薦

FCM(Fuzzy C-Means)模糊C

1. FCM初識 FCM的C跟K-Means的K是一樣的,指的是聚類的數目。F—Fuzzy是模糊的意思,指的是”一個事件發生的程度“。用在我們的聚類上面,第一條記錄以怎樣的概率或者說程度屬於第一類,又以怎樣的程度屬於第二類等等。跟傳統的聚類有所區別的地方就是,他改變了傳統分

k-means(k均值)演算法介紹及實現(c++)

基本介紹: k-means 演算法接受輸入量 k ;然後將n個數據物件劃分為 k個聚類以便使得所獲得的聚類滿足:同一聚類中的物件相似度較高;而不同聚類中的物件相似度較小。聚類相似度是利用各聚類中物件的均值所獲得一個“中心物件”(引力中心)來進行計算的。 工作過程:   k

機器學習——K-means演算法(演算法)

聚類 在說K-means聚類演算法之前必須要先理解聚類和分類的區別。 分類其實是從特定的資料中挖掘模式,作出判斷的過程。比如Gmail郵箱裡有垃圾郵件分類器,一開始的時候可能什麼都不過濾,在日常使用過程中,我人工對於每一封郵件點選“垃圾”或“不是垃圾”,過一段時間,Gmail就體現出

程式(彙總)k-means、層次、神經網路、高斯混合

利用不同方法對資料進行聚類,參考至:周志華 機器學習 %% 利用不同方法對債券樣本進行聚類 %說明 %分別採用不同的方法,對資料進行聚類 %kmens可以選擇的pdist/clustering距離 % 'sqeuclidean' 'cityblock

K-means-:在時發現異常

11月4日和5日,BigML加入哈馬德濱哈利法大學的卡達計算研究所(QCRI),將機器學習學校帶到卡達的多哈!我們很高興有機會與QCRI合作。 在會議期間,Sanjay Chawla博士討論了他的異常聚類演算法,k-means-。我們認為使用我們的特定領域語言實現機器學習工作流程WhizzML的變體來實

機器學習 (Clustering)____K-均值演算法(K-means Clustering) 層次(Hierarchical Clustering)

____tz_zs學習筆記聚類(Clustering) 顧名思義,就是將相似樣本聚合在一起,屬於機器學習中的非監督學習 (unsupervised learning) 問題。聚類的目標是找到相近的資料點,並將相近的資料點聚合在一起。實現聚類的演算法主要有:1.K-均值聚類演算

K-means和PAM演算法Python實現及對比

K-means(K均值劃分)聚類:簡單的說,一般流程如下:先隨機選取k個點,將每個點分配給它們,得到最初的k個分類;在每個分類中計算均值,將點重新分配,劃歸到最近的中心點;重複上述步驟直到點的劃歸不再改變。下圖是K-means方法的示意。 PAM

K-means(K-均值)演算法

劃分方法 聚類分析最簡單、最基本的版本是劃分,它把物件組織成多個互斥的簇。這一方法,要求每個物件必須/恰好屬於每一個簇。(事實上,我們應該知道,這個要求是很不合理的,因為它忽略了離群點,假若把噪聲資料強行劃分在簇裡,那勢必會降低聚類的準確率,所以為了改進這一點

模糊kmeans

首先介紹一個,FuzzyKMeans演算法的主要思想: 模糊均值聚類(FCM),即眾所周知的模糊ISODATA,是用隸屬度確定每個資料點屬於某個聚類的程度的一種聚類演算法。1973年,Bezdek提出了該演算法,作為早期硬均值聚類(HCM)方法的一種改進。FC

機器學習--K-means演算法(,無監督學習)

一、基本思想   聚類屬於無監督學習,以往的迴歸、樸素貝葉斯、SVM等都是有類別標籤y的,也就是說樣例中已經給出了樣例的分類。而聚類的樣本中卻沒有給定y,只有特徵x,比如假設宇宙中的星星可以表示成三維空間中的點集。聚類的目的是找到每個樣本x潛在的類別y,並將同類別y的樣本x

演算法之K-means演算法與演算法衡量指標

聚類就是按照某個特定標準(如距離準則)把一個數據集分割成不同的類或簇,使得同一個簇內的資料物件的相似性儘可能大,同時不在同一個簇中的資料物件的差異性也儘可能地大。即聚類後同一類的資料儘可能聚集到一起

k-means k均值 及二分k均值

from numpy import * def load_data(file_name): data=[] fr=open(file_name) for line in fr.readlines(): cur_line=line.st

k-means、GMM、KNN原理概述

由於工作需要,最近開始弄k-means、KNN、GMM聚類。總結一下這兩種聚類方法吧。 1. K-means 原理:這基本上是最簡單也最經典的聚類方法。K是指所要聚的cluster的數量,means是指每一個cluster都有一箇中心點(質心),這個質心

四種方法及程式碼實現。K-means 高斯 密度 均值漂移

四種方法的matlab程式碼實現:連結: https://pan.baidu.com/s/1b6pKH65rYrRcBLnczz-EnA 密碼: 4iag1.K-means聚類:演算法步驟: (1) 首先我們選擇一些類/組,並隨機初始化它們各自的中心點。中心點是與每個資料點向

機器學習筆記----Fuzzy c-means(FCM)模糊詳解及matlab實現

前言:這幾天一直都在研究模糊聚類。感覺網上的文件都沒有一個詳細而具體的講解,正好今天有時間,就來聊一聊模糊聚類。 一:模糊數學 我們大家都知道計算機其實只認識兩個數字0,1。我們平時寫程式其實也是這樣if 1 then do.永遠這種模式,在這種模式中,一個元素要麼屬

機器學習演算法原理總結系列---演算法基礎之(13)模糊C均值Fuzzy C-means Clustering)

筆者在韓國Chonnam National University攻讀碩士學位,FCM演算法是professer Lim在這學期主要授課的內容,他說他剛發一篇FCM結合遺傳演算法還有各種腦電訊號處理,搭建分析AD病人的EEG訊號的計算智慧模型。反正就是各種難

FCM 模糊C均值演算法

首先FCM在影象分割領域有很多應用,FCM演算法我覺得主要是兩個部分,一個是模糊理論,一個是C/Kmean演算法,這兩者在數學家手中完美的結合。 下面切入整體,我也是為了溫故才寫的這篇部落格,如有錯誤或者瑕疵的地方歡迎指出。話說有一個集合,甭管是啥,但是如果你是影象分割的話

演算法(K-means + Fuzzy C-means + Hierarchical + Mixture of Gaussians)---第一部分:簡介

前言 什麼是聚類? 聚類可以被認為是最重要的無監督學習問題; 所以,像這樣的其他問題一樣,它涉及在未標記資料的集合中找到一個結構。聚類的簡單定義可能是“將物件組織成某些成員相似的組的過程”。因此,"cluster"是它們之間“相似”的物件的集合,並且與屬於其他"cluste

模糊C均值(FCM)演算法

本程式碼演算法用例為鳶尾花資料集合;IOSDATA演算法實現步驟,在很多資料和論壇中都有詳細的介紹,這裡就不對演算法步驟進行陳述了。就我程式碼中,我對下面幾個控制引數的理解:初始聚類數:初始類聚中心,跟聚類聚中心劃分簇。期望得到的聚類數:這個數並不是最終得到的類聚數目,可以理

模糊C均值演算法及實現

模糊C均值聚類演算法的實現 研究背景 https://blog.csdn.net/liu_xiao_cheng/article/details/50471981    聚類分析是多元統計分析的一種,也是無監督模式識別的一個重要分支,在模式分類 影象處理和模糊