《Matlab记录文本模糊聚类分析基本知识及实现023》由会员分享,可在线阅读,更多相关《Matlab记录文本模糊聚类分析基本知识及实现023(22页珍藏版)》请在金锄头文库上搜索。
1、23. 模糊聚类分析原理及实现聚类分析,就是用数学方法研究和处理所给定对象,按照事物间 的相似性进行区分和分类的过程。传统的聚类分析是一种硬划分,它把每个待识别的对象严格地划 分到某个类中,具有非此即彼的性质,这种分类的类别界限是分明的。随着模糊理论的建立,人们开始用模糊的方法来处理聚类问题, 称为模糊聚类分析。由于模糊聚类得到了样本数与各个类别的不确定 性程度,表达了样本类属的中介性,即建立起了样本对于类别的不确 定性的描述,能更客观地反映现实世界。本篇先介绍传统的两种(适合数据量较小情形,及理解模糊聚类 原理):基于择近原则、模糊等价关系的模糊聚类方法。(一)预备知识一、模糊等价矩阵定义1
2、设R=(rij)nxn为模糊矩阵,1为n阶单位矩阵,若R满足ij nx ni)自反性:CR (等价于岭=1);ii)对称性:Rt=R;则称R为模糊相似矩阵,若再满足iii)传递性:R2SR(等价于 0(r Ar ) r )k=l ik kjj则称R为模糊等价矩阵。定理1设R为n阶模糊相似矩阵,则存在一个最小的自然数k(k Xija Xij其中,a(九)=ij|1,0,称为模糊矩阵A的入-截矩阵。显然,A入为布尔矩阵,且其等价性与与A 一致。意义:将模糊等价矩阵转化为等价的布尔矩阵,可以得到有限论 域上的普通等价关系,而等价关系是可以分类的。因此,当入在0,1 上变动时,由A入得到不同的分类。若
3、入AA2,从而由A入2确定的分类是由A&确定的分 类的加细。当入从1递减变化到0时,入的分类由细变粗逐渐归并,形成一个分级聚类树。让入从1到0变化,观察分类过程。例1设U二U, u2, u3, u4, uj,对给定的U上的模糊等价关系 10J0.S0.50.510.40.40.40,80,410,50,50.50.510.60.50.61(1) 当入=1时,1 0 0 0 00 10 0 0R =0010010 0 0 1 00 0 0 0 1分类结果为5类:(每行代表一类,1代表对应元素在该类)u1, u2, u3, u4, u5(2) 当入=0.8时,_100 1 00 0100R=101
4、000.800010_ 00001u3, u2,u4, u5_10100_01000R=101000.600011_00011u3, u2,u4,u5101101000R=101110.51011110111分类结果为4类:U,(3) 当入=0.6时,分类结果为3类:U,(4) 当入=0.5时,当入=0.4 ( R中的最小值)时,1111111111R =11111 0.41111111111分类结果为1类:U, u2, u3, u4, u5整个动态分类过程如下:二)基于择近原则的模糊聚类择近原则就是利用贴近度来实现分类操作,贴近度用来衡量两个模糊集A和B的接近程度,用N(A,B)表示。贴近度
5、越大,表明二者 越接近。设论域有限或者在一定区间,即U二J, u2,,uj或U = a,b, 常用的贴近度有以下三种:(1) 海明贴近度N(A, B) = 1 -1 I A(u ) - B(u )1N(A,B)=1-1b-an i ii=1jb I A(u ) 一 B(u ) I duii(2) 欧氏贴近度N (A, B) = 1 -壬A(u ) - B(u )iii=1“ IN(A,B)=bA(u ) - B(u )2du)aii(3) 格贴近度N(A, B) = (A B) a (Ac Bc)其中,A B = 0(A(u ) a B(u ).。i=111Matlab实现:格贴近度的实现函数
6、fuz_closing .mfunction y=fuz_closing(A,B,type)%要求A与B列数相同的行向量m,n=size(A);switch typecase 1 %海明贴近度y=1-sum(abs(A-B)/n;case 2 %欧氏贴近度y=1-(sum(A-B).人2)人(1/2)/sqrt( n);case 3 %格贴近度y1=max(min(ones(m,n)-A,ones(m,n)-B);%on es(m, n)-A 等于 AAcy2=max(min(A,B);y=min(y1,y2);例2设某产品的质量等级分为5级其中一级有5种评判因素J, u2,u3, u4, u
7、5. 每一等级的模糊集为B1=0.5 0.5 0.6 0.4 0.3B2=0.3 0.3 0.4 0.2 0.2B3=0.2 0.2 0.3 0.1 0.1B4=0.1 0.1 0.2 0.1 0B5=0.1 0.1 0.1 0.1 0假设某产品各评判因素的值为A二0.4 0.3 0.2 0.1 0.2,问该产品属 于哪个等级?代码:A=0.4 0.3 0.2 0.1 0.2;B=0.5 0.5 0.6 0.4 0.3;0.3 0.3 0.4 0.2 0.2;0.2 0.2 0.3 0.1 0.1;0.1 0.1 0.2 0.1 0;0.1 0.1 0.1 0.1 0;fori=1:5haim
8、ing(i)=fuz_closing(A,B(i,:),1);oushi(i)=fuz_closing(A,B(i,:),2);ge(i)=fuz_closing(A,B(i,:),3);haimingoushige运行结果:haiming =0.78000.92000.90000.86000.8400oushi = 0.5081 0.9106 0.8658 0.6870 0.6422 ge =0.40000.30000.20000.20000.1000可见样本A与各等级的格贴近度分别为04 0.3, 02 02 0.1,故可 认为该产品属于B等级。若按令两种贴近度判断,该产品属于B2等 级。
9、(三)基于模糊等价关系的模糊聚类一、算法步骤1. 样本数据归一化设X二X, x2,,xj为要分类的n个样本,每个样本有m个指标,即xi= xi1, xi2, , xim,i=1,2,.,n得到原始数据矩阵X=(xij)nxm.由于不同指标的数据量纲不同,为了使数据能够比较,要先对X做归一化处理。2.立模糊相似矩阵R先建立样本xi与尊相似程度rij,进而构造模糊相似矩阵R=(rij)nxn建立j常用的方法有:艺x - xik jk迟 I x - x I -1 x - x Iik i jk jk=1(1) 相似系数法 夹角余弦法: rij 相关系数法: rij(2)距离法一般取rj=1-c(d(x
10、i/x.)a,其中c和a为适当选取的参数,使得 0rij1.常用的距离有:海明距离:d(x , x ) = I x - x Ii jik jkk=1 欧氏距离.d(x , x )=芒(x - x )2i JUik jkk =1 切比雪夫距离 : d(x ,x ) =maxIx -x Ii j1k m ik jk(3) 贴近度法另(x A x )最大最小法:ik jkr =毛i_ij 艺(x V x )ik jkk=1艺(x A x )算术平均最小法: rijik jk)(x + x )2ik jkA X )3.求出R的传递闭包t(R)即改造相似关系为等价关系:令R2 = R R ,再令R4 =
11、 R2 R2 直到满足R21 = Ri Ri与Rl相等,即为t(R),仍记为R.OO4.选取合适的入利用入-截矩阵R进行分类(参考例1)O求模糊相似矩阵R的函数:fuz_distanee.mfunction R=fuz_distance(x,type)%x%归一化的数据矩阵,type选择计算相似程度的方法%返回模糊相似矩阵Rn,m=size(x);%距离法的选择参数e和a,需要根据具体情况修改以保证R(i,j)属于0,1e=0.1;a=1;fori=1:nfor j=1:nswiteh typeease 1 %夹角余弦法R(i,j)=(x(i,:)*x(j,:)/(norm(x(i,:),2)
12、*norm(x(j,:),2);case 2 %相关系数法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);case 3 %海明距离法d=sum(abs(x(i,:)-x(j,:);R(i,j) = 1-c*dAa;case 4 %欧氏距离法d=norm(x(i,:)-x(j,:),2);R(i,j)=1-c*dAa;case 5 %切比雪夫距离法d=max(abs(x(i,:)-x(j,:);R(i,j)=1-c*dAa;case 6 最大最小(贴近度
13、)法 R(i,j)=sum(min(x(i,:);x(j,:)/sum(max(x(i,:);x(j,:);case 7 算术平均最小(贴近度)法R(i,j)=2*sum(min(x(i,:);x(j,:)/sum(x(i,:)+x(j,:);case 8 %几何平均最小(贴近度)法 R(i,j)=sum(min(x(i,:);x(j,:)/sum(sqrt(x(i,:).*x(j,:);endendend求R的传递闭包t(R)的函数:tran_R.mfunction B,k=tran_R(R)%R为模糊相似矩阵,循环构造满足传递性的t(R)%k为满足RA2k = RAk的最小的自然数kn=length(R);B=zeros(n,n);flag=0;k=1/2;while flag=0B=fco(R,R); %做模糊合成运算k=2*k;if B=