机器学习笔记----Fuzzy c-means(FCM)模糊聚类详解及matlab实现

介绍及matlab代码转载自# 机器学习笔记----Fuzzy c-means(FCM)模糊聚类详解及matlab实现

前言:这几天一直都在研究模糊聚类。感觉网上的文档都没有一个详细而具体的讲解,正好今天有时间,就来聊一聊模糊聚类。

一:模糊数学

我们大家都知道计算机其实只认识两个数字0,1。我们平时写程序其实也是这样if 1 then do.永远这种模式,在这种模式中,一个元素要么属于这个集合,要么不属于这个集合,但是对我们现在介绍的模糊集来说,某个元素可能部分属于这个集合,又可能部分属于另外的集合,显然,例如,一个男人(1表示),一个女人(0表示),但是随着科学技术的发展,出现了人妖这个生物(可能0.3属于男人,0.7属于女人).这样如果用0,1就显得不太恰当了,那我们该如何表示呢,且听我慢慢道来。

开始之前先介绍模糊数学几种不同的名称:

模糊集:给定一个论域 U ,那么从 U 到单位区间 [0,1] 的一个映射![《tp://upload-images.jianshu.io/upload_images/10120973-4fe926cfea3a138d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

称为 U 上的一个模糊集,或 U 的一个模糊子集. 模糊集可以记为 A 。 映射(函数) μA(·) 或简记为 A(·) 叫做模糊集 A 的隶属函数。 对于每个 x ∈ U , μA(x) 叫做元素 x 对模糊集 A 的隶属度。

模糊逻辑:它是一种相对于传统是或者不是的二值逻辑而言的。例如下图:

image

,如果这个人在B里面,那么很好理解,人在B里面为1,但是如果出现下列这种情况呢:

image

,显然用上述的逻辑就行不通了,但是可以这样表示在(A,B)=(0,6,0.4),o,6在A, 0,4在B,这样完美解决。其实拓展成3,4,5也都一样。类似于,我们看周星驰的赌侠,反派用电脑分析,牌的可能性。其实跟这个道理差不多

image

模糊矩阵:设R=(rijmxn,若0<=rij<=1,那么称该矩阵为模糊矩阵。若矩阵元素只有0,1的时候成为布尔矩阵。如果对角线上都是一,则这个矩阵称为自反矩阵、

模糊矩阵的关系以及并交与计算:

假设
image

image

都是模糊矩阵。

交运算:
image

并运算:
image

余运算:
image

例子如下(画的比较丑,请见谅):

image

模糊矩阵的合成

image

为模糊矩阵,
image

,为A与B的合成,其中
image

为模糊矩阵的幂。

定义:若A为n阶方阵,定义:
image

首先模糊数学的基础就补充到这里了。下面来看看。FCM算法。

二 FCM算法

2.1 FCM算法简介

FCM算法首先是由E. Ruspini提出来的,后来J. C. Dunn与J. C. Bezdek将E. Ruspini算法从硬聚类算法推广成模糊聚类算法。FCM算法是基于对目标函数的优化基础上的一种数据聚类方法。聚类结果是每一个数据点对聚类中心的隶属程度,该隶属程度用一个数值来表示。FCM算法是一种无监督的模糊聚类方法,在算法实现过程中不需要人为的干预。这种算法的不足之处:首先,算法中需要设定一些参数,若参数的初始化选取的不合适,可能影响聚类结果的正确性;其次,当数据样本集合较大并且特征数目较多时,算法的实时性不太好。

2.2 FCM算法的实现原理

我们的FCM算法是从硬划分而来的。

硬划分FCM算法的目标函数:
image

。U表示原矩阵,p表示聚类中心,dik表示样本点xk与第i个类的样本原型pi之间的失真度,一般是用两个向量之间的距离表示。

软划分FCM的目标函数:
image

。Uik表示xk与第i类样本的隶属度。

一般性模糊聚类分析的目标函数:
image

,其中m>1.dik是一种距离范数,可以表示为

image

,A表示权重。

求解过程如下(把我以前写的截图发来):

image
image

得到:
image

求解聚类中心:

[图片上传中...(image-9ec94e-1535524565821-3)]

得到聚类中心:
image

FCM算法执行流程:

[图片上传中...(image-6fc01d-1535524565821-1)]

安利一波(百度脑图,这是我认为百度做的比较有良心的东西了。我这个就是用百度脑图画的)

三 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

我用的数据集聚类结果:

image

感觉效果好挺好的。

今天的模糊聚类就讲到这里了希望大家点个关注,以及批评指正。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • 【嵌牛导读】FCM算法是一种基于划分的聚类算法,它的思想就是使得被划分到同一簇的对象之间相似度最大,而不同簇之间的...
    于占胜阅读 19,497评论 0 4
  • 写在之前 因简书导入公式很麻烦,如果想获得更好的观看体验请移步https://www.zybuluo.com/ha...
    hainingwyx阅读 6,806评论 2 13
  • 这个世界上最孝顺的水果是香蕉!因为它长大了,还一直回头看妈妈! 曾经看过一组照片。摄影师每次离家前都会回过头,拍下...
    安的烈阅读 227评论 0 0
  • 我并不是那么喜欢鸡汤,大概是因为鸡汤太不真实和不大符合我的现状。我本来也不是个爱撒鸡汤的人,也不是个会写文...
    孤独和全世界的恋爱阅读 279评论 0 0
  • 我只看到你的背影, 却因何懂了你的忧郁, 似乎失去希望, 那般落寞, 那美丽的风景你已看了太久, 不知你期待着里面...
    暮色柒光年外阅读 137评论 0 0