数学建模社区-数学中国

标题: 模糊聚类分析方法 [打印本页]

作者: 浅夏110    时间: 2020-5-26 15:29
标题: 模糊聚类分析方法
在工程技术和经济管理中,常常需要对某些指标按照一定的标准(相似的程度或亲 疏关系等)进行分类处理。例如,根据生物的某些性态对其进行分类,根据空气的性质 对空气质量进行分类,以及工业上对产品质量的分类、工程上对工程规模的分类、图像 识别中对图形的分类、地质学中对土壤的分类、水资源中的水质分类等等。这些对客观 事物按一定的标准进行分类的数学方法称为聚类分析,它是多元统计“物以聚类”的一种分类方法。然而,在科学技术、经济管理中有许多事物的类与类之间并无清晰的划分, 边界具有模糊性,它们之间的关系更多的是模糊关系。对于这类事物的分类,一般用模糊数学方法、我们把应用模糊数学方法进行的聚类分析,称为模糊聚类分析。
) N: f0 f' m6 D) D7 C$ ]. Y6 `3 i8 m5 V! X8 D' o) ^
1 预备知识4 H! y8 h+ r+ j  t
1.1 模糊等价矩阵
& Y% A6 p. y$ w1 [, R% G0 j  r; N$ s7 g+ c6 H' M* d# m
; o% G; x3 Y6 i0 i0 r; V

' |$ U' J0 ?! Y
9 g) f6 _0 }" E( in 阶等价布尔矩阵
- f  T7 M7 `5 D2 d  C! b. f2 R
% \! o* _, G( R/ q* r; Y- F6 N+ z" y" u4 D8 u% F: W
# ^& f) X$ d# d5 |' E" C
模糊分类
6 @' B+ x0 `! J& b& i
) j1 M1 ?, X7 w; r! M9 L& \7 g8 J
& G* {4 Z- T! ~: K/ H& r, l
  `2 e$ i6 h+ H: k, c5 A5 N- u0 U0 w3 {# v, H5 n' u
( L9 j6 z% ^) l1 z; R* V! _: [
# ^. t/ _& ]) `1 @, ^

- k3 }$ `2 u# z4 g, x+ _2 _! O
3 Z9 T8 L4 O3 t$ ^5 \
$ Q/ ~; Z9 `- ?/ H+ f
! p1 K. O3 B3 |1 T& C$ k1.2 模糊相似矩阵) G& P% d8 p0 |% q4 u
9 t; K4 l1 |& b" E! @

3 \( E2 Y; m3 t* z; K. Q! Q' A
' H& j4 N  a. [( d8 {6 W2 W3 ~* J# q8 C0 ]8 [' _6 O' u* N

4 N  z" B, ]' f! U8 U1 t- X7 U) L! G+ }  b* b

* P; R! O* t) N
1 ^5 [" a- V! e& y2 模糊聚类分析法的基本步骤* }; \3 Y7 I9 l/ j' s, t% e
Step1: 数据标准化
3 u( @$ G' ]  M8 L" F
( ^. r- O6 d- u(1) 获取数据% k0 x5 F3 {' B% o4 a
; U; y% Y8 h7 y& o* r' a) J9 F

4 T8 J$ l1 i3 O2 \/ j& l
! d/ I0 T$ n  T3 V0 \9 J: r(2) 数据的标准化处理
% M, A; v3 k* k8 ^  I3 R, d在实际问题中,不同的数据可能有不同的性质和不同的量纲,为了使原始数据能够 适合模糊聚类的要求,需要将原始数据矩阵 A 作标准化处理,即通过适当的数据变换,将其转化为模糊矩阵。常用的方法有以下两种:: f! R* }" n) m/ n+ S# n, q7 x  r
1 z6 c' d8 H; l3 g  s; {1 q
① 平移—标准差变换
2 y7 c! Z1 |3 s2 x3 \8 S- O- ^
, r4 x# L% t/ S, l5 g$ ]0 i, i) m+ k/ {
% l7 ?. L5 L- L% ~: B
: d0 U3 p/ f; \. z② 平移—极差变换
: A# h; l6 V: V% f% c( ]
* m  W) z# J8 F* R0 K/ t
0 Z, y# E' [% d3 X9 [. e
! n/ O/ Q0 K; o2 W, ^" i2 CStep2: 建立模糊相似矩阵
1 ^' B8 m+ \+ u( ~/ d1 |+ J
" i  D. l  K1 Q# U$ G* \: J6 b- r: v* [: O' L, ~  Q7 F

/ w0 O6 n3 t# h(1) 数量积法
" G% @1 }5 h* z+ C2 H* F9 S; ~  m
( O# k& L, i8 M' Y# J7 F" @$ @5 n

) z/ {6 R; r( z$ I- J1 p) `) J8 ^8 T& s6 t- x4 G' Q9 G. p
(2) 夹角余弦法7 e: s9 H, x3 w
3 k( v& n9 e. u1 E% C3 Z* a( J' L
7 Y- I2 ]1 a/ K5 |" ~
( V: K% l: d# y: V4 m
(3) 相关系数法/ b) H' ]# H  t# k3 N

% H- k' ]2 t8 u4 t1 a/ @) a# u4 R7 _" P& u2 r- o
* R  r' d9 g$ j
(4) 指数相似系数法
2 m4 s2 z+ Y" X
, g; `3 U& P4 W( @' k: X) K7 T6 j4 F
0 m3 j' b* B% }$ t  p% w
(5) 最大最小值法
# g% S  `& C# W, ]0 g0 I                  式中 ∧ 为取小运算min,∨ 代表取大运算max1 [! d( S; |- Q/ w) u
' N- n0 V; X7 w) B4 ?. p. I
6 \6 D* R6 ^- Z2 Z) c& R
- k" C5 H7 W! `4 i8 z1 x
(6) 算术平均值法( `& d' s# y* d  y$ w! T% V1 v

% V- {6 R5 O3 L9 ^2 }1 M' m6 Q
' [' R0 q: n  H% j7 o+ e* ?6 g$ _
4 g4 S( C" b; o& z/ O(7) 几何平均值法
9 [# o* _4 {3 x1 s8 r1 m1 l) P4 G9 c$ p% y7 p

7 T4 w' V4 G0 Q# q: Z  ^
: v  D- B! d- i/ z(8) 绝对值倒数法
; B* O4 A" m* M3 X+ h
" L% W6 r; Y* K% z4 N1 R! _% d  ^$ Y2 h+ M% n1 T" m! i) n
3 t% ]2 ~& y5 P8 N% C
(9) 绝对值指数法! q, E; b( G& |$ [3 ]* j& y

- P1 k# \6 k* L- A% v: x1 z0 h( ?
4 X, [( ^5 H8 x5 B1 X
7 T. t) o- o( ^$ u; X" [/ M% F! ]% a(10) 海明距离法- g/ {' i$ _) H. z% b7 @$ M
7 e- _8 a' Y$ Y6 Y' G" i' M! z

; p! x4 x; o* M* h' V' O: W
  K2 S# a3 Y& F. @; ~: K! y' }% f3 u(11) 欧氏距离法
9 N, a, O" p4 U* |: r. `. ]9 o, n4 b: K- ]) U3 @, @
/ O, L) S" ?; N
: q1 F4 X6 X6 r/ N: d: a: ^( [6 G
(12) 切比雪夫距离法
# c6 x$ t7 R, ]4 i
4 e; X- O! V/ r/ b9 I( U# p, V" n, S9 P4 I7 Y& B7 G. |, c5 w( v

( E9 h; i* p" K6 G(13) 主观评分法% |8 S+ n" {3 k

; x5 \, Y  ^" `% `: D7 l; Y* A1 a; T
% G; k9 f) n0 {- m
! W8 J6 u( E/ KStep3: 聚类5 a* N  d5 M9 S/ v( m
所谓聚类方法就是依据模糊矩阵将所研究的对象进行分类的方法。对于不同的置信 水平λ ∈[0,1],可以得到不同的分类结果,从而形成动态聚类图。常用的方法如下:
9 {1 K* J% \9 _3 k: E" h9 m- J! j4 M+ X
(1) 传递闭包法
  U. _3 p: T7 n) ?' n从 Step2 中求出的模糊相似矩阵 R 出发,来构造一个模糊等价矩阵  。其方法就 是用平方法求出 R 的传递闭包t(R) ,则  t(R) =  ;然后,由大到小取一组λ ∈[0,1] , 确定相应的λ 截矩阵,则可以将其分类,同时也可以构成动态聚类图。' d( y: Z( {9 n: ]
& Z% e; v2 q" c- s) f7 I
(2) 布尔矩阵法/ F2 d3 f2 e+ |5 R* @
2 t8 b( ?( O% m' v9 {

/ H* [$ |! k4 m+ ?0 T- K  l3 ]' v; J" r) p0 u
$ \' X( \! N% x

$ K4 [6 U0 z9 `: @- E! E(3) 直接聚类法  v  R+ U. m3 Q- _7 p
此方法是直接由模糊相似矩阵求出聚类图的方法,具体步骤如下:
- v% ?$ N2 ^9 p; f3 c& f: s4 n" @2 G# B

& ~* e: x4 C0 i0 S
4 @8 `. X( t6 \* M3 模糊聚类分析应用案例1 K5 w9 k& M) n, X9 Z  T
例 15 某地区内有 12 个气象观测站,10 年来各站测得的年降水量如表 3 所示。 为了节省开支,想要适当减少气象观测站,试问减少哪些观察站可以使所得到的降水量 信息仍然足够大?
6 N4 ?5 x3 W; h/ h! k; G: ?" u% q1 m( \; O. R/ u. Z( _
# @, S. W; c3 H  G' _% j

0 F  ]% T; Y# N
5 q, Y( y: p6 F/ a/ K7 u3 c8 Q2 {% b, u8 D
解 我们把 12 个气象观测站的观测值看成 12 个向量组,由于本题只给出了 10 年 的观测数据,根据线性代数的理论可知,若向量组所含向量的个数大于向量的维数,则 该向量组必然线性相关。于是只要求出该向量组的秩就可确定该向量组的最大无关组所 含向量的个数,也就是需保留的气象观测站的个数。由于向量组中的其余向量都可由极 大线性无关组线性表示,因此,可以使所得到的降水信息量足够大。8 ?, |+ C, O7 X/ Z8 C7 m. h, ~  Y6 I! F

! l6 g# n- f% }5 c- L
" f0 Q% G  J" n3 S+ X5 n( O. E" ]" f- k, T
到目前为止,问题似乎已经完全解决了,可其实不然,因为如果上述观测站的数 据不是 10 年,而是超过 12 年,则此时向量的维数大于向量组所含的向量个数,这样的 向量组未必线性相关。故上述的解法不具有一般性,下面我们考虑一般的解法,首先, 我们利用已有的 12 个气象观测站的数据进行模糊聚类分析,最后确定从哪几类中去掉 几个观测站。
& N3 f: I/ v2 k6 L3 c+ @: A
2 ^3 R6 u) @. p1 E6 n(1)建立模糊集合
1 _$ E! F* T- o; d' x; y  T, S% [$ U. N% U! u9 H8 o
& M/ O2 y% L$ K' V7 R! |' F
; h7 |$ L# }2 I- F  a

) \8 i/ U  I( R" @+ ~# j
5 ?  f5 n3 a+ i6 w" C5 }) X- D2 v5 X$ V7 j# x
(2)利用格贴近度建立模糊相似矩阵
* g$ a/ f1 F- ~+ A2 W. ^) k7 X3 _
% ?( Z1 G; t9 h' ^8 _1 j/ F$ }0 k, t) [1 f- c' Y  y
+ Z6 N! d( r3 T5 U* e! u
(3)求 R 的传递闭包
0 b0 I: `6 s: Q" c( n% ?" u9 x+ [+ ^2 `
; Z+ C6 {  \1 m( }2 X) i

; O$ b% x  d# f1 o5 H) p2 {; W2 f其余观测站属于中间水平。& M$ E% s! d( s2 N6 U9 b8 j. [

# j; a# k( J0 H1 S. \) h(4)选择保留观测站的准则& I+ u6 ]+ X3 P7 l7 H3 b
显然,去掉的观测站越少,则保留的信息量越大。为此,我们考虑在去掉的观测 站数目确定的条件下,使得信息量最大的准则。由于该地区的观测站分为 4 类,且第 4 类只含有一个观测站,因此,我们从前 3 类中各去掉一个观测站,我们的准则如下:! i; _9 M: o7 W. V" i) W" M) \8 N

, v3 j, T5 v5 l% Q& @- O
( g9 D1 \. c& b4 r) E$ q- S3 _+ E+ m  o, y+ Y
2 R, X2 v" s5 \0 w" {  M  D
. p5 R: b3 P2 d0 I2 k
. h* _/ S) ?2 V1 z9 h$ U- \

3 D0 x: \7 X* H1 A: G0 u(5)求解的 MATLAB 程序如下:
& l; C% g9 h2 @; y
. X5 L4 E  E" f, [3 qi)求模糊相似矩阵的 MATLAB 程序7 g6 \2 j' p8 n4 I; V1 W
9 s' f: |+ q4 T* X$ n
a=[276.2 324.5 158.6 412.5 292.8 258.4 334.1 303.2 292.9 243.2 159.7 331.2
; k2 n+ y; U: v! x- V7 V( Z0 n3 S251.5 287.3 349.5 297.4 227.8 453.6 321.5 451.0 466.2 307.5 421.1 455.1" A2 W7 u) r' y
192.7 433.2 289.9 366.3 466.2 239.1 357.4 219.7 245.7 411.1 357.0 353.2' r9 d2 N$ X' v9 p
246.2 232.4 243.7 372.5 460.4 158.9 298.7 314.5 256.6 327.0 296.5 423.0
7 w2 D7 p! _0 o1 E3 m+ D291.7 311.0 502.4 254.0 245.6 324.8 401.0 266.5 251.3 289.9 255.4 362.1
( s  m! C( h$ a2 H* F, S466.5 158.9 223.5 425.1 251.4 321.0 315.4 317.4 246.2 277.5 304.2 410.7
8 }; V. T: O5 O& B258.6 327.4 432.1 403.9 256.6 282.9 389.7 413.2 466.5 199.3 282.1 387.6
# i7 Y; ]( v, ~; c* g+ {' V- i% K453.4 365.5 357.6 258.1 278.8 467.2 355.2 228.5 453.6 315.6 456.3 407.2* H0 c& \/ f9 ^3 ?) Q  z
158.2 271.0 410.2 344.2 250.0 360.7 376.4 179.4 159.2 342.4 331.2 377.7# G; d' M  ^) n2 Q. m+ b
324.8 406.5 235.7 288.8 192.6 284.9 290.5 343.7 283.4 281.2 243.7 411.1];
# R3 v/ E  d! m, Y0 s, amu=mean(a),sigma=std(a)
. p( \% n& B8 h1 w; Y" {for i=1:12. F& B8 [. p; V. P0 x' J' X9 B
    for j=1:12
# Y) S$ k8 \+ b0 y2 C        r(i,j)=exp(-(mu(j)-mu(i))^2/(sigma(i)+sigma(j))^2);' _. G2 m# X3 w4 @1 p2 S! z  z5 \
    end
+ _. v5 I: L- Mend" E1 ?7 \# r: b: F2 I* \9 y& B' y
r: c' e! }& ]" @1 r  L7 K2 t
save data1 r a
- R6 _6 V+ J7 t  N& o' i; c6 Z" v1 q& M' r$ g5 I9 B  I
ii)矩阵合成的 MATLAB 函数, p  L1 ]/ _- x( Y, `

* \3 D( b. B  W* R0 j, o% h* {' [, Qfunction rhat=hecheng(r);
5 v3 L0 `4 b3 {% T# i$ [1 c6 xn=length(r);, e& `# H& b$ A5 d
for i=1:n
( w6 l, N8 q! e% l' M+ h    for j=1:n9 r, j! D6 k3 Q  \
        rhat(i,j)=max(min([r(i,;r(:,j)']));
% v5 f1 A0 \, c  j- ~    end+ ~$ ~! e4 m7 B; F  g" N% _
end
0 G! v! n! B. t' w' u0 M. t8 U, d; J& V  M
iii)求模糊等价矩阵和聚类的程序  B/ E. `- R. u4 t4 Y1 O1 K2 p
% y) g# F0 \/ z* B
load data1
- o/ u2 ?# y( j: R4 qr1=hecheng(r)
! w# J7 j  m( }+ [r2=hecheng(r1)) r4 f( g" x+ M8 h2 M+ O
r3=hecheng(r2); S0 f7 O9 i3 S: w% j' v+ b
bh=zeros(12);& f6 s3 \1 }' M
bh(find(r2>0.998))=1 6 d& `) k2 x" k6 m, j# ?& h( |

, B2 }! C0 E& T$ o4 S6 `iv)计算表6的程序  编写计算误差平方和的函数如下:1 j) k! b& X8 i0 W# y' m: o

* U5 y  S& n$ C) x# k# Dfunction err=wucha(a,t);- G1 B$ X" V* ^9 l
b=a;b(:,t)=[];
) w7 D: `( y( smu1=mean(a,2);mu2=mean(b,2);
0 P: J! c7 j# S% @; l7 r9 Aerr=sum((mu1-mu2).^2);
8 I: a6 d2 Q/ m
9 ^* }2 l1 J+ T+ `1 q; ]  D) T2 q4 ~, p  L3 c) F8 ~# y
计算28个方案的主程序如下:
" w* z: z1 T0 f! }+ f1 u- [3 Y
load data1
8 A  n0 @0 L) l$ }# B. Kind1=[1,5];ind2=[2:3,6,8:11];ind3=[4,7];+ E* y! B: X0 k" ^
so=[];
+ p5 G$ W" n; s/ p# Hfor i=1:length(ind1)
; o+ T( O: E* x; k0 B( M    for j=1:length(ind3)
! ]2 t% _, ^5 D% m2 J1 D2 H& D7 n) i        for k=1:length(ind2)5 X9 r8 B! z7 J7 A/ k1 [
            t=[ind1(i),ind3(j),ind2(k)];% q1 B0 n$ f7 K9 [) q) F- w
            err=wucha(a,t);" j/ J% }: ~) h
            so=[so;[t,err]];
# u2 o* {; w9 J* j        end
% \) q6 X9 A( `" f5 [+ x$ F. }0 a: \5 R    end
3 _, ~% O4 t4 k0 Aend. V( j1 Q( d0 l8 B
so3 G- C/ w0 ~5 [- g
tm=find(so(:,4)==min(so(:,4)));; u* x& e1 p: d. t
shanchu=so(tm,1:3): N" g; M+ O; b9 p4 _! a4 u

( F+ ?! y& y0 J9 T' n4 l; u4 W( ~% B$ q% @. i
# E" g/ r% d/ `; R. _
————————————————
3 W4 `  \# G  x9 A9 G$ C/ e0 c版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
% J# R( u9 F! q8 T, F- p& C/ I0 t原文链接:https://blog.csdn.net/qq_29831163/article/details/89893908
1 G2 p* E; w$ P$ M3 H% b" Q  X% k& n1 p
7 u- [2 ^0 ~  Q& e$ {/ ^





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5