数学建模社区-数学中国

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

作者: 浅夏110    时间: 2020-5-26 15:29
标题: 模糊聚类分析方法
在工程技术和经济管理中,常常需要对某些指标按照一定的标准(相似的程度或亲 疏关系等)进行分类处理。例如,根据生物的某些性态对其进行分类,根据空气的性质 对空气质量进行分类,以及工业上对产品质量的分类、工程上对工程规模的分类、图像 识别中对图形的分类、地质学中对土壤的分类、水资源中的水质分类等等。这些对客观 事物按一定的标准进行分类的数学方法称为聚类分析,它是多元统计“物以聚类”的一种分类方法。然而,在科学技术、经济管理中有许多事物的类与类之间并无清晰的划分, 边界具有模糊性,它们之间的关系更多的是模糊关系。对于这类事物的分类,一般用模糊数学方法、我们把应用模糊数学方法进行的聚类分析,称为模糊聚类分析。4 U4 p4 n6 R/ d; l
  W0 }! ?$ P2 w" T( O9 j: }
1 预备知识$ M/ ~7 l) `- h* N$ k; t  {
1.1 模糊等价矩阵! v. S+ f# }1 l" \3 {9 o
# L% ^# M( q( ?
1 t* q  F) f! G: [+ i$ j$ Q% b( ?
  S3 d( X' |1 F4 c0 `9 c: _" c
1 t9 g! |( j6 E& {
n 阶等价布尔矩阵4 a* V, L, B5 u3 Z3 v
& s0 H2 q) w( W" M) M- k6 [2 h2 b

7 ?! ~$ i7 l% E9 R2 z1 N2 i
3 ]. k2 ]1 A- O模糊分类
0 e# p9 q( ]2 K4 H7 i5 o% n8 B0 H, a3 u2 d" d# Q/ X6 }0 P! l
7 ?$ w' \. l6 {" O" s
# }0 g' O% |- i  A8 V: p+ E. o
4 V# m* ]& ~' Q8 r3 N
- c' c% M' l7 p4 y- j3 i
' n# O" r+ K. ^2 A% K, v& {

$ V0 A. \( @: B( k/ I# {6 I3 h$ V6 }
& M3 Q0 ]4 F1 S# I

9 U, X3 K) o0 L- B1.2 模糊相似矩阵: @$ _" t  ?1 x1 E9 w# z
) [9 z3 h* M& t# v
# s5 ]: a$ }9 R" a
7 B. y5 @- @- o* z$ [! D8 A; _) J! R
" ?1 y% o4 F) N

4 y) H# g0 p' `% k( F& G% n# `' k, m- p' S- F" x9 h1 r7 w

* R5 h; c5 t4 s% U) f3 T. E5 u9 V* i1 {# Q5 A* s
2 模糊聚类分析法的基本步骤( v$ Q. g% }" Q
Step1: 数据标准化
' d# f* C# D! }  K$ C( m7 B
3 R: K# y( v, l& f(1) 获取数据
7 s3 j+ O3 M+ h( ?/ W% Z' E, P1 _) S+ q% n0 C: ?

) c1 w$ c  @2 [1 @$ M/ b; \8 X  [! G4 [  o& g  Q2 t
(2) 数据的标准化处理2 B" \2 N  F& z
在实际问题中,不同的数据可能有不同的性质和不同的量纲,为了使原始数据能够 适合模糊聚类的要求,需要将原始数据矩阵 A 作标准化处理,即通过适当的数据变换,将其转化为模糊矩阵。常用的方法有以下两种:' w) c% |2 _; e5 u5 `. [
. G* Z) c" E( [, l- k0 [
① 平移—标准差变换( t4 \6 Z1 B1 w6 C+ t: a

. H7 C# h* [3 U/ m8 }, q
3 Z& o" j0 K% r, \: T# `, d4 {- z% ^7 g1 k  W6 |  ^; [
② 平移—极差变换5 W! F7 F. y, Z" L

2 G) e: j0 n# }3 g: `0 F+ q
, U% G7 v' S/ D  N  J( z8 ]
* i; {( o/ E* u1 i$ t5 FStep2: 建立模糊相似矩阵1 U- @% w8 T6 l$ g! I: ]! E
( M% v9 u8 J$ s7 _: z. k2 }/ D. f
' X, s1 X. S% o: f. D/ N( H4 h
2 s# ~/ u. S" o* z1 D5 T8 D. d
(1) 数量积法7 ~: V5 T9 e1 X
, c: l+ L2 `* l6 `; |! r
6 |/ D, v/ K! W/ i

0 z# A% n4 o4 t4 P2 r! _+ T! ~% a+ X; _/ c' n2 e
(2) 夹角余弦法0 u9 ?, ]/ ~$ l3 q) ?- u; O0 U

6 e, F, d$ D! f% ^' u: @
& K' U( Y; J  Y3 t! u" ^; B# M2 P: U- J; v- Y4 D* I4 U) |
(3) 相关系数法
: c8 u/ y( ^) J& N- x7 r( ^: J& U# S# [8 T0 `7 g
( t; X0 |3 l0 `6 X0 F* \( l/ Y6 e
$ y. O- o5 o( C; E9 L4 o9 K
(4) 指数相似系数法2 e8 _( ?0 {  a, y% b
( G$ ~, m7 y- n( d5 M9 r0 @; A
# @6 U; s# U8 }# x7 J1 z

9 ]6 B. J) m0 w8 T& L4 e+ K8 A(5) 最大最小值法* U  Y' ~) h- i) `* I. i
                  式中 ∧ 为取小运算min,∨ 代表取大运算max: X8 L. e% Z9 Y( Z- z
' b  V$ e: P! h! q; c- F! w
! d% y% H2 D, ^0 i
; D! K4 B0 j7 [4 ]) W1 G
(6) 算术平均值法$ L3 }/ U- q! `1 a1 k8 s

8 j( I; l; u# W9 G
7 s* p. T# N/ f; M# i/ L& b
* ?- f7 X% P" C+ r8 I(7) 几何平均值法
+ a7 H- C0 g4 X+ ?3 Y! G! D# E2 n2 }+ k9 u- `' A

6 x. D8 A" Y4 Q6 |. N+ w  B9 c. ]; i# O6 @  z7 e( l
(8) 绝对值倒数法* {4 ^+ D4 D( l
! b& b. v$ [$ ~; B

& g; T) b  m( Z$ N; d9 E% a5 p+ b- g3 R/ ~# E- f
(9) 绝对值指数法
4 s3 P  j( ]( o; g8 I* h
1 j  _3 G" ^4 g  m( Q6 U( E, ^+ E5 D& U5 q9 z! M7 M
2 l( _: P# K' O5 L& M0 z+ X
(10) 海明距离法
# k, l1 S. k# I- ], S  ~% y- z$ w5 _. F& W* S+ q

% ^3 {3 a0 A6 ^( A# G+ U9 `
* F0 X8 v# r5 _( G  V% g& A(11) 欧氏距离法" z$ [& m9 w* ?6 F

: u& T+ B* b' y5 Y' C' i, W
( R- ^9 T6 U' }1 e1 M6 a' c) [/ E4 ^) ^& s  W/ ?
(12) 切比雪夫距离法
0 h$ B& z) l  w( _7 K; z0 ?
/ b" G# R' s3 w9 `- S$ c4 f& i$ V- f# D* T! L4 ?5 s

& Y( L2 b% J( e2 j(13) 主观评分法* Q; X& m, D" L4 L
1 n* B6 C" {  A

. W4 {% ?. R, |9 l1 H
) y- `- F) ?; }Step3: 聚类: ~* o& c4 m; A/ i' c& l9 |
所谓聚类方法就是依据模糊矩阵将所研究的对象进行分类的方法。对于不同的置信 水平λ ∈[0,1],可以得到不同的分类结果,从而形成动态聚类图。常用的方法如下:5 j: [% f( K/ \* G
, t- X1 K" `& N9 d2 t3 [: L: K7 G
(1) 传递闭包法/ q1 t+ p+ F1 q( `$ E
从 Step2 中求出的模糊相似矩阵 R 出发,来构造一个模糊等价矩阵  。其方法就 是用平方法求出 R 的传递闭包t(R) ,则  t(R) =  ;然后,由大到小取一组λ ∈[0,1] , 确定相应的λ 截矩阵,则可以将其分类,同时也可以构成动态聚类图。, g9 m0 N5 f" c' n( M( v( q9 ~

; [, P) ^( o: b# z. y(2) 布尔矩阵法2 Z1 B+ d; O" n
! I9 G8 N, H1 V! Y/ H5 Z' B

. ~& @* V/ b3 F. c/ A1 ^
0 g4 ?' e% F8 M  y( `+ R( `
! m/ t7 d5 r1 G* w1 C: N$ x
5 r; `2 {) g6 P8 T7 x& C  ^7 `(3) 直接聚类法
$ x6 I( Z. I) J+ y, i此方法是直接由模糊相似矩阵求出聚类图的方法,具体步骤如下:
) l9 w2 A. P) v: ~9 a) a$ j0 i  G" U
8 `/ r6 M8 F# q% a) S/ {' w. E
+ {1 i! C. h! P/ l
+ X- t* t& ^% D+ B3 模糊聚类分析应用案例7 |$ R3 U" p* o/ g3 U  f! e
例 15 某地区内有 12 个气象观测站,10 年来各站测得的年降水量如表 3 所示。 为了节省开支,想要适当减少气象观测站,试问减少哪些观察站可以使所得到的降水量 信息仍然足够大?
% O! ~& O' K6 w2 D7 B# m5 ^  E
, o6 a# O) D3 Y# i2 |. E( {' x+ _- v5 D& H3 q# X! H* o, S

" j& r& @; K6 ^: T* u: S' V- t$ b

( F8 x, r7 r' p5 Q) N解 我们把 12 个气象观测站的观测值看成 12 个向量组,由于本题只给出了 10 年 的观测数据,根据线性代数的理论可知,若向量组所含向量的个数大于向量的维数,则 该向量组必然线性相关。于是只要求出该向量组的秩就可确定该向量组的最大无关组所 含向量的个数,也就是需保留的气象观测站的个数。由于向量组中的其余向量都可由极 大线性无关组线性表示,因此,可以使所得到的降水信息量足够大。
  K% n# [+ ]1 F3 N  V
1 i) N! d% P- p* q+ @: y# }# r( B# O- x) d

5 S3 ]' O, E+ i' S- g到目前为止,问题似乎已经完全解决了,可其实不然,因为如果上述观测站的数 据不是 10 年,而是超过 12 年,则此时向量的维数大于向量组所含的向量个数,这样的 向量组未必线性相关。故上述的解法不具有一般性,下面我们考虑一般的解法,首先, 我们利用已有的 12 个气象观测站的数据进行模糊聚类分析,最后确定从哪几类中去掉 几个观测站。
4 d3 G$ X/ |5 m3 c
4 H, q" _* q0 Q& \: T. W(1)建立模糊集合
, w( z4 c2 l* f; D& }2 l7 D/ ^, O: W7 v) G4 c4 R5 ^  Q
: V! N- _$ {5 W- L' n. P8 }8 b( X

0 r8 D' @* C1 v/ f6 E3 i1 K2 a/ K$ Y0 p
7 q% t$ s3 l8 K) [: r" j; h6 N3 Q5 D1 s5 ], S
; Q& X7 g' l, E" P! @0 b- K
(2)利用格贴近度建立模糊相似矩阵! ]& s. T+ m& {  k/ e3 Y

3 Q* d$ K: T9 m  X$ K& h
7 ~' q; D; \3 ]( r# U) `# f$ {% s7 {! N! _% E
(3)求 R 的传递闭包2 N% n: [0 I0 ^' w' q0 l; c& Q

* [9 p- T! K4 r6 b  c2 p8 D+ t- ^( B! ]( T

5 a$ }/ p: @( Q- v2 k其余观测站属于中间水平。7 S( [2 r& \3 @  D) r( E# _

. f; T7 m! k: `0 k(4)选择保留观测站的准则
  p  b8 T0 r1 H+ [8 l7 G显然,去掉的观测站越少,则保留的信息量越大。为此,我们考虑在去掉的观测 站数目确定的条件下,使得信息量最大的准则。由于该地区的观测站分为 4 类,且第 4 类只含有一个观测站,因此,我们从前 3 类中各去掉一个观测站,我们的准则如下:
, I. v3 `# j) c; w$ H: ~  Q' y5 @& G1 l- L! }3 s

- L$ [4 _0 U* [) Y) Z% N; a9 p8 G( i! \0 R

9 B% K4 t; m2 M1 t! A1 u
6 [9 a8 O, j& O0 ?6 D
0 P, U" Z# K- ~# x* K3 y* ^% F  e5 `4 s7 A
(5)求解的 MATLAB 程序如下:
; D% S; I: d$ k. J) o
9 X! b+ {. Y0 G: Si)求模糊相似矩阵的 MATLAB 程序# u  h7 y; ]; [/ A
7 _- o# {' l4 m0 i0 ]3 Z
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
: J6 B& W# y: X8 Y! R+ ^' B, }0 n251.5 287.3 349.5 297.4 227.8 453.6 321.5 451.0 466.2 307.5 421.1 455.1( J* ~$ ?$ k4 [
192.7 433.2 289.9 366.3 466.2 239.1 357.4 219.7 245.7 411.1 357.0 353.23 J5 ?7 i, W8 y
246.2 232.4 243.7 372.5 460.4 158.9 298.7 314.5 256.6 327.0 296.5 423.02 V2 i$ R( p8 O( g/ Y+ I
291.7 311.0 502.4 254.0 245.6 324.8 401.0 266.5 251.3 289.9 255.4 362.1
0 g( {  W  U1 z: L# u466.5 158.9 223.5 425.1 251.4 321.0 315.4 317.4 246.2 277.5 304.2 410.7) F) B, A) m- e/ M& F4 f
258.6 327.4 432.1 403.9 256.6 282.9 389.7 413.2 466.5 199.3 282.1 387.6
  T$ r2 T* C# W; C/ S6 a% o* E6 h- r453.4 365.5 357.6 258.1 278.8 467.2 355.2 228.5 453.6 315.6 456.3 407.2
/ S' l2 \- \$ |; m* Z' |  H; c158.2 271.0 410.2 344.2 250.0 360.7 376.4 179.4 159.2 342.4 331.2 377.7
! P) F' ^" C& g* j7 Z" _324.8 406.5 235.7 288.8 192.6 284.9 290.5 343.7 283.4 281.2 243.7 411.1];
& x4 M; a. g$ Z) f$ ~# u5 t( {mu=mean(a),sigma=std(a)
$ r6 f  }+ q2 S' wfor i=1:12- n" o  D; a0 W
    for j=1:12
$ R8 e  f6 c7 w' o        r(i,j)=exp(-(mu(j)-mu(i))^2/(sigma(i)+sigma(j))^2);2 Q8 ~' n- a- J6 i3 ~7 Q  Z
    end
. ?6 J1 ~$ _, l/ W! B! S" ^end
7 @" Z- d  W/ Q4 H& L# Q. vr! n! M% u; l  v2 V1 |1 l
save data1 r a
8 E8 k# y* B+ f& X" j- q+ s' e" C. T& n+ V
ii)矩阵合成的 MATLAB 函数
7 O8 Z% @6 F+ J; J2 h
4 b1 f4 |5 x% s1 F6 G0 @; Tfunction rhat=hecheng(r);2 t" \# n2 [& s- C1 P6 S
n=length(r);
7 @2 b5 r6 H' |  I! }7 _for i=1:n
8 C6 Y2 u: E3 V    for j=1:n
5 N" r: L- ?! }        rhat(i,j)=max(min([r(i,;r(:,j)']));) c* p9 j3 b; K, \- |1 k
    end
4 _1 u9 X3 h2 uend
; l. Q  H9 l! W. I/ Q) V
& ^3 Y% ?$ |2 z: x9 ^iii)求模糊等价矩阵和聚类的程序; }& p* b6 S6 @) L" A

2 l6 i9 |7 b2 _load data1
0 c9 j4 ]- D/ u; w  W5 |3 Fr1=hecheng(r)
& d! X' |. U& K0 j, Mr2=hecheng(r1)! n7 J# V1 Y' v! {2 q! C
r3=hecheng(r2)
+ b7 O0 @6 s+ r0 E$ ]/ {bh=zeros(12);7 V: _( Z- B0 G1 Q, R. Y! U
bh(find(r2>0.998))=1
+ `  C4 m% K8 A* K* ?6 m
& U; Z+ L( U# Q4 i) W3 g7 viv)计算表6的程序  编写计算误差平方和的函数如下:  }3 {! c- k# F! r* u

2 \# }! A6 v; lfunction err=wucha(a,t);% W3 I; ^, V/ `* v, e
b=a;b(:,t)=[];  J+ x& M9 Z0 |
mu1=mean(a,2);mu2=mean(b,2);
5 ^; ]. G3 {: serr=sum((mu1-mu2).^2);! T, _) U5 j' @- W/ Q; v  Z

# e9 g  r: Z; h5 b# h& E5 x
; p. f4 a4 _7 n' j; C. k0 i$ R计算28个方案的主程序如下:$ O5 _7 x: K: Y' i* U

8 g0 \1 H! Q" U7 p. mload data1
$ Y$ W& n( [9 C) S9 W+ @* I. uind1=[1,5];ind2=[2:3,6,8:11];ind3=[4,7];" i2 V+ |& i" Q1 |, h) M# y
so=[];
3 [( ^4 A% W) z3 \/ u4 {- zfor i=1:length(ind1)2 h' n5 A6 n: U/ @' t2 F
    for j=1:length(ind3)
- J" r3 J* u7 ?, d7 f! Z        for k=1:length(ind2)
0 j" }. V) S7 ?0 F% @1 U2 u3 c            t=[ind1(i),ind3(j),ind2(k)];& g3 C& B1 e! j7 a3 b. y( }2 z
            err=wucha(a,t);; r- J3 M! v5 C. l! w, w. B* M* r
            so=[so;[t,err]];) q* o2 Q  x6 J: o, z  O
        end1 e0 _* |6 x0 W8 E2 ]7 R
    end
9 t8 ^, J) W4 |  w- J! T  E. bend- m, B' V; v+ {- @& `: N2 v6 T
so5 v! {) n+ Z$ B3 D! t2 k
tm=find(so(:,4)==min(so(:,4)));
* o7 O% E) G/ t- C" ?shanchu=so(tm,1:3)' @% X" T: c2 T; v5 F

* I5 r. y6 `- E/ o  n+ n& W) P& E4 n( F& w0 f
) [" ]! Y# ^# q7 c" ~
————————————————9 }/ y3 ?" |+ X( Q) m; ~; w
版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
1 m+ H1 u" R5 T, [* G9 r* G原文链接:https://blog.csdn.net/qq_29831163/article/details/89893908
. {7 r2 S! V. c5 D- F" T, ~# I) l
2 z/ B8 @# _- p





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