1. 程式人生 > >機器學習筆記----Fuzzy c-means(FCM)模糊聚類詳解及matlab實現

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

前言:這幾天一直都在研究模糊聚類。感覺網上的文件都沒有一個詳細而具體的講解,正好今天有時間,就來聊一聊模糊聚類。

一:模糊數學

我們大家都知道計算機其實只認識兩個數字0,1。我們平時寫程式其實也是這樣if 1 then do.永遠這種模式,在這種模式中,一個元素要麼屬於這個集合,要麼不屬於這個集合,但是對我們現在介紹的模糊集來說,某個元素可能部分屬於這個集合,又可能部分屬於另外的集合,顯然,例如,一個男人(1表示),一個女人(0表示),但是隨著科學技術的發展,出現了人妖這個生物(可能0.3屬於男人,0.7屬於女人).這樣如果用0,1就顯得不太恰當了,那我們該如何表示呢,且聽我慢慢道來。

開始之前先介紹模糊數學幾種不同的名稱:

模糊集:給定一個論域 U ,那麼從 U 到單位區間 [0,1] 的一個對映稱為 U 上的一個模糊集,或 U 的一個模糊子集. 模糊集可以記為 A 。 對映(函式) μA(·) 或簡記為 A(·) 叫做模糊集 A 的隸屬函式。 對於每個 x ∈ U , μA(x) 叫做元素 x 對模糊集 A 的隸屬度。

模糊邏輯:它是一種相對於傳統是或者不是的二值邏輯而言的。例如下圖:,如果這個人在B裡面,那麼很好理解,人在B裡面為1,但是如果出現下列這種情況呢:

,顯然用上述的邏輯就行不通了,但是可以這樣表示在(A,B)=(0,6,0.4),o,6在A, 0,4在B,這樣完美解決。其實拓展成3,4,5也都一樣。類似於,我們看周星馳的賭俠,反派用電腦分析,牌的可能性。其實跟這個道理差不多

模糊矩陣:設R=(rijmxn,若0<=rij<=1,那麼稱該矩陣為模糊矩陣。若矩陣元素只有0,1的時候成為布林矩陣。如果對角線上都是一,則這個矩陣稱為自反矩陣、

模糊矩陣的關係以及並交與計算:

假設都是模糊矩陣。

交運算:

並運算:

餘運算:

例子如下(畫的比較醜,請見諒):

模糊矩陣的合成

為模糊矩陣,,為A與B的合成,其中為模糊矩陣的冪。

定義:若A為n階方陣,定義:

首先模糊數學的基礎就補充到這裡了。下面來看看。FCM演算法。

二 FCM演算法

2.1 FCM演算法簡介

FCM演算法首先是由E. Ruspini提出來的,後來J. C. Dunn與J. C. Bezdek將E. Ruspini演算法從硬聚類演算法推廣成模糊聚類演算法。FCM演算法是基於對目標函式的優化基礎上的一種資料聚類方法。聚類結果是每一個數據點對聚類中心的隸屬程度,該隸屬程度用一個數值來表示。FCM演算法是一種無監督的模糊聚類方法,在演算法實現過程中不需要人為的干預。這種演算法的不足之處:首先,演算法中需要設定一些引數,若引數的初始化選取的不合適,可能影響聚類結果的正確性;其次,當資料樣本集合較大並且特徵數目較多時,演算法的實時性不太好。

2.2 FCM演算法的實現原理

我們的FCM演算法是從硬劃分而來的。

硬劃分FCM演算法的目標函式: 。U表示原矩陣,p表示聚類中心,dik表示樣本點xk與第i個類的樣本原型pi之間的失真度,一般是用兩個向量之間的距離表示。

軟劃分FCM的目標函式:。Uik表示xk與第i類樣本的隸屬度。

一般性模糊聚類分析的目標函式: ,其中m>1.dik是一種距離範數,可以表示為,A表示權重。

求解過程如下(把我以前寫的截圖發來):

得到:

求解聚類中心:

得到聚類中心:

FCM演算法執行流程:

安利一波(百度腦圖,這是我認為百度做的比較有良心的東西了。我這個就是用百度腦圖畫的)

三 FCM的Matlab實現

function [U,P,Dist,Cluster_Res,Obj_Fcn,iter]=fuzzycm(Data,C,plotflag,M,epsm)

% 模糊 C 均值聚類 FCM: 從隨機初始化劃分矩陣開始迭代

% [U,P,Dist,Cluster_Res,Obj_Fcn,iter] = fuzzycm(Data,C,plotflag,M,epsm)

% 輸入:

% Data: N×S 型矩陣,聚類的原始資料,即一組有限的觀測樣本集,

% Data 的每一行為一個觀測樣本的特徵向量,S 為特徵向量

% 的維數,N 為樣本點的個數

% C: 聚類數,1

% plotflag: 聚類結果 2D/3D 繪圖示記,0 表示不繪圖,為預設值

% M: 加權指數,預設值為 2

% epsm: FCM 演算法的迭代停止閾值,預設值為 1.0e-6

% 輸出:

% U: C×N 型矩陣,FCM 的劃分矩陣

% P: C×S 型矩陣,FCM 的聚類中心,每一行對應一個聚類原型

% Dist: C×N 型矩陣,FCM 各聚類中心到各樣本點的距離,聚類中

% 心 i 到樣本點 j 的距離為 Dist(i,j)

% Cluster_Res: 聚類結果,共 C 行,每一行對應一類

% Obj_Fcn: 目標函式值

% iter: FCM 演算法迭代次數

% See also: fuzzydist maxrowf fcmplot

if nargin<5

epsm=1.0e-6;

end

if nargin<4

M=2;

end

if nargin<3

plotflag=0;

end

[N,S]=size(Data);m=2/(M-1);iter=10000;

Dist(C,N)=0; U(C,N)=0; P(C,S)=0;

% 隨機初始化劃分矩陣

U0 = rand(C,N);

U0=U0./(ones(C,1)*sum(U0));

% FCM 的迭代演算法

while true

% 迭代計數器

iter=iter+1;

% 計算或更新聚類中心 P

Um=U0.^M;

P=Um*Data./(ones(S,1)*sum(Um'))';

% 更新劃分矩陣 U

for i=1:C

for j=1:N

Dist(i,j)=fuzzydist(P(i,:),Data(j,:));

end

end

U=1./(Dist.^m.*(ones(C,1)*sum(Dist.^(-m))));

% 目標函式值: 類內加權平方誤差和

if nargout>4 | plotflag

Obj_Fcn(iter)=sum(sum(Um.*Dist.^2));

end

% FCM 演算法迭代停止條件

if norm(U-U0,Inf) break

end

U0=U;

end

% 聚類結果

if nargout > 3

res = maxrowf(U);

for c = 1:

v = find(res==c);

Cluster_Res(c,1:length(v))=v;

end

end

% 繪圖

if plotflag

fcmplot(Data,U,P,Obj_Fcn);

end

我用的資料集聚類結果:

感覺效果好挺好的。

今天的模糊聚類就講到這裡了希望大家點個關注,以及批評指正

相關推薦

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

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

機器學習筆記(十二):

目錄 1)Unsupervised learning introduction 2)K-means algorithm 3)Optimization objective 4)Random initialization 5)Choosing the number of clus

大資料技術學習筆記之Hadoop框架基礎4-MapReduceshuffer過程zookeeper框架學習

一、MapReduce Shuffle     -》MapReduce執行五個階段         input           

【程式碼】K-means實現Matlab工具箱和自己實現

一. 聚類 先說說聚類。顧名思義,就是有一團資料,根據某種準則把相似的資料分別聚在一起,形成不同的類別(每個類別稱為一簇)。聚類是一種無監督的演算法。所謂無監督就是說,雖然聚類把物體分類到了不同的簇,只能知道哪些資料是屬於同一類的,至於這一類資料到底是什麼,並不知道。

吳恩達機器學習 筆記八 K-means演算法

1. 代價函式   K-means演算法是比較容易理解的,它屬於無監督學習方法,所以訓練樣本資料不再含有標籤。我們假設有樣本資料x(1),x(2),⋯,x(m)x(1),x(2),⋯,x(m),我們選擇設定KK個聚類中心u1,u2,⋯,uKu1,u2,⋯,uK

機器學習筆記之K-means

K-means聚類是聚類分析中比較基礎的演算法,屬於典型的非監督學習演算法。其定義為對未知標記的資料集,按照資料內部存在的資料特徵將資料集劃分為多個不同的類別,使類別內的資料儘可能接近,類別間的資料相似度比較大。用於衡量距離的方法主要有曼哈頓距離、歐氏距離、切比雪夫距離,其中

機器學習筆記 perceptron(感知機) 在ex4Data資料集上的實現

慣例的ML課堂作業,第四個也是最後一個線性分類模型,感知機。 感知機是一個非常簡單的線性分類模型,簡單來說就是一個神經元,其啟用函式是門限函式,有n個輸入和一個輸出,和神經元結構十分相似。 感知機的損失函式是看作是分類錯的所有樣本的輸出值的和 hw的輸出就是

機器學習筆記(二)矩陣和線性代數 例:用Python實現SVD分解進行圖片壓縮

線性代數基本只要是理工科,都是必修的一門課。當時學習的時候總是有一個疑惑,這個東西到底是幹嘛用的?為什麼數學家發明出這麼一套方法呢,感覺除了解方程沒發現有什麼大用啊!但隨著學習的深入,慢慢發現矩陣的應

機器學習】DBSCAN Algorithms基於密度的算法

多次 使用 缺點 有效 結束 基於 需要 att 共享 一、算法思想: DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一個比較有代表性的基於密度的聚

python學習筆記8--面向對象--屬性和方法

confirm 報錯 方式 系列 dep 是個 應用 all icm 屬性:   公有屬性 (屬於類,每個類一份)   普通屬性 (屬於對象,每個對象一份)   私有屬性 (屬於對象,跟普通屬性相似,只是不能通過對象直接訪問) 方法:(按作用)   構造方法  

SLS機器學習介紹(02):時序建模

文章系列連結 SLS機器學習介紹(01):時序統計建模 SLS機器學習介紹(02):時序聚類建模 SLS機器學習介紹(03):時序異常檢測建模 SLS機器學習介紹(04):規則模式挖掘 前言 第一篇文章SLS機器學習介紹(01):時序統計建模上週更新完,一下子炸出了很多潛伏的業

Linux系統下python學習筆記——Linux中檔案和目錄常用命令

一、檢視目錄內容 ls命令說明: 英文單詞list的簡寫,功能為列出目錄的內容,是使用者最常用的命令字義    Linux下檔案和目錄的特點: Linux檔案或目錄名稱最長可以有256個字元 以 . 開頭的檔案為隱藏檔案,需要用-a引數才能顯示(all

Cocos Creator 系統學習筆記(七)cc.Component的使用

1 //獲取型別 2 var my_item=require("Component");//AA:其他類名 1 3 cc.Class({ 4 //cc.Class 返回了一個建構函式,然後繼承了cc.Component 5 //cc.Component ,也叫周期函式

Python爬蟲(入門+進階)學習筆記 2-6 Scrapy的Request和Response

上節課我們學習了中介軟體,知道了怎麼通過中介軟體執行反反爬策略。本節課主要介紹Scrapy框架的request物件和response物件 通常,Request物件在爬蟲程式中生成並傳遞到系統,直到它們到達下載程式,後者執行請求並返回一個Response物件,

Tomcat學習筆記【3】--- Server.xml配置檔案

本文主要講如何配置Tomcat伺服器。 首先展示一個BS結構圖: 1 server 一個server就表示一個Tomcat例項。 1)port 指定一個埠,這個埠負責監聽關閉tomcat的請求; 2)shutdown 指定向埠傳送的命令字串。 2 service 一個service就是處理請求的服務,裡邊包含

Maven學習筆記(3)-Maven中POM.XML

目錄 一、介紹POM   Maven之前的構建工具有Make和Ant,其中Make依賴構建指令碼Makefile,Ant依賴構建指令碼build.xml。同理,Maven專案也依賴構建指令碼。   POM(Project Object Model

前端學習筆記之js中apply()和call()方法

經過網上的大量搜尋,漸漸明白了apply()和call方法的使用,為此寫一篇文章記錄一下。 定義 apply()方法: Function.apply(obj,args)

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

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

機器學習總結(十):常用演算法(Kmeans、密度、層次常見問題

任務:將資料集中的樣本劃分成若干個通常不相交的子集。 效能度量:類內相似度高,類間相似度低。兩大類:1.有參考標籤,外部指標;2.無參照,內部指標。 距離計算:非負性,同一性(與自身距離為0),對稱性

機器學習經典演算法Python實現--線性迴歸(Linear Regression)演算法

(一)認識迴歸 迴歸是統計學中最有力的工具之一。機器學習監督學習演算法分為分類演算法和迴歸演算法兩種,其實就是根據類別標籤分佈型別為離散型、連續性而定義的。顧名思義,分類演算法用於離散型分佈預測,如前