Matlab学习系列23.-模糊聚类分析原理及.docx

上传人:wj 文档编号:1923039 上传时间:2023-05-02 格式:DOCX 页数:14 大小:259.86KB
下载 相关 举报
Matlab学习系列23.-模糊聚类分析原理及.docx_第1页
第1页 / 共14页
Matlab学习系列23.-模糊聚类分析原理及.docx_第2页
第2页 / 共14页
Matlab学习系列23.-模糊聚类分析原理及.docx_第3页
第3页 / 共14页
Matlab学习系列23.-模糊聚类分析原理及.docx_第4页
第4页 / 共14页
Matlab学习系列23.-模糊聚类分析原理及.docx_第5页
第5页 / 共14页
Matlab学习系列23.-模糊聚类分析原理及.docx_第6页
第6页 / 共14页
Matlab学习系列23.-模糊聚类分析原理及.docx_第7页
第7页 / 共14页
Matlab学习系列23.-模糊聚类分析原理及.docx_第8页
第8页 / 共14页
Matlab学习系列23.-模糊聚类分析原理及.docx_第9页
第9页 / 共14页
Matlab学习系列23.-模糊聚类分析原理及.docx_第10页
第10页 / 共14页
Matlab学习系列23.-模糊聚类分析原理及.docx_第11页
第11页 / 共14页
Matlab学习系列23.-模糊聚类分析原理及.docx_第12页
第12页 / 共14页
Matlab学习系列23.-模糊聚类分析原理及.docx_第13页
第13页 / 共14页
Matlab学习系列23.-模糊聚类分析原理及.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Matlab学习系列23.-模糊聚类分析原理及.docx

《Matlab学习系列23.-模糊聚类分析原理及.docx》由会员分享,可在线阅读,更多相关《Matlab学习系列23.-模糊聚类分析原理及.docx(14页珍藏版)》请在冰点文库上搜索。

Matlab学习系列23.-模糊聚类分析原理及.docx

23.模糊聚类分析原理及实现

聚类分析,就是用数学方法研究和处理所给定对象,按照事物间的相似性进行区分和分类的过程。

传统的聚类分析是一种硬划分,它把每个待识别的对象严格地划分到某个类中,具有非此即彼的性质,这种分类的类别界限是分明的。

随着模糊理论的建立,人们开始用模糊的方法来处理聚类问题,称为模糊聚类分析。

由于模糊聚类得到了样本数与各个类别的不确定性程度,表达了样本类属的中介性,即建立起了样本对于类别的不确定性的描述,能更客观地反映现实世界。

本篇先介绍传统的两种(适合数据量较小情形,及理解模糊聚类原理):

基于择近原则、模糊等价关系的模糊聚类方法。

(一)预备知识

一、模糊等价矩阵

定义1设R=(rij)n×n为模糊矩阵,I为n阶单位矩阵,若R满足

i)自反性:

I≤R(等价于rii=1);

ii)对称性:

RT=R;

则称R为模糊相似矩阵,若再满足

iii)传递性:

R2≤R(等价于)

则称R为模糊等价矩阵。

定理1设R为n阶模糊相似矩阵,则存在一个最小的自然数k(k

二、模糊矩阵的λ-截矩阵

定义2设A=(aij)n×m为模糊矩阵,对任意的λ∈[0,1],作矩阵

其中,

称为模糊矩阵A的λ-截矩阵。

显然,Aλ为布尔矩阵,且其等价性与与A一致。

意义:

将模糊等价矩阵转化为等价的布尔矩阵,可以得到有限论域上的普通等价关系,而等价关系是可以分类的。

因此,当λ在[0,1]上变动时,由Aλ得到不同的分类。

若λ1<λ2,则Aλ1≥Aλ2,从而由Aλ2确定的分类是由Aλ1确定的分类的加细。

当λ从1递减变化到0时,Aλ的分类由细变粗,逐渐归并,形成一个分级聚类树。

例1设U={u1,u2,u3,u4,u5},对给定的U上的模糊等价关系

让λ从1到0变化,观察分类过程。

(1)当λ=1时,

分类结果为5类:

(每行代表一类,1代表对应元素在该类)

{u1},{u2},{u3},{u4},{u5}

(2)当λ=0.8时,

分类结果为4类:

{u1,u3},{u2},{u4},{u5}

(3)当λ=0.6时,

分类结果为3类:

{u1,u3},{u2},{u4,u5}

(4)当λ=0.5时,

分类结果为2类:

{u1,u3,u4,u5},{u2}

(4)当λ=0.4(R中的最小值)时,

分类结果为1类:

{u1,u2,u3,u4,u5}

整个动态分类过程如下:

(二)基于择近原则的模糊聚类

择近原则就是利用贴近度来实现分类操作,贴近度用来衡量两个模糊集A和B的接近程度,用N(A,B)表示。

贴近度越大,表明二者越接近。

设论域有限或者在一定区间,即U={u1,u2,…,un}或U=[a,b],常用的贴近度有以下三种:

(1)海明贴近度

(2)欧氏贴近度

(3)格贴近度

其中,.

Matlab实现:

格贴近度的实现函数fuz_closing.m

functiony=fuz_closing(A,B,type)

%要求A与B列数相同的行向量

[m,n]=size(A);

switchtype

case1%海明贴近度

y=1-sum(abs(A-B))/n;

case2%欧氏贴近度

y=1-(sum(A-B).^2)^(1/2)/sqrt(n);

case3%格贴近度

y1=max(min(ones(m,n)-A,ones(m,n)-B));

%ones(m,n)-A等于A^c

y2=max(min(A,B));

y=min(y1,y2);

end

例2设某产品的质量等级分为5级,其中一级有5种评判因素u1,u2,u3,u4,u5.每一等级的模糊集为

B1={0.50.50.60.40.3}

B2={0.30.30.40.20.2}

B3={0.20.20.30.10.1}

B4={0.10.10.20.10}

B5={0.10.10.10.10}

假设某产品各评判因素的值为A={0.40.30.20.10.2},问该产品属于哪个等级?

代码:

A=[0.40.30.20.10.2];

B=[0.50.50.60.40.3;

0.30.30.40.20.2;

0.20.20.30.10.1;

0.10.10.20.10;

0.10.10.10.10];

fori=1:

5

haiming(i)=fuz_closing(A,B(i,:

),1);

oushi(i)=fuz_closing(A,B(i,:

),2);

ge(i)=fuz_closing(A,B(i,:

),3);

end

haiming

oushi

ge

运行结果:

haiming=0.78000.92000.90000.86000.8400

oushi=0.50810.91060.86580.68700.6422

ge=0.40000.30000.20000.20000.1000

可见样本A与各等级的格贴近度分别为0.4,0.3,0.2,0.2,0.1,故可认为该产品属于B1等级。

若按令两种贴近度判断,该产品属于B2等级。

(三)基于模糊等价关系的模糊聚类

一、算法步骤

1.样本数据归一化

设X={x1,x2,…,xn}为要分类的n个样本,每个样本有m个指标,即

xi={xi1,xi2,…,xim},i=1,2,..,n

得到原始数据矩阵X=(xij)n×m.

由于不同指标的数据量纲不同,为了使数据能够比较,要先对X做归一化处理。

2.建立模糊相似矩阵R

先建立样本xi与xj相似程度rij,进而构造模糊相似矩阵R=(rij)n×n建立rij常用的方法有:

(1)相似系数法

①夹角余弦法:

②相关系数法:

(2)距离法

一般取rij=1-c(d(xi,xj))α,其中c和α为适当选取的参数,使得

0≤rij≤1.常用的距离有:

①海明距离:

②欧氏距离:

③切比雪夫距离:

(3)贴近度法

①最大最小法:

②算术平均最小法:

③几何平均最小法:

3.求出R的传递闭包t(R)

即改造相似关系为等价关系:

令,再令,…,直到满足与Rl相等,即为t(R),仍记为R.

4.选取合适的λ,利用λ-截矩阵Rλ进行分类(参考例1)。

二、Matlab实现

求模糊相似矩阵R的函数:

fuz_distance.m

functionR=fuz_distance(x,type)

%x为归一化的数据矩阵,type选择计算相似程度的方法

%返回模糊相似矩阵R

[n,m]=size(x);

%距离法的选择参数c和a,需要根据具体情况修改以保证R(i,j)属于[0,1]

c=0.1;

a=1;

fori=1:

n

forj=1:

n

switchtype

case1%夹角余弦法R(i,j)=(x(i,:

)*x(j,:

)')/(norm(x(i,:

),2)*norm(x(j,:

),2));

case2%相关系数法

Dxi=abs(x(i,:

)-mean(x(i,:

)));

Dxj=abs(x(j,:

)-mean(x(j,:

)));R(i,j)=(Dxi*Dxj')/(norm(Dxi,2)*norm(Dxj,2));

case3%海明距离法

d=sum(abs(x(i,:

)-x(j,:

)));

R(i,j)=1-c*d^a;

case4%欧氏距离法

d=norm(x(i,:

)-x(j,:

),2);

R(i,j)=1-c*d^a;

case5%切比雪夫距离法

d=max(abs(x(i,:

)-x(j,:

)));

R(i,j)=1-c*d^a;

case6最大最小(贴近度)法R(i,j)=sum(min([x(i,:

);x(j,:

)]))/sum(max([x(i,:

);x(j,:

)]));

case7算术平均最小(贴近度)法R(i,j)=2*sum(min([x(i,:

);x(j,:

)]))/sum(x(i,:

)+x(j,:

));

case8%几何平均最小(贴近度)法R(i,j)=sum(min([x(i,:

);x(j,:

)]))/sum(sqrt(x(i,:

).*x(j,:

)));

end

end

end

求R的传递闭包t(R)的函数:

tran_R.m

function[B,k]=tran_R(R)

%R为模糊相似矩阵,循环构造满足传递性的t(R)

%k为满足R^2k=R^k的最小的自然数k

n=length(R);

B=zeros(n,n);

flag=0;

k=1/2;

whileflag==0

B=fco(R,R);%做模糊合成运算

k=2*k;

ifB==R

flag=1;

else

R=B;%循环计算R传递闭包

end

end

上面的函数tran_R.m调用函数矩阵模糊合成算子函数:

fco.m

functionB=fco(Q,R)

%实现模糊合成算子的计算,要求Q的列数等于R的行数

[n,m]=size(Q);

[m,l]=size(R);

B=zeros(n,l);

fori=1:

n

fork=1:

l

B(i,k)=max(min([Q(i,:

);R(:

k)']));

end

end

求t(R)的λ-截矩阵的函数:

fuz_lamda.m

functiony=fuz_lamda(X,m)

%用λ-截矩阵将样本分成m类,m≤总样本数

lamda=unique(X)';%根据R中的值取λ值

%unique函数取矩阵不重复元素组成向量并从小到大排好序

X(find(X

X(find(X>=lamda(m)))=1;

y=X;

例3某地区设有11个雨量站,其分布如图所示:

10年来各雨量站测得的年降雨量表如下:

现因经费问题,希望撤销几个雨量站,问撤销哪些雨量站而不会太多地减少降雨信息?

分析:

对11个雨量站进行模糊聚类,同一类的只需保留一个即可。

比如,已知该市决定撤销6个只保留5个雨量站,则模糊聚类为5类。

代码:

loaddata;

%数据归一化

[X,ps]=mapminmax(data',0,1);

X=X';

%选择计算相似程度的方法

type=3;%c=0.1,a=1,此时也称绝对值减数法

%求模糊相似矩阵R0

R0=fuz_distance(X,type)

%将模糊相似矩阵R0改造成模糊等价矩阵R

[R,k]=tran_R(R0)

%求将样本分成8类的λ-截矩阵

R_lamda=fuz_lamda(R,8)

运行结果及说明:

归一化后的数据矩阵X:

模糊相似矩阵R0:

由R0改造成的模糊等价矩阵R:

k=8说明R16=R8.

将样本分为5类的λ-截矩阵R_lamda:

可以判断5类分别是:

{x1,x7}{x2,x4,x5,x6}{x3,x9}{x8,x11}{x10}

注:

对于这类C均值模糊聚类问题,也可以直接调用Matlab自带的模糊聚类函数fcm.m求解。

调用方式:

[center,U,obj_fcn,]=fcm(data,cluster_n)

其中,data为归一化后的样本数据,每一行是一个样本;cluster_n为聚类数;center返回最终的聚类中心矩阵;U为最终的模糊分区矩阵;obj_fcn为迭代过程中的目标函数值(越小越好)。

代码:

(X为前面已归一化的样本数据)

[center,U,obj_fcn]=fcm(X,5)

maxU=max(U);

index1=find(U(1,:

)==maxU);%第一类

index2=find(U(2,:

)==maxU);%第二类

index3=find(U(3,:

)==maxU);%第三类

index4=find(U(4,:

)==maxU);%第四类

index5=find(U(5,:

)==maxU);%第五类

class1=X(index1,:

)%第一类中的样本数据

class2=X(index2,:

)%第二类中的样本数据

class3=X(index3,:

)%第三类中的样本数据

class4=X(index4,:

)%第四类中的样本数据

class5=X(index5,:

)%第五类中的样本数据

运行结果略,对比class1-class5与X,得到分类结果与前文相同。

另外,分为5类的obj_fcn=1.0578,如何选取合适的分类数,使得obj_fcn达到最小(最优模糊聚类)放到下一篇。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2