数学建模社区-数学中国

标题: 【数据聚类】第八章第二节:谱聚类算法之切图聚类、算法流程及其实现 [打印本页]

作者: 杨利霞    时间: 2022-9-12 18:41
标题: 【数据聚类】第八章第二节:谱聚类算法之切图聚类、算法流程及其实现
【数据聚类】第八章第二节:谱聚类算法之切图聚类、算法流程及其实现
3 r( U0 t- k+ c* H0 x
  n) w( J2 u/ o4 d本文部分内容源自刘建平博客,在此基础上进行总结拓展, X- U5 ~3 S) q# H9 g
  @7 ^+ M, ~9 n
原文链接7 u/ Z' O4 i! y0 Y6 f2 ]: m+ t
文章目录: F# _" I5 Z- Q0 ~4 V" A' }* p
一:谱聚类与图划分8 r$ }7 o, {! o% }3 n9 X  `) k: C
(1)比例割8 F, v, {. G2 z- ^$ E4 ?
(2)规范割(常用)
" ]: h0 S( S8 B* O二:谱聚类算法流程
  w: n4 W/ i; ~- I三:Python实现
$ a* `  i! M* p' n. M7 B- u四:谱聚类算法优缺点
9 P# h+ ?, a3 G3 O' i(1)优点
* ]# }6 @  t: l7 B( k(2)缺点4 v# G& h3 _) ]# O
一:谱聚类与图划分5 ?# Q* I. O+ ?% \, {9 U
无向图切图:谱聚类算法根据数据点之间的相似度将数据点划分到不同簇中,因此将数据点映射到无向图之后,可以转化为图划分的问题。对于无向图G GG,切图的目标是将图G ( V , E ) G(V,E)G(V,E)切分成互相无连接k kk个子图,其中6 H, A! {! I5 K7 e
' z4 P- f" `  _* G. Y+ g
每个子图点的集合为{ A 1 , A 2 , . . . , A k } \{A_{1},A_{2},...,A_{k}\}{A ( [" Y) P# h7 C9 |! L
12 [) C! U$ j+ ]

: J( M7 J8 w: P6 r7 a ,A ; E8 a# A. X  x; S% p$ `$ }
2, z. x6 h1 t2 [7 x

2 G+ N/ V! d/ l9 G ,...,A $ K: Y( [# F6 [# ]& Q
k
2 t5 _# ~' s) V- ^; q
  |0 [, b/ s" Q6 `+ e% f },且满足A i ∩ A j = ∅ A_{i}\cap A_{j}=\emptyA ! h. m# t6 m5 y$ S
i
; U/ D: C+ J: Q$ [) \
2 u) t" m: _* h* w7 d ∩A
% m% z3 }3 Z* j7 j$ ?9 f/ q1 r; M# rj
8 ?) j; G! h8 Y! L6 o3 [; {3 P) o
=∅、A 1 ∪ A 2 ∪ . . . ∪ A k = V A_{1}\cup A_{2}\cup ... \cup A_{k}=VA ' D5 ~9 m, E7 y
1
' {+ a& Q. T* g/ h5 X; `
! W' J+ y+ n% s' t2 \/ _: W9 K2 { ∪A ' s7 L6 w- T* U, u6 Y: Q: R* r
2
+ t) x8 R$ u  u2 h! N
0 o& J/ i1 {# w ∪...∪A ; D. M+ [8 G% r" |0 V* x- }
k
  {5 k$ _% R4 Z6 i) u; N
2 e- p# u; \4 n2 R7 h* G" [) R =V6 h' H5 w+ i" b5 c
对于任意两个子图点的集合A AA、B BB,我们定义A AA和B BB之间的切图权重为W ( A , B ) = ∑ i ∈ A , j ∈ B w i j W(A,B)=\sum\limits_{i\in A,j \in B} w_{ij}W(A,B)=
% P) ]3 `7 ~/ X- L7 \( z5 x% \" ii∈A,j∈B
5 z9 N6 |! [, X4 l. a1 K& \
! X. E, c! j7 j. T! q. L+ C. g1 W' b& M# G5 _
w
  v) T1 h8 [$ A$ aij
  n) |5 t* k& v8 r. I$ \4 W. ~9 [8 J% f
5 J9 a; v4 Z: |. ?
对于k kk个子图点的集合{ A 1 , A 2 , . . . , A k } \{A_{1},A_{2},...,A_{k}\}{A 6 H, X* p: \3 Z5 h7 o
1/ [9 [2 y) `; [+ h5 J

& K, B8 W8 s& [3 N ,A
8 I' g% F  e3 o2
: q0 x+ e7 q& \1 K+ h0 f5 V4 m# \( W) A8 A. C
,...,A
! H1 d1 z8 n9 A) dk4 }7 w1 m! B8 {% w2 ?9 |: A* _
9 B7 E, i! K& z1 M
},定义切图c u t ( A 1 , A 2 , . . . , A k ) = 1 2 ∑ i = 1 k W ( A i , A ˉ i ) cut(A_{1},A_{2},...,A_{k})=\frac{1}{2}\sum\limits_{i=1}^{k}W(A_{i},\bar A_{i})cut(A ; O" W" t  p  h1 X8 A9 T# z
10 E+ h( d) V) m+ j: D0 {

: `* f& i$ Q! V' S. p! v  T ,A
( ]& f: E- r! h& y: H26 h) l" H: k; ?5 ^6 r3 @2 L& p# d
; m. N5 X. {- L0 _% j# [) A8 R
,...,A
1 |; Z7 J' @- e' \k) Y0 n; c+ l8 w8 b

& e% E1 l% M8 X* { )=
) c! S$ Y- b9 R6 i1 I5 }' ~5 B2
) `( g1 e2 B5 {0 E# z* y$ _14 R& b. }6 F* U4 k

( w: V+ H# N. T
$ E( S1 w6 o7 t% F: K  @0 Yi=13 ~2 R2 r2 [9 i6 _# S
+ c' D) Z, _) C# \
k
; B& z8 ^" F/ c5 u! N. i
- Y5 m4 S- y& U' s+ F W(A 4 m. L3 R2 K+ W3 K' t+ r
i5 N, I$ j/ Y% s% b; x  L7 e5 ~
8 \7 k; u1 T2 B# J
,
. p/ j, y6 R. i  g8 V( L% p2 s! a9 s; RA
5 Z7 Z* {  e3 q! \+ a7 C3 zˉ* F' d5 W" G, r' X3 T6 Q/ v! U7 W

2 x) l8 V( M5 ^, i6 g, c. Di6 ^* ~6 J# Y- U0 H# ~. ^* z" H
! G% _  A* J5 a: s$ T7 `
) (其中A ˉ i \bar A_{i}
! F( u5 B& v: a8 n: |/ BA
7 K$ |9 l2 @: |ˉ4 q% J. `& |1 V; w, I2 p1 D' j; I3 S

* P# v8 o5 v$ |+ V# t" p( u; A5 Xi2 v  }) c* a) k
2 k2 k( P. C* {/ o5 F
为A i A_{i}A . t# }( N3 ]/ q( g( t: X% Y# q
i
2 N# @$ @% M: [+ @7 Z% |! ^
7 W9 Y" Y. H/ I, B 的补集)
3 g/ q. R0 X& I% ~可以看出,c u t cutcut描述了子图之间的相似性,c u t cutcut越小那么子图的差异性就越大。但是c u t ( A 1 , A 2 , . . . , A k ) = 1 2 ∑ i = 1 k W ( A i , A ˉ i ) cut(A_{1},A_{2},...,A_{k})=\frac{1}{2}\sum\limits_{i=1}^{k}W(A_{i},\bar A_{i})cut(A 3 u- f# }2 y+ s# Y7 N8 Q) h
1
' G8 Y2 C7 m" K4 A9 v. P
4 i! F) \5 ]( l* L$ J ,A * Y! r$ b8 e' k0 |1 o7 U. G9 X; G
2
/ r! H- a8 M/ }" j1 ?; p; `  O; h" J4 ~7 X4 l  g' u2 x
,...,A 4 I4 E$ c' C! r6 k- L% u  K9 m7 j
k
/ D7 h$ ?6 W. S- s
, g+ y) ^' k$ D: i$ ]3 J; ] )= 1 }- _2 {* V, g5 A3 Z0 t, m
2; z2 a- n) U6 ~! T
1* x; D; q3 t0 x' t9 Y# {4 f0 v  g

4 f, O5 C, q! Y3 h9 k, h
8 t7 ?- M' v& m4 Ri=10 u- D+ g% J3 T' U0 R: B
9 E" m+ Y  e. s3 L' m
k$ N: D7 t$ V. R3 h6 H9 {5 R

( L3 p  i" [* A( I1 w1 c W(A
$ j# t, u% ]* }* ~4 p- B6 si0 R% I' I! ?) _3 ^4 N

" |& ]" X4 U0 f8 q ,
0 M) k& u4 f- C4 _A
( w" l6 A9 Z5 s& Xˉ! z4 i2 d0 ?5 @( t0 L/ X) {

+ l& R& n3 c: }8 ti
* ?0 B  a' m/ A7 ?7 A5 T% R& e- a. x- A' P# n
)在划分子图时并没有考虑每个子图中节点的个数。所以在某些情况下,最小化c u t ( A 1 , A 2 , . . . , A k ) cut(A_{1},A_{2},...,A_{k})cut(A . B3 J# @) [  \" ]$ y" t
1
& L. s& u4 N9 {/ t+ i! @
: O6 V9 P0 w2 X% f ,A & f% A6 b+ V1 T$ c9 u) J
2
0 _/ E6 E# c. X$ M: c  A$ p8 g3 u8 O
,...,A $ F1 W7 e9 ^+ w  t, j
k# T0 n8 A' ^+ h! W4 x5 ^0 o  D
" Q7 t( O/ @$ t  J
)可能会把一个数据点或是很少数据点看做一个子图,导致子图划分结果不平衡
9 N8 B4 L6 R# x* J$ s+ t0 h& w, x* i# G+ m1 M' t- ~: A9 K, {
例如下图,选择一个权重最小的边缘的点,比如C CC和H HH之间进行c u t cutcut,这样可以最小化c u t ( A 1 , A 2 , . . . , A k ) cut(A_{1},A_{2},...,A_{k})cut(A
8 F, N4 V+ t; f7 x0 A/ D6 i2 I! m( @1
/ {: S! t) X3 C2 F! w! ~
9 ?; N9 k1 R. Z8 J6 W$ x, q ,A
$ ^! a- [$ v3 J( k! X2# o7 N; ^" |7 Z5 ~1 {

1 u$ n+ D# p. Z ,...,A + B% L& J' c9 G! N% V* x6 l
k) y% L  L' N6 p6 o9 Y* f

% s3 Y: J5 J- L2 m0 W& a )但是却不是最优的切图  s6 g$ ^" r' `6 D( u% f" e

7 D5 D: E& Q" a1 Q为了解决这个问题,会引入一些正则化方法。最常用的两种方法为比例割和规范割* E' t! ~% q$ }  K/ W# C
2 d: |% J% Y5 r5 F% [( ?" G9 X: u( s
比例割:R a t i o c u t ( A 1 , A 2 , . . . , A k ) = 1 2 ∑ i = 1 k W ( A i , A ˉ i ) ∣ A i ∣ Ratiocut(A_{1},A_{2},...,A_{k})=\frac{1}{2}\sum\limits_{i=1}^{k}\frac{W(A_{i},\bar A_{i})}{|A_{i}|}Ratiocut(A . \0 @  O9 Q. n( K+ a$ t
1  y$ i) p5 U* A. |, G4 e' [

0 Z& ~; A6 q+ ]8 s7 f# } ,A
+ l+ l( h0 r* D- e! w2
8 c) b4 @* f+ y6 U/ b+ J% O9 z1 [! w/ e+ O4 h) h% j/ V3 {# \
,...,A % L8 r5 X3 C% r
k' @6 g% z; h; b) q  {$ k

; c4 L2 L/ a( U  N( O5 l( p0 Q3 c )=
( F+ T1 z) p3 u- S9 x; ~( d2 L2
1 Y- I& g2 w5 {, h& `4 A& L10 u$ f" g( i( r9 V% N$ m( y+ n2 m
8 ]7 u0 h7 X9 |! L+ T' p
2 T9 v  ~1 ?9 h7 q  v3 u
i=1. w( J' e9 A5 V! C
- A6 L" n5 m6 a% t! P
k
/ v: N' i7 d6 t; ~' U( z" k1 z# a% l$ @/ B- A" v& d3 i, n
2 [  m, t9 l+ C5 k  M# L& n
∣A
6 J9 b$ g8 ~& Z/ R, b5 j1 v/ Gi0 w7 u1 V$ ~) n; F

4 |' c- j. f% ^0 e; I+ E7 b3 v0 V* F6 `+ i
W(A & H# D0 m1 o4 `& y
i. v+ w# s3 \+ {1 C- K2 f
; i: ]9 {- X: `6 ^  \& _
,
6 D9 l1 _0 l( w4 Q4 m* W3 s/ bA* j; V" o7 Z+ D  P
ˉ5 d9 t5 d1 G3 L/ c0 n8 K

% e5 Y0 h  G. q! T: wi
; Q( u- s9 k0 d4 K- Y" @6 X8 p: F4 f* g8 |; Y
)
' f* }2 ~0 Z* B2 C" A' U
& _6 g( R, C/ u  I4 Z
  r5 Z+ b" n2 B2 l& ]规范割:N C u t ( A 1 , A 2 , . . . , A k ) = 1 2 ∑ i = 1 k W ( A i , A ˉ i ) v o l ( A i ) NCut(A_{1},A_{2},...,A_{k})=\frac{1}{2}\sum\limits_{i=1}^{k}\frac{W(A_{i},\bar A_{i})}{vol(A _{i})}NCut(A ' R2 r3 G' n/ H8 q4 s# q
1
) R, m( Z3 a  g3 b( j/ Q( u3 }  e& S" h
,A % [; {2 a# K. Y" C) |
2# e1 [% W9 K% v. g; O

, s& D5 n% Z1 T ,...,A
, \- A3 x) h: r$ w( G3 c2 P( ek
0 u; F: j0 s7 N" F, m; y- d  l% u3 G+ `# a
)=
- f! b. T* C3 T& ?7 T1 r2
9 z" K1 S7 v) Z& a1
* r) U/ W0 y& E- V/ ~+ `9 A' {! V) c1 K

1 }  x1 _( B% \2 }i=1
) r0 Q  c; V6 U- O) u; x" I0 I  M, Y/ s! Q
k. K2 I7 `5 o  Z. r7 j

' [8 ]2 K% E+ H! e: k
/ v4 ^/ q& X5 N$ p* D2 S8 g( fvol(A
0 t, W4 p0 ^1 g6 \8 `( Z6 yi
! ]" Y8 Q) D2 f
6 ]2 u+ f" S$ w  @. y3 W1 a )
5 ?5 V, Z7 f2 G+ eW(A + n/ M, Q; x; z* \
i
# U9 X4 @# @0 s8 V" ]) v8 a6 Z/ f' R! A& }$ u9 x6 v" q
, - {: I; S/ o0 F. M& [& C
A$ b& e6 w5 T$ Q1 a5 b
ˉ% P0 N) N5 b) z
0 k* r  h( d* M4 t' a) V
i, Y+ T$ N' a; n0 ^

  j4 R0 ^; [) W  x8 C, i  k; @ )9 L5 z0 A' Q2 I9 y$ y& }+ f. `

& v; o4 ^1 Z. ?0 t/ u9 i/ r+ T3 C' r+ K2 m+ H) z3 N8 }/ S! h
(1)比例割5 Y8 u# o4 d/ }: M) L/ m/ F0 F/ Q7 f
引入指示向量(点击可查看指示向量定义)h j ∈ { h 1 , h 2 , . . . , h k } h_{j}\in\{h_{1},h_{2},...,h_{k}\}h
7 P6 _) |# O2 u9 Q- vj& q+ ]5 B! J5 ~& K" u6 X
" u; p3 G$ T/ A8 R" r# ]. S
∈{h / O* J7 _7 y* V  \
1( d: {# d1 F3 D0 k

) H- ?& \: M' \' k" S ,h " O9 h, X8 f" i" j2 L& \/ s4 W
2
& y- z# _6 [9 v- H: H& R8 W& S/ G! `. Y
,...,h 8 ~: n# b' _/ W. [. C  {, S. Z
k
6 t+ A9 k3 Y9 h5 Y- s4 Z( s2 G3 @' z5 d" |- @
},j = 1 , 2 , . . . , k j=1,2,...,kj=1,2,...,k。对于任意一个向量h j h_{j}h
. q; O* i6 U0 I3 \5 j% `) m4 Bj
4 w1 [7 A  x3 W# V! B/ g0 ?9 N8 G' u2 ^
,它是一个n nn维向量(n nn表示样本数),定义h i j h_{ij}h / w5 L5 q1 F( R# \( y# b7 x% v
ij: {- \( v& ]/ W. d! ~; {

7 c2 r( e6 d+ m8 c$ A7 f) Z% a 如下0 C* [- {. r4 Q1 b5 {" W

$ l) A7 J, ]5 I- d( ih i j = { 0 , v i ∉ A j ∣ A j ∣ , v i ∈ A j h_{ij}=: c4 p+ C. k) P% `. @. L
{0,vi∉Aj|Aj|−−−√,vi∈Aj1 ]! L, ^5 h! W4 l) T- k
{0,vi∉Aj|Aj|,vi∈Aj
; P$ C( N8 F6 i3 A3 h" j# g. K* eh
) L: c* x8 W: }2 l+ o5 E4 l, t! Nij" U( x1 S/ W. @# k1 ]

( K' M- l9 f+ x' s2 ?  S& t1 K. M4 o ={ ( o. u" p% H1 W3 }7 _
0,v ( g6 x8 d7 r4 j; N" E1 G2 u
i7 X/ e' u2 K: u) S5 h
4 h9 U. p7 R" R& [0 i1 d8 z0 E* a5 X" F

% _9 i  ]8 M7 |" v& n3 x2 `/
8 z- L0 ~% q+ I; {0 S2 uA ' m+ ?' D; \' h; a
j
! b+ F6 y/ u3 e5 K  ]7 c+ B9 C9 w2 _# z, {

3 @+ u$ n" q- m9 R4 R  \∣A 8 c1 k, T+ x* g3 ?( F% [
j
5 g' _7 L; b7 U9 D+ D  U0 @- f$ K0 A* Y/ R' C( T

; f" C; Y5 s! i( E1 R! e$ A. |# Q- C) t3 U! `# r
,v
7 X. r/ w( ^5 D1 Ti" K" ^: }, I9 w3 H: Y& E( u1 p

- G- ~$ f( m9 ?" | ∈A 9 k; c  x- J& Z, A5 G6 y1 W/ }+ K
j
, z6 V# v; O3 [
  J% B$ ^9 D) w' A3 u* H+ R5 H; h! }; O7 W3 @% F" \

& k6 {# K( h; ^( F. r5 ?+ a+ L- P+ ?% `- P5 j  ~) R( w

$ p- f4 M% q, [1 j* c* m于是,对于h i T L h i h_{i}^{T}Lh_{i}h - p3 ~# }/ I7 E7 s  Q! u; l6 }
i8 R% r- A* p) M% C: k
T/ e2 N* a  y8 l) J7 K1 r! T1 ^
$ n3 \$ C7 @* n& J( ^, h2 b0 s
Lh & S- |# b  o% x( V8 d) n
i( f! _4 v. Q) k* B! Z0 F9 M' C0 A; J

3 B- b) _$ O/ \# E; r& z ,根据拉普拉斯矩阵性质可知
0 T" b4 Y% C* W' s  H5 O
; [$ ~! p3 N/ G: ]& Y7 ^+ B对于任意向量f = ( f 1 , . . . , f n ) T ∈ R n f=(f_{1},...,f_{n})^{T} \in R^{n}f=(f
9 ?) _: {' I; q+ u1 ]( G1
' z% N* }; z. y: _$ }( h/ d1 {" S/ H2 {* w! q
,...,f 1 M1 X$ E6 i) _7 I0 W: n5 M+ l5 T/ U
n
( k8 ]8 l5 d' t4 S" `" _+ P3 O" E, ?; ^: J
)
1 z# s' d; R* s( VT- P, H( U1 Z9 r
∈R & I) V8 |( ~1 Z" s' q
n
: o# c* N7 C  w ,有f T L f = 1 2 ∑ i , j = 1 n w i j ( f i − f j ) 2 f^{T}Lf=\frac{1}{2}\sum\limits_{i,j=1}^{n}w_{ij}(f_{i}-f_{j})^{2}f
% R1 F* n& Z0 f$ P% Z5 M+ f, CT5 R0 P9 L2 A3 W0 p
Lf=
+ X7 x. q+ S) z. `1 ~/ ^7 K23 v/ T* @& P  S! ~% o  e9 x7 _
11 g& v( z8 J/ ~( P- O9 R
1 K) D$ l6 {+ h

& p; D7 [" D; A. ~i,j=1: C2 @  H6 R" I* n

. V+ q" S) f8 W! dn; u' x$ H/ S" l. f+ ?/ V; o0 K

4 V* A) k+ c* e w
$ ?% g9 C- S# x  q5 Dij3 z. G+ r* r8 ]' @

: J; t; J7 Y! j; E" V8 @ (f 5 t5 U' r' u1 |. M, C  r% j
i! r- @# r0 I6 M& u+ W

/ ]5 `1 u0 X) T, X0 y! R0 B −f
' C; C' Q% U0 [- J/ |j
+ s6 J# k: P9 D2 H6 L9 _5 y5 a- ]
  d. E. p1 k8 G9 a$ c! [ )
5 l3 I% O: z! \: |( Q& I- Y6 h2: C7 r7 G& F7 r, S  ]  P
/ U* e8 I5 G6 L' h0 G
h i T L h i = 1 2 ∑ m = 1 ∑ n = 1 w m n ( h i m − h i n ) 2 = c u t ( A i , A ˉ i ) ∣ A i ∣ h_{i}^{T}Lh_{i}=\frac{1}{2}\sum\limits_{m=1}\sum\limits_{n=1}w_{mn}(h_{im}-h_{in})^{2}=\frac{cut(A_{i},\bar A_{i})}{|A_{i}|}* Z8 h* k7 Z  c
h $ ~. _3 p9 S. c
i
% C# O. ]" J, H2 `2 Z+ ~/ T! jT
) ]' S9 K* L  _( `6 w- |. L' B  s* \% r( Z0 J7 _1 b
Lh
) B9 L# D5 K) ]* ai
1 ?8 R' s! v: k3 R: I) n1 X( E$ h) o/ g' h  }1 Z
= 3 v+ H  x2 f$ m4 p3 a
2% a: K# X% c0 F& D
17 b0 `3 Q, X. d  H) f% V

9 c2 X; y# p" [0 x& K5 r* Q+ P
; `- e# R5 H0 x, S! j% F2 Rm=16 G, G2 X$ |3 ~4 L2 H$ u8 M/ @
" V0 v8 f: k$ F  T# R3 w1 w: x

7 r- C" W3 w/ Q7 ]: M7 R" _6 Z, C
5 D* B0 ^* Y  fn=1+ r) _# O, U+ F2 a+ S! n
" O4 q: H: }/ [- E9 f

* G. _5 X. A# B' c; c' C# v% | w / C  F. Z; X2 m" A% h' x
mn
7 x2 d$ Y3 `6 d& B$ p9 ^: ]8 l% W- _" Q" ]
(h
5 G, G+ e( ?! M5 Z3 @6 Mim
2 m0 G8 q( h/ m' A; m, g' d' Q% E) y: |1 X( k- K: C+ u1 p) h$ G$ Y
−h
, s5 O! }$ s* ^( t4 I" R  Q  ain
& c8 O$ F. U8 _9 W; k: ]- Q9 a1 E7 [# G! ^
) " j: X: r% y1 J& V6 a+ R
2
, e9 w! A1 C* Y) M) S( h =
; j/ D+ Z, Q: v+ ]5 N4 X! N∣A
9 ?& V( R. K# E1 [  H' t# Oi
; G- H1 K9 X3 }3 G; @: \- K0 L' {/ ~7 c" y+ u5 z! j
6 u4 J0 |7 k0 N1 ]" F, |6 ]
cut(A
5 l4 F, @( F  f, Q  fi: O6 W6 {0 o% b2 V$ s6 n* z) w: b" l

. Q7 R' ?7 O! u' X: o0 }( W4 ~ , ( v% {% s5 b$ U* j  W
A, N9 B- F8 m6 o* B8 E
ˉ5 n7 I# y4 A  \2 J+ G9 ]+ i5 a: u0 s

0 F" X, Z, X' \" Wi4 [3 O1 {9 c+ ^- n5 H3 d3 x: Q& V

3 t0 s& w9 d1 j4 Y )& J; o" ^/ v  l( m, K
, Z7 K5 I3 q- p* r3 `
' W' P+ @% |' `( J* m2 B
9 Q3 M2 `- t# }4 v( u. f6 {
严格证明过程请看刘建平博客:链接
7 d& m' W& x/ \$ w5 S% j2 D$ i可以看到,对于某一个子图i ii,R a t i o n C u t RationCutRationCut就对应于h i T L h i h_{i}^{T}Lh_{i}h
5 D1 q8 R; q* U9 |- X  q4 Ni' {& E! A& i5 V: o* L/ U
T/ ]  g) K* Q$ H
7 L$ ~3 H3 }( m, ]) Y) e& m( V8 R+ S
Lh
: H' g- [; _& D! }( ], j6 Ni
2 q8 `. N  q  ?
& [( A4 v0 n- r2 d+ x/ O5 J ,那么对于k kk个子图
+ L' F1 a, a8 Z9 D2 i7 h
/ M- g9 k) \' d0 wR a t i o C u t ( A 1 , A 2 , . . . , A k ) = ∑ i = 1 k h i T L h i = ∑ i = 1 k ( H T L H ) i i = t r ( H T L H ) RatioCut(A_{1},A_{2},...,A_{k})=\sum\limits_{i=1}^{k}h_{i}^{T}Lh_{i}=\sum\limits_{i=1}^{k}(H^{T}LH)_{ii}=tr(H^{T}LH)9 o  ^" ^, _" M
RatioCut(A 9 g$ H' L! s! S: ?- j" @' V* u- {
16 x% `2 i9 D# s. R9 w0 x
/ ~9 c% H% K1 g  W5 g& V; S
,A
' y" U5 e' ~7 p" Z) c, [2
: C& y& P3 a9 k; c, x3 s9 M! [. t8 P6 O- X
,...,A : F3 H4 q$ h+ t* y0 E8 V
k3 P' @4 s8 i& o, A: x( A2 H
( l6 J8 T$ t- [% A' U( ~
)= 1 ^$ U9 H$ ?9 E/ O$ N4 C5 p
i=1( I6 A. z; W$ F/ _  H4 g  m* F

/ M9 G, s; n; q3 gk! r2 f4 E4 v/ K

) w- P% R' S3 |% C; h2 z( k: ~, o/ q h 7 j6 e2 i2 x' l9 F/ i& J
i
1 k5 Q4 v: x$ D) N& ?) H5 O! aT
* j( @, o3 x( ]+ M: k/ M) W2 l7 P0 Z; l1 e! ]9 d5 J' ~- J/ s
Lh 9 g/ r/ [* |- e# J. P( R' @
i
- a4 ]% B1 w) Z% |  @7 d/ E! d- D* F8 K$ Q
= # H2 a3 X, z5 x$ r2 Y; F- a
i=1! Y: E) L) k; J/ s* {
8 e0 M) b5 L9 @, V& @/ d
k: z( e: Q5 ]* H
: C2 _. \& s7 C( x4 T/ Q1 T
(H
* E2 T) r) p0 F* MT) @* U5 P5 ~2 a
LH) , @3 ]# J9 }. o0 q' M
ii7 y- I2 Z& v9 j% z
4 `5 I9 J7 q4 q) k6 S
=tr(H 7 E: P& h) C$ P0 I; ?
T( p9 G' a9 A; W
LH)
, M3 f' l( V* t9 U) m  r* h/ S
1 n7 N% R/ j6 [因此,R a t i o n C u t RationCutRationCut切图本质就是最小化t r ( H T L H ) tr(H^{T}LH)tr(H
' v; M2 }" {8 Y5 r5 pT
% m! X4 M+ i/ e. Z7 }/ w2 y LH)。又因为H T H = I H^{T}H=IH
% q0 H5 w% \& W! j# `* L, BT
8 |8 r* C- S9 o# C" r, B! f0 a" Y2 d H=I(单位矩阵),则切图优化目标为  v4 @/ ^1 q0 j

! Z& ^6 b+ F# W5 U: j3 \a r g m i n ⏟ H t r ( H T L H ) s . t . H T H = I \underbrace{argmin}_{H} tr(H^{T}LH) s.t.H^{T}H=I2 P0 A6 G6 j1 A) Q& z- g! X
H3 M: a* K$ J4 q
argmin
+ _0 |* E' v; [( ^7 N5 D) S$ T" v; H& N/ A$ R" {( U

1 q# I9 D) s- w( v! ?0 h* u
4 z) E: g1 X9 | tr(H
% e* f. }7 l; t: _1 x6 A% K$ g4 y8 iT& A9 S" w/ ]% F( T# u
LH)s.t.H
* ^' C3 s+ d) IT5 S, W7 p; ?' K, Z" w" v
H=I0 C5 ~6 A1 M  S: V
' k! |- u6 I0 g4 Z
对于优化目标t r ( H t L H ) tr(H^{t}LH)tr(H
& t, Q3 I# N2 {  b4 L% x, w; C) yt
, v. f: k/ r2 i; r LH)中的每一个优化子目标h i T L h i h_{i}^{T}Lh_{i}h - i* i) o! ?* i/ D1 J( R
i
2 @# E' `% {( X( ]T
: x  t! E* P4 |2 B' H$ s- b( d% I' C/ ]( E
Lh
/ \! C6 d7 @2 hi
  |9 _2 t  {$ D$ A: J+ o! {- E' q: O  f6 K( `2 i
,其中的h hh是单位正交基,L LL为对称矩阵,所以此时h i T L h i h_{i}^{T}Lh_{i}h
$ u( S: C8 _% v0 e8 k: s& _& Q! G' ji- T9 U( ]( n. @9 {8 s; A5 M5 ]
T
3 n3 r( S' G$ g# r5 u
9 w) J* _" @3 y# U( r: h. ^ Lh
2 B, i( H- b+ r% d" `i
1 e4 P. d5 V: {- o' m
& e5 k* ~4 Q! S7 P 的最大值即为L LL的最大特征值、最小值即为L LL的最小特征值。而在谱聚类中,我们的目标就是要找到目标的最小特征值,得到对应特征值向量,此时切图效果最佳。所以对于h i T L h i h_{i}^{T}Lh_{i}h 7 u* C% |4 Q" R
i
8 Q6 Q) _8 w8 k% m% g$ B) ST. ~% l# O  m' w+ o

0 O) X3 _0 w* K6 b Lh 8 W; j9 E0 ?& z% U
i& ?- h& T( z0 v) i
8 c1 B6 f2 Q4 a4 F
,目标就是找到L LL的最小特征值,而对于t r ( H t L H ) = ∑ i = 1 k h i T L h i tr(H^{t}LH)=\sum\limits_{i=1}^{k}h_{i}^{T}Lh_{i}tr(H
5 s5 d3 F: D0 A: W( ft
  J& x4 P% c( _- m; t; h LH)= / y7 e* k/ h! X- x0 K2 u
i=1
/ n0 e8 [' @% M9 t( x* R) b+ J) B5 z5 L
k
7 f7 l; ]" Z% f9 `& f8 t% }, i5 }, {! N, P, e
h
3 p& B) ^6 `2 b! S  D, P0 bi4 P& `- r2 i+ v9 [
T  [9 r+ c1 ^5 y9 i6 `% t
' n! T- Q' p. Y2 X5 g) ?
Lh 5 z. I9 V7 |' p8 Z4 D9 o* T
i
5 @# j! K% Z3 O) E: b) m3 p# X6 ]- R2 f1 |/ }
,则目标就是要找到k kk个最小的特征值
3 c/ r5 L( V, r. `" W; B( N7 g/ g6 u5 ~
因此,通过找到L LL的最小的k kk个特征值,可以得到对应的k kk个特征向量,这k kk特特征向量组成一个n nn×k kk维矩阵,也即H HH。一般需要对矩阵H HH按行做标准化,如下, u/ o" W. {& u

! [- F" p1 K2 g6 q4 g+ e7 B* \0 J# o1 H一般来说,k kk远小于n nn,也就说进行了降维
7 `# i5 o2 v# O+ i8 @+ ah i j ∗ = h i j ( ∑ t = 1 k h i t 2 ) 1 2 h_{ij}^{*}=\frac{h_{ij}}{(\sum\limits_{t=1}^{k}h_{it}^2)^{\frac{1}{2}}}
. w0 t; I5 w  o4 y9 @  g7 R- ]; q) n9 `h ( g( i* o6 J/ c# R8 L
ij
; N0 m  ?6 W. S' `% a6 C- ~3 @! }1 v8 M; P6 m* @; Q) Y

: u1 z/ N* {$ ?( y/ ^3 s =
1 y2 \7 ]2 R, u+ ?& I  Y9 N(
* h- \, M/ D3 v; It=1  V  M& v4 U! i& h* B  O7 z8 L
) Y4 {5 P1 j( i% Y! ^
k
8 F& Z; n8 T1 V9 S& b/ S% L: ?9 C( I+ g9 ~4 {
h
0 T- O4 @+ n4 H& S+ v2 tit9 k) {; G" x8 W0 M4 Q
2
1 ?; s) O) X% ~: j7 Y* {
! t: G! p, t1 t, O9 I )
. H1 l0 C& }; F2
$ s' _8 w! b3 w9 E1
6 K. g! r& S: T) p! M
" Y- N* `& k. o  Z( w. w& J! S! Z

/ u$ B8 X$ T. \h   {2 x9 s" F' p- T
ij7 J9 Y! b$ p( |. k2 K
. i' Z) f0 b* I5 a
+ ?4 Q: b6 f" o0 _* H. N
+ Y" {" O' ?0 i8 g5 g+ N

( j7 W* L4 c" u# _1 s8 r9 Q
  ?5 W" k# B- Q- \0 ~这里需要注意,降维后导致得到的指示向量h hh对应的H HH现在并不能完全指示各样本的归属,因此一般在得到n × k n×kn×k维的矩阵H HH后还需要对每一行进行一次传统的聚类,比如使用K-Means聚类/ s- I+ m' _- c! [- k
" X1 B& D2 g. F" Z; r- b6 A# t
(2)规范割(常用); ]% W. S4 V" c3 i, z* _2 W5 G; Z) y
规范割和比例割类似,只是把比例割的分母∣ A i ∣ |A_{i}|∣A 3 R$ P: H( s, e/ ^* E
i5 t; |* i/ s( n. H$ Q1 w; Y3 c' D

* c' W2 |! }) v/ b* q4 i. {4 O( ` ∣换成了v o l ( A i ) vol(A_{i})vol(A / {+ s+ a2 e* C
i* y& V4 x6 U4 `  x& m7 H2 s7 o

( N- i, ^4 ]5 ?5 d+ `6 G1 w ),定义指示向量h i j h_{ij}h 6 i) r0 P$ T3 i/ r! B; h' c* b) a
ij, D8 t- g$ r. U: j3 K' }) z
6 f3 Y2 d" j  L% D* r
如下) O1 i1 x  A9 }) ]9 i4 V

! x2 R' u9 b! ^7 ]; z0 J9 mh i j = { 0 , v i ∉ A j v o l ( A i ) , v i ∈ A j h_{ij}=
2 [) s* I+ j" O1 A5 s{0,vi∉Ajvol(Ai)−−−−−−√,vi∈Aj
) h8 {* H5 w( K{0,vi∉Ajvol(Ai),vi∈Aj
8 G/ `3 R0 ]: r$ }! |) V7 m" x% Gh
0 R5 d8 _& y) _/ Q  @9 dij$ B! W& P5 }8 v! D) Y, P

- K# B2 f  ?" B# E- o: ^+ e9 b' Y% Q ={
; g% K) ]3 [6 ?. m1 l9 D, S0,v 9 ?  G$ [  @& I. n( _
i1 v: \+ |3 s; o) _# \5 I

7 Y6 j  \" g# @! h/ ^9 n! A
8 [5 c9 Z7 l' z% Q9 t/
  O: c  S8 o# rA 2 f/ y5 p' Y8 ~7 A# M4 M
j# h7 y6 _; q5 ?# F
# @  `% P0 F# ?$ Q% p* F/ y3 y+ I

; G, G  h& r" U  V4 N1 F) x5 `+ [vol(A " i* \- g$ f( N1 E' S5 N  g
i
9 y/ V  \" z$ {4 I6 n4 F3 h
7 Z) A# s1 l6 J/ `  h0 L& l )
- G& o  W4 @2 m  X. y; \* y0 a4 n. t4 S. ^& J4 u! }4 \: `) h
,v * j4 N& ?. K8 l" o% ^
i
) ]" ]! i$ j! L5 h" r3 ]0 f
' P( X  F# q- R8 J. ~- q* h ∈A
( D$ S# ]# O; V5 C6 U# Wj
  d) H& C) E9 m" E* [: V% z5 c1 D$ X" `0 u

- Z$ Y% T4 H/ M5 n3 ?& O1 W! [" M4 A2 C* |+ d
1 t, y0 D1 c$ E! ^5 Q

5 x( b+ D5 m% B: U* l+ \于是,对于h i T L h i h_{i}^{T}Lh_{i}h
3 D  K, D8 R3 g- T9 {3 Q& ~i1 _7 ~# L6 x7 V4 d# u( f
T
/ Q- f  T' ~  U; W, b
; b3 z6 H9 w. |2 [ Lh   A4 C8 d) Q6 V$ j* s) J  y1 v
i% A( s* ]% C& R
! ^7 T1 p8 g; d" h! R1 a
,根据拉普拉斯矩阵性质可知& Z+ q9 k: p. e9 b
# E  t4 W$ A, S- V, C$ f
对于任意向量f = ( f 1 , . . . , f n ) T ∈ R n f=(f_{1},...,f_{n})^{T} \in R^{n}f=(f
% R. W" z" K4 A( C& G1# H0 W% h! ?4 S1 |1 y; C5 X* v  @
/ a- F( R) U& p; {7 e1 D+ R7 }
,...,f - t% S# w, ~; o/ r. k" C' e
n
6 F; V! U* x: ]: a- \6 C4 W# E: F& D: K1 {& C0 d' b
) * F3 P4 |$ M8 d. _9 V
T
9 p. g: s( u5 S* z) N ∈R
# ~; \: ]* x5 \( o: Qn
0 Q' f1 P* h. R# b+ R ,有f T L f = 1 2 ∑ i , j = 1 n w i j ( f i − f j ) 2 f^{T}Lf=\frac{1}{2}\sum\limits_{i,j=1}^{n}w_{ij}(f_{i}-f_{j})^{2}f * t: X8 Q9 u, [- E5 X7 c, X/ ^
T4 x' K& k+ c) y% j- s% f+ I
Lf= 5 M2 G5 J; C- T' W
22 @3 l) _( e4 G
1( d7 G* p% S3 e& E
0 M% @' O' m3 x
7 r: u  B7 O# Y
i,j=11 q# u' l( b' D% f1 E' Q! l. h

; Y' J1 ~: r4 w: _" [, r4 X$ {n' ?& [# T5 w' y+ g" A
4 B5 r5 o6 [$ K
w 0 [. m$ X) I1 Y0 z  @
ij
3 |* g# }$ u1 ]3 C; k5 e7 Z$ _, I( Z
, N5 k: ]. f9 c+ Y$ `" w* b* l3 g (f
/ U+ ~% f( q% n$ v0 Li
, i) p5 P* z% q- R$ ~
9 K* C! j4 B; C# O" I& V- O2 a −f
6 E9 v0 H6 a% B7 O6 [j8 L" }; i, b0 V
4 P$ _* R! C( s/ z; R
) 5 k: y$ p2 s" y7 e0 V4 d9 }
2
) `  m1 v7 G+ ]; q, r: }& d3 l8 }0 s1 q' v; Z  ^9 T. I6 C' P6 d
h i T L h i = 1 2 ∑ m = 1 ∑ n = 1 w m n ( h i m − h i n ) 2 = c u t ( A i , A ˉ i ) v o l ( A i ) h_{i}^{T}Lh_{i}=\frac{1}{2}\sum\limits_{m=1}\sum\limits_{n=1}w_{mn}(h_{im}-h_{in})^{2}=\frac{cut(A_{i},\bar A_{i})}{vol(A_{i})}
  C* h- C. b- h& c9 mh * W4 [  m9 f- N. W$ `
i$ E! S* K) N% Y+ A9 i
T! S% d6 e8 F6 |9 w
6 C: M( ~0 k0 g
Lh % `8 w/ d! e  C& a0 S  W
i7 A1 I1 i6 g( a: H

9 S4 u$ N- J4 X) a = " R: a0 X0 E' e0 k: \9 ~! X
2+ m% S3 W* I+ W  H
1
% M2 j$ Y' e) G7 |
8 `4 I/ V+ D0 ]6 R: m$ O5 w8 A: Q% J! t4 L, H7 H! r5 j2 b
m=15 m) [. k% t5 `# \, _
" }9 V$ t0 I' F0 @3 Q

2 G6 H7 C2 q; d8 |
9 O2 J+ g9 V! U* Wn=1
" H' g. b* b( M; e0 |
8 u7 l1 j9 G: ?. {4 f
, @% p4 Z* t& ^% O2 O: V3 X- P w / ~3 `, Z; b' l+ v
mn
- V. o3 n) x* j2 d* l
9 Y2 X4 p/ i+ X6 q/ [$ t2 l0 L, B- @ (h # c: g* [4 w0 I" w
im! H$ v1 N2 U5 R" s1 s: Q4 i- ?% _
# |# f8 M' O4 R! ?! z! X
−h * a5 M/ X7 S8 ]. w3 u- C
in
" F- l* Z( h1 X$ T% F7 {& a4 N0 ^; d) |* [1 w3 g
)
* Q7 F. N$ N! E2 b. v2
) @' ^) w) F0 B9 L = : S* l( r# O+ i# \" T
vol(A 2 c# n; {+ D/ }# @
i4 |. x. x2 x2 @9 Z% C
: K6 h& l- A: d" F0 b$ }8 L! O  N- o8 R
)
+ @( n; u5 W3 Dcut(A
; v4 C9 o0 o$ u3 @" Ti
) `) v# ?0 o5 x4 V  A% p" P' ^4 x5 X3 Q% k
, / G/ Z1 _% G: o$ P3 r
A' ~  @3 a* n0 p0 |, i! ]
ˉ/ y! f6 x* s8 E8 P7 c
+ X/ d$ t4 ]# h/ B3 q' R  O' b
i
& p+ }( v5 T1 k# S8 q
* n" k& O9 i: |2 V5 ^/ G )
5 Y. h" r  e* D
- Q8 Y$ S0 j: s, e) }, T6 D- [5 O' G! v/ u2 B- `7 l. ?5 @9 ]
& T: v& s/ y* `' C
严格证明过程请看刘建平博客:链接& Q$ a, N& Z2 k3 R" V4 ~
可以看到,对于某一个子图i ii,R a t i o n C u t RationCutRationCut就对应于h i T L h i h_{i}^{T}Lh_{i}h
+ L; N( B" R) X: G/ M, W5 \. c9 fi' f! k, [4 f& {* o  x, W3 ~
T
" Q$ T; V' C) X( o+ `. Q5 [' s# H6 |
Lh
4 t; m$ G7 o; m" Ai
; h& b3 I6 ^8 j- ~2 `7 R3 ?* X5 `) f& g, m1 Z' q# y
,那么对于k kk个子图
7 g/ T9 o9 l$ W" u; ?  \( c  N9 U% V3 J" M& ?" J
N C u t ( A 1 , A 2 , . . . , A k ) = ∑ i = 1 k h i T L h i = ∑ i = 1 k ( H T L H ) i i = t r ( H T L H ) NCut(A_{1},A_{2},...,A_{k})=\sum\limits_{i=1}^{k}h_{i}^{T}Lh_{i}=\sum\limits_{i=1}^{k}(H^{T}LH)_{ii}=tr(H^{T}LH)
4 ^1 k9 s0 ?- Q3 F& S; XNCut(A
7 o9 I% H7 L6 j" G- H1
3 O* i4 V+ E  V% a
/ [2 n3 R3 Q8 T4 t9 R) p/ ?0 U/ C ,A
1 Y; f: E9 l5 X& Q; w: P8 \2& I+ r, w  V0 w& R  g& i

" z3 E  x) h0 Z& I% g& r: J2 w ,...,A
7 Q: \0 a- o8 j: g* n7 j3 Dk
% \) J1 H5 x  O6 n+ t$ I' ]; D& ^1 U# Z+ {+ T3 W; Q
)= * @$ d  e+ l: w0 ^
i=1
# V2 v9 U0 S3 r, u- j
8 z% f$ X) q/ E- _k1 L. V* I$ s! R' `

6 q+ ^$ k: ]2 g* k; D h
/ U; ]; \  s% V0 G5 I! ui2 [% _6 \" w/ |! _7 D
T
+ L- i4 P# Y/ ?  V& g# \! S4 s* N1 _9 j  g4 R2 }/ Y5 Z% d  [7 J
Lh
. u. Z+ d; o( r( ?0 T3 o3 |i; K8 ]/ w, `7 f. f# a/ o7 X
3 y0 G3 P& \4 ~( _5 }
= - l4 E  q2 ^5 J' n! x. c; z  |+ }
i=1/ T  |2 j3 Q9 F6 Y  Q
! A5 J9 h/ S# e9 G
k* D+ F9 [# B2 {5 t/ e
7 `2 e2 E5 n0 b9 R3 N9 o8 d5 q
(H
3 W0 y- i% X9 PT4 V* U5 x+ B+ t4 a  W
LH) * z% o0 L6 G" Z  f. N
ii: D1 L5 e" b) b$ U9 D8 P! y

- U  A8 q1 d; h) v  y =tr(H . ?) u5 Q( b' v/ R7 M5 c% s
T
& K6 p. C6 t4 y$ Q( X. w1 x: ? LH)
$ z4 t3 z! _' ~) T& f  J, n" G2 P# C7 W
但此时H T H ≠ I H^{T}H \not=IH # i: k) h6 [1 q! G/ t) m3 X  Y" y3 r
T* Y( V: ~4 N# L, g" G
H' V/ O+ k8 O( X1 N, n/ j

7 s& p6 M. g7 l6 ?( d9 w=I,而是H T D H = I H^{T}DH =IH
% ?! Y; S2 k7 X) U, l) `6 KT& o+ u) {' T& ~' h" C" ?
DH=I
6 ~" n8 y/ X  f/ y. M
& F0 {$ J) h$ b9 M1 h这是因为h i T D h i = ∑ j = 1 n h i j 2 d j = 1 v o l ( A i ) ∑ j ∈ A i d j = 1 v o l ( A i ) v o l ( A i ) = 1 h_{i}^{T}Dh_{i}=\sum\limits_{j=1}^{n}h_{ij}^{2}d_{j}=\frac{1}{vol(A_{i})}\sum\limits_{j\in A_{i}}d_{j}=\frac{1}{vol(A_{i})}vol(A_{i})=1h
. L4 h, K% {3 j# ?: D" D; I0 ti4 Y3 ^/ R' J0 c/ u! Z% H
T) n  e! j) ]8 K% O; p! p

+ n+ P- A; U  d Dh
) w, ?  b6 L- n" Ii
, C5 `& o7 O$ ?( l- l- q4 N4 [9 _% }1 i
=
/ g# i  u. b; l, fj=1
3 Z3 }2 w6 c3 `1 d
: o& ?$ y# w# V% s0 s9 Nn% T& v2 w" K% o+ _& T
2 d4 g2 f% F+ q$ D! X. {! N1 K6 j
h
& ^8 `' C  b  Pij
! j" T: U6 d" g5 ?' J& _" ~& r2
8 F# x- N" w( A, }3 u; \
+ H( J) i% _  q6 b- ~4 a, R" i d
7 e) F% M7 Q2 `  d) b4 Y9 Lj! O/ z: r/ Y2 h$ \( b
5 p: h; W1 |3 `* u7 {$ I
=
2 d7 U. l8 v4 ?) Svol(A - y0 i# x! ~) Z3 `6 M3 G: i  G
i
7 y. x6 E- M. H2 Q+ O, Y4 h7 s" U3 L. Z+ D
)* c+ O: ]4 S. b% f/ X9 P2 B% J
1
! v: o" n5 B6 |( a! d
) H  }6 {" H! z* X  B5 j& }6 e
% P$ {$ {" p5 N$ B  W0 O: Fj∈A
/ W" Q8 h+ V! ~& j  L2 Ri" c( ?4 x5 z1 l( j
6 R+ U: K3 s0 v3 [7 ]

- R- D, K; y3 f# W/ D' v, A9 ?
+ [2 }& h) p: c. ^! j# A; B4 i9 T6 c4 x! t' }
d
( Z$ |+ B1 o2 t6 sj
* B$ Q* S) K: E* S! x7 S! K6 t8 ]1 F6 _$ H2 e
= 6 N( z+ q$ v( x2 K. s* F
vol(A
% Y7 @8 z1 t+ e- Z$ b5 M0 di- W, }- g3 r4 p5 p2 t/ y

, Q' q( S0 B' @- n2 e! e" s- r' m9 u )
* x( w) T9 }0 `6 ^) Z; m+ `1
3 M6 ^6 q. m* T5 X: Z% g  V
4 |5 e1 K( W  N( h4 D vol(A
* K  ]  Q( M: w  S/ P* Ni
4 g/ i" z& S/ m9 b, Z; j1 x+ F2 c9 ^+ o  A
)=1# ~1 _1 ^6 D, |# t1 c
因此,此时切图优化目标为, w) Q6 ^9 d! X- f6 a& b
7 v2 J. u: G1 @$ Q, X7 _* b6 q
a r g m i n ⏟ H t r ( H T L H ) s . t . H T D H = I \underbrace{argmin}_{H} tr(H^{T}LH) s.t.H^{T}DH=I
! k; c8 |* r+ v* _1 Y1 Y) `- FH% M: m6 U2 }2 b+ _3 c% P
argmin$ j" y) i4 y) _9 D

+ _/ P, @& F5 c! N4 x
  R1 A. E: K* x" o! q# g6 L8 f. B6 t7 L6 r( F& ]8 u8 p
tr(H 8 F, V5 q- T3 ^0 y  ]% q6 _$ x
T
. p6 |9 ~' z* y- G8 R LH)s.t.H ; p8 J- k: l* }9 P; T( U7 j
T% H2 n' T3 r' U' S" [6 _7 j9 r3 g
DH=I2 C# i7 [5 w$ R( d3 ]2 d
& F* B9 A- {' f* }) E) e; L
但是现在矩阵H HH中的指示向量h hh并不是标准正交基,所以需要对H HH做一定转换。令H = D − 1 2 F H=D^{-\frac{1}{2}}FH=D 5 t# V' B) N2 J+ y
/ ]& g4 ]) \2 e% ^
24 a! \; N8 G0 Q/ X# h6 i+ l) g
1
% u! d! I8 F9 H, A9 z$ h
8 k' a3 Y, H4 x  o* B/ W3 V6 o( b) ?' w1 F
F,则H T L H = F T D − 1 2 L D − 1 2 F H^{T}LH=F^{T}D^{-\frac{1}{2}}LD^{-\frac{1}{2}}FH 5 H# @' @: b9 m5 B3 q
T' m7 j, P5 X1 M3 r: N7 v
LH=F + S3 H, R% H4 h# G7 L: z' l! c
T8 ^; e7 |; @5 A: J1 ^
D   m: \0 C4 k% `/ _! E
, w  w! p! k* Y* G! G
2
- O. h2 b- R% l0 c8 t11 o* P! L7 Z% B7 Q  G. e
0 K$ d5 Y0 t: K
5 H7 M( Y- q% [5 ]0 t2 @
LD
) A6 [+ X6 w: G+ s1 _9 N: d4 [. E" J  T% B( U
27 V, Y) _! y$ G- k. P
1
, D1 X6 ]) n1 r  J
, o2 y% m4 V1 l1 ~6 \- g! L5 b
F、H T D H = F T F = I H^{T}DH=F^{T}F=IH
2 `% N, ?" V7 u; {T( S6 C+ D# A* K* ?
DH=F
% Q6 D' e: K8 c6 p# x) ]T
3 n# i1 n) H* u F=I,于是优化目标变更为
6 ]: ~* B9 p2 p& X. N/ Xa r g m i n ⏟ F t r ( F T D − 1 2 L D − 1 2 F ) s . t . F T F = I \underbrace{argmin}_{F} tr(F^{T}D^{-\frac{1}{2}}LD^{-\frac{1}{2}}F) s.t.F^{T}F=I
! H7 y" K* W. \" t9 sF: _0 F) r! Z5 Y
argmin- N* l1 l* s/ {8 k2 |" k

0 w0 a+ a$ ]$ K' v5 ~) k( {) ~5 F3 c5 P3 Q/ o

. n. i- |  u" n" d" _- P tr(F
$ p- v7 s$ d( O! U+ T8 J) P4 OT! k; _% O) y- M& g6 a: q9 y+ q
D + G+ m9 Z4 G! J5 Q

8 M4 t) t) _( f7 N0 ~% |' j& z& P  N2, z6 Q/ J. ~2 ]9 G
12 }( |' o+ o- `
# Y; R+ J3 S6 h7 f
8 ]% g/ n) X( \& I' ~$ ~6 v1 z
LD 2 V, q2 X$ X: L
! X1 p+ O; O' D) ]
2
0 q4 r6 Y$ s! ?3 q1 [1
1 A% |' X9 x! I3 {% v$ y3 G8 Y0 W9 R( D, A
) v2 r- n2 W4 V9 P2 r
F)s.t.F 1 K% V1 \- M% e# p
T7 W4 x9 m) g2 W* r/ \
F=I
$ Y1 D0 @7 W: k# E- T, w9 [: R' L: U' l. ?4 Q6 M
现在,和比例割一样,通过找到D − 1 2 L D − 1 2 D^{-\frac{1}{2}}LD^{-\frac{1}{2}}D
# I, l* h  d" G, h' h
1 a  E3 E7 Z% E% X+ G4 n. f2, d( }4 \" p" L" J5 }% Q
1
2 s4 A8 {/ Y  ~4 ^& B0 n, D7 |6 D" K" f" X7 d: E5 f
- l4 O& m& Z+ j5 x2 d; O. n
LD & o& y# N+ J# @

9 c) O4 a6 |5 }4 I3 b2
$ @! V# Z! V# `  n3 A4 O1% U8 Z, w4 [0 h8 c9 y, z0 w

8 c0 m2 Z, B* K, z  l! [" Q. n9 d6 B
(就是之前的L LL)的最小的k kk个特征值,可以得到对应的k kk个特征向量,这k kk特征向量组成一个n nn×k kk维矩阵,也即F FF,最后对F FF进行传统聚类& [4 L) ]8 M1 ^( W

! S  G# ~7 |7 K( O- i9 ]一般来说,D − 1 2 L D − 1 2 D^{-\frac{1}{2}}LD^{-\frac{1}{2}}D + P) H" T; m7 J; O% T, V# p
( P- D% A2 y# P2 I& A2 ~/ ?
21 D3 n1 {) H7 ~7 Z# z; z" \
1
2 _- m5 i6 Q4 ~  k1 G# C( L, x) T$ N. z. M- x

" e/ x3 }8 J, ?0 }- V LD . s; }+ P5 K; H7 P. H; S5 e8 k

& I! k9 F) e& X* z# L2: Z3 f6 x1 f" Z) F% d
19 ]: W4 A! w+ ]( v3 n; c
8 W( t' g3 o& _0 v) ]  L& Z

- C: j$ Z. @! X9 @% }+ @ 相当于对L LL做了一次标准化,也即L i j d i ∗ d j \frac{L_{ij}}{\sqrt{d_{i}*d_{j}}}
0 g3 U5 @; j3 x4 Ad
4 a3 i# Q: m  K7 l9 Yi
7 Z0 j( I1 _0 U) p( Q9 _) q' O+ p" J6 M* W
∗d
. R: z- u0 k; ]' Yj) c, |  d* I- B. q. U3 B
8 l: {: X$ }7 x5 S; G5 Z

" V7 W: v/ O6 a$ b! ]/ z
8 {8 e5 R* h6 x. |
0 [# \  W4 o6 n/ tL ' A& ^6 Q5 h2 |8 M7 y8 i, \) ]/ l. l
ij
6 b0 E2 u4 k4 |( P' I" q! `
/ `5 }% U9 ~6 A; j' h9 I" X$ i7 |, B' l3 v/ f
5 R! K3 w5 `! c' g
* x) Q- ~. w& `* a5 ^
二:谱聚类算法流程" }+ R0 _' Q) ?2 a* W2 k
给定数据集D = { x 1 , x 2 , . . . , x n } D=\{x_{1}, x_{2}, ... , x_{n}\}D={x " c$ ]3 ?6 a1 _! Z2 l& B9 J8 i& A
1
; w( ^+ Z3 Q2 G; q/ a- D, B
* k" ~- W; |- k' J% A( Z ,x ) j, Y. ^* @/ R) R6 Q
2
" N  Z* q* [/ P. U8 q5 U# w$ T1 i
,...,x
& u/ d/ z  ]0 w. e  T2 w, Z: {% ~: j3 sn
2 b2 V0 S; A# \$ z/ a" E- q! q+ Q6 Q
  g$ G9 d7 @; Q/ v0 S. I9 E }0 \3 C0 o. E' s  S4 x) \# X

6 ~. F5 n9 j! I, e3 F- N根据输入的相似矩阵生成方式(一般为高斯核函数)构建相似矩阵S SS(AffinityMatrix)9 L6 W- t, ]: Q
根据相似矩阵S SS构建邻接矩阵W WW,再构建度矩阵D DD
, y6 Z. U* S# c# w# q& H9 ]5 x8 y计算拉普拉斯矩阵L = D − W L=D-WL=D−W
$ Z1 D0 d  K; W% [得到标准化后的拉普拉斯矩阵D − 1 2 L D − 1 2 D^{-\frac{1}{2}}LD^{-\frac{1}{2}}D ' z' K/ P% V' J7 R7 c# V- b6 |1 W

! t- j4 e+ C2 F20 h6 b8 _9 F" Z* a+ k% H8 E
1' O7 O+ Z" \0 l7 A9 A3 g9 b4 N% F9 G
. |; R! T, B$ _) n; L
9 }0 j6 o/ d9 D6 `1 _; n4 R4 M0 m8 m
LD ; V7 |0 q( r* Z2 N4 h6 J, u. r9 a; Y

6 d" c% q( G# v, X& j9 m2: o+ R5 q3 }' S2 G, l% t
1) t# j8 l) W+ \  i

/ [$ K* Q; B3 J9 o0 T$ A1 o
& v& ?. ~5 o! G  g1 t
: p+ H+ K, \+ n. h计算D − 1 2 L D − 1 2 D^{-\frac{1}{2}}LD^{-\frac{1}{2}}D ) F, P5 F: f/ }- x0 f+ E% k
. d+ D" `5 r3 A# `8 N+ b
26 F$ t! u* ~7 \. X1 p, z
1% g7 }5 {5 U" u' N; [/ I
" m" l& j3 }8 ?
0 v4 [4 }9 X4 S3 r
LD 6 D7 n2 O; L0 u, ]

0 i* n# ?0 o! B& M2
) n# }* D) u5 I) D  x2 V1
2 p- T  G9 |9 s: V7 Y, M9 P; f% n) y: D4 \6 o% u) @

; `" \" C% ^) E# ` 最小的k kk个特征值对应的特征向量f ff+ y9 f2 c$ y" h
将特征向量f ff组成矩阵并按行标准化,最终组成n nn×k kk维的特征矩阵F FF
1 E0 Q/ U9 z/ t0 u) _F FF中每一行作为一个k kk维的样本,共n nn个样本,采用某种聚类方法进行聚类,假设聚类维数为k 、 k^{、}k : P* y+ H' q/ v% A1 A' G3 y
) F: {  H  j% g6 [7 x

& ~/ w( u/ T( _8 o8 ]2 b+ ^1 l得到簇划分C( c 1 , c 2 , . . . , c k 、 ) (c_{1}, c_{2}, ... , c_{k^{、}})(c 3 g  f6 D; H0 ?& }
1
$ W# D7 `) o/ i* L( O) y+ U, J& h
: |/ A2 x" j, X/ [5 l ,c
4 ]/ D, O9 s, _7 l2 }$ O5 y. ~2
6 T  j" Z( @; o. }7 A; p
5 n) u( A# U- Y( n% E ,...,c
8 r4 m4 m8 S" e6 {k
# g1 r- k9 c. z
, V/ t4 l) a6 o2 j9 C* z
: E. |1 S: y3 P7 n9 \8 @3 k, \( E3 P5 q8 I; m
)
( r1 d7 T; H- n" @0 ~- Z三:Python实现8 m! d! W2 N1 A$ x: A9 l' K
import matplotlib.pyplot as plt
, }  R. D! O7 N- Dimport numpy as np
5 X4 n! p" V0 F6 P, x4 T+ Timport pandas as pd1 a! ?3 x) z) M: l7 n: ^, x
from sklearn.cluster import KMeans) B2 N( p1 g1 m- A- z' s% x
from sklearn.metrics.pairwise import rbf_kernel* Q$ r0 R. J  {7 _! g/ m
from sklearn.datasets import make_blobs/ U6 Y, }" W- d5 q" \
from sklearn.preprocessing import normalize" X( J# w- y5 M/ {: y3 S4 ?
" M9 T, H# _$ r( @# K
def get_affinity_matrix(data_set):8 I4 I  e5 A1 s' {7 N+ M% K; Q
    #  利用高斯核函数计算相似矩阵(全连接)& t" ]. {5 t( C4 j/ [! m
    rbf = rbf_kernel(data_set)
: _9 M* {" X# b4 q: n* A& Y, v( O    for i in range(len(rbf)):" r2 r# B7 l) l# O+ y. S
        rbf[i, i] = 0
& k7 @/ Y! F: y& a    return rbf; ]+ s5 x+ g' k1 T

2 E5 D. j: B8 q& A: c* X' c
3 k$ Q- J7 l$ @4 y$ c: N# B" ~def distance(x1, x2):
& J4 D; c% R  C    """! ^: a/ F, y: S+ r9 v
    获得两个样本点之间的距离
9 h$ _' [5 J6 W( R! \  r+ n7 L    :param x1: 样本点1
/ O: r4 d1 y0 y' S$ }! J    :param x2: 样本点2
4 A. M- C5 T2 }0 d0 q2 D( r. U$ c    :return:+ D1 A& @. a0 S1 B7 E- p
    """) z  e! K" Q2 o& c4 s( ?* B
    dist = np.sqrt(np.power(x1-x2,2).sum())
5 D7 G: v" \' ~" N    return dist
: L8 {) w7 x9 j0 W
# M( O# s& o8 S/ t7 pdef get_dist_matrix(data):
% j% Y2 i6 ~; B$ {  K    """
. P" x' w' `# E! A    获取距离矩阵
: N% i/ u1 x: v1 Y- }: T    :param data: 样本集合2 g6 L9 I7 V9 v) q+ V
    :return: 距离矩阵
2 `! m( l* ], u2 J- b* h    """3 E& y" q8 [  T) u3 O3 B) {& I* d
    n = len(data)  #样本总数
/ E( x  A5 {# s- E7 \( U# Z0 @    dist_matrix = np.zeros((n, n)) # 初始化邻接矩阵为n×n的全0矩阵4 |; }4 M7 h% a9 [
    for i in range(n):
" ~/ V; m/ Z5 K7 C% m$ D$ c        for j in range(i+1, n):$ `, U. F- W. Y4 h  _7 [, }0 y0 C
            dist_matrix[j] = dist_matrix[j] = distance(data, data[j])6 d0 n( O" Z3 |- ]: N+ F
    return dist_matrix
0 X& h! j* O+ Z8 a+ l( ~5 Q4 ~7 X! ^% i9 d; ?* H% T
def get_W(data, k):
0 ]0 k$ P7 B. I1 G. [/ Y" G( h    # 获取邻接矩阵(K邻近法)
+ Z+ |* i% m! U3 ^+ W; u) H    n = len(data)
9 Q+ N) t6 @, n( e0 i    dist_matrix = get_dist_matrix(data)
7 W8 z8 _8 @5 S, [* K8 B  O    W = np.zeros((n, n))
! A: }: m" B. O3 t    for idx, item in enumerate(dist_matrix):8 c+ q/ x# Q* M5 r1 I5 d; b( x+ Z. g
        idx_array = np.argsort(item)  # 每一行距离列表进行排序,得到对应的索引列表
6 P9 j5 d, [, p4 ]8 D  a$ T* k        W[idx][idx_array[1:k+1]] = 12 U5 u; y3 z" }' |, m* v# H
    transpW =np.transpose(W)
! h3 @' C7 J6 j8 {6 ]4 X0 @8 Y# d  @2 R    return (W+transpW)/2
: [/ t0 F; |# p# b* W0 U9 z# a: l) p+ `0 T# }
def spectral_clustering(data_set, k):" W  n. t- U5 \8 y! O! u* T( l/ m1 ]% q* g
    # 利用相似矩阵S得到邻接矩阵W# V5 t0 m  P3 W! Z
    W = get_affinity_matrix(data_set)  #高斯核函数(全连接法)
  J7 ~4 w' S" E) V. q% @    #  W = get_W(data_set, k)  # K邻近法7 k$ p; m/ o' F7 ~% r" r
; N' R% |! A6 V; H, c
    # 计算度矩阵D,并得到矩阵D的1/2次方的逆矩阵(便于计算拉普拉斯矩阵)  a2 \  [" w4 y+ b' {$ T: @
    D_inv = np.diag(np.power(np.sum(W, axis=1), -0.5))) l& W2 w9 t; o( W  |
" B0 W  Q9 }9 @
    # 计算拉普拉斯矩阵L=D-W
9 b" S- |  h6 d. F    # 标准化拉普拉斯矩阵l = D_inv*L*D_inv=I-D_inv*W*D_inv3 w( T* W: M0 u
    L = np.eye(len(data_set)) - np.dot(np.dot(D_inv, W), D_inv)- b& J% N$ t: k

# `9 o6 F0 J6 m7 d    # 得到特征值和特征向量2 G+ B% T4 Z5 w9 W$ y
    eigvals, eigvecs = np.linalg.eig(L)
8 J" O* B5 T5 E7 t1 V3 u/ d" V: n/ [2 B% }9 i" }
    # 找到前k个最小的特征值(索引)6 C. J6 I% r+ _" g0 u
    k_smallest_eigvals_index = np.argsort(eigvals)[:k]
# M& u6 F, n4 `
, n6 G$ c, A" \: \1 a    # 取出这k小特征值对应的特征向量,并正则化4 e2 D* E. n) u: S( F0 W+ s
    k_smallest_eigvecs = normalize(eigvecs[:, k_smallest_eigvals_index])9 d1 g0 l# s$ ]
/ V2 p$ i+ M3 l
    # 使用K_Means聚类2 c/ O; q" C  F! w- w# L- P! I) B* Y
    return KMeans(n_clusters=k).fit_predict(k_smallest_eigvecs)' b6 z1 P1 a; _* b% B6 s

4 i" x# n. s2 V- N+ S
% x0 Z5 Y: y7 d6 lraw_data = pd.read_csv(r'E:\Postgraduate\Dataset\jain.csv', header=None)2 M3 u! S. b/ h
raw_data.columns = ['X', 'Y']. p9 G* K, R8 ~
x_axis = 'X'
1 U& I. m8 Q5 `" a1 \y_axis = 'Y'
2 S8 Q; |  T& f- [; {. [: p/ u, v$ b8 J* e5 T
examples_num = raw_data.shape[0]0 \/ q  e/ B8 F/ a7 q
train_data = raw_data[[x_axis, y_axis]].values.reshape(examples_num, 2)
, R: m) H, \  t5 M" C" Y  E  U* [$ h! \' D; L/ f3 i5 ~
4 p1 x6 n5 ]/ T1 y: U
min_vals = train_data.min(0)
/ E' j+ U+ I0 w/ O/ }max_vals = train_data.max(0)2 J! D& r/ p* e( u# n
ranges = max_vals - min_vals
* N; N2 F4 X; h: O4 dnormal_data = np.zeros(np.shape(train_data))$ j; t; n6 I1 L# x
nums = train_data.shape[0]3 ^! R; i" \  L5 _% a
normal_data = train_data - np.tile(min_vals, (nums, 1))! |/ f/ J3 E5 x% o
normal_data = normal_data / np.tile(ranges, (nums, 1))
0 p& h0 e5 G$ \" R- H' ]7 }, B! i. H2 |' \% H+ H. }
labels = spectral_clustering(normal_data, 2)& Q3 A% v) ^6 a$ T3 f

( C* Y' C5 E# l! [5 D# 原数据
) Q5 W, E7 R) A+ E' \2 |- Vfig, (ax0, ax1) = plt.subplots(ncols=2)
4 H7 Q) ]: I5 p, ~6 G  ^ax0.scatter(normal_data[:, 0], normal_data[:, 1], c='black')) p* _2 h+ r5 e* ]3 o
ax0.set_title('raw data')
' L' b& h' U9 e% f7 M# 谱聚类结果
" c: V, m9 l+ G* {# Sax1.scatter(normal_data[:, 0], normal_data[:, 1], c=labels)" C. P5 l* W' i- x9 A
ax1.set_title('Spectral Clustering')
; W" E: C: M; O( {$ |, L
3 q! L5 i( o5 H0 Aplt.show()0 R4 D3 }0 T6 o8 J
0 `4 j- }  d! R* {/ ~2 H
1
" i% N$ K2 ^# x/ o( G0 w2' a+ R( s& q& @/ k5 V9 X
34 }/ M6 x, G  M& u7 u% y
4" u) |; z* k0 t( W2 D
5
6 F. \0 j3 U7 L3 y% Y) x( j6
+ f7 V/ I- o. ]8 L5 _7
3 }) A  q" v3 m8  d& N" T2 @' C
9
& G1 @! s$ n$ Z: X0 v( {+ z10
1 a8 a: a7 ]- _" s) D+ P110 [- a7 Z3 r$ D0 Z; c: g9 r3 I/ t
12$ E2 \( p( i5 v( v0 X  ^* y* A
13. Q8 P8 r* \+ M! ^( i( w2 }
142 B7 s  @4 C0 R( [! E
15
' y6 x; K% C: }: }* L" W16
$ K2 ]0 ]3 ^9 E1 r% |% v0 h& r7 W172 B2 n  [: N, g) U- @
18* w; D4 L3 o" n% Y
19+ R2 V8 |# s' H5 Z6 b9 b7 Q
20
& v7 @5 I  C1 b& I21
6 N$ m; ?' n* F22
, ^: l  N: ~. O) s% U# Q) a" N23; L; v0 u7 b! ]7 u
24
7 M4 X6 ~9 F: J6 i8 R25
" \% ^! u: ?0 B' G$ `, y26. C9 e0 g, z5 s- ^3 \  I, t* X
27$ _) X& y+ l. j! C
28
5 l( ]+ v; O6 x8 ^29# [6 Q. k8 F7 C' P6 f/ j8 t* L" Y6 B" i
30
3 F% v1 P) c! a2 p( I: f0 x5 c311 r! O2 h( {7 g
32- P( S  ?% X0 L! k; E3 h
33* U  {- ^  d/ M* K. O! D- U3 r% D
34
: t2 O7 i6 v% j  n+ v& S" f  S35
- v1 T, i8 Q; s1 _; T; P36
- h  s0 p* T3 @( |37
7 }4 c% ~/ {& V: Y4 \% t385 O  x: `- e- w+ B
39/ \8 e6 m. x$ W
40
) |# o) T% D2 U3 j7 s41
9 z; X8 a# G0 f42+ e+ J& S7 q9 ?2 W, w$ Z9 \9 F
437 {, I( h. K8 m$ K( _
44$ ]5 i( E: z! b
45
8 O& T' r3 {* v8 d8 D, v46
2 S" a+ i0 U7 C9 q# @* o: S47$ g) ~5 I0 G: |3 B( q. {
48
3 J+ G* K4 R+ x5 D, O  q7 x# ^. A49
: E4 e) v- O2 U  u9 r50$ \' X8 N' V  @- _5 T
51
7 \3 D; n; O" P) H5 t52
  a/ F$ |2 g' `3 t- H53
4 G( T3 c" x  `( I/ L1 J8 b# {54$ s/ q& {$ B; k5 N/ V2 E& G# W4 ]/ z
557 M7 D6 C! ]( w) J% r. S
56) o$ m: I% t4 ^
57
& _, t9 Q3 z$ t2 L: a  h& W: o0 h587 S9 w. _& e: y# p
59
& X5 T. i$ B$ t) S, r. U60* _$ J+ G! j8 d7 C6 Z* h" s
61; ^: E7 K/ |5 Q
624 s+ g  B- P4 h7 S5 }
63
* P# J5 ]" s6 ~+ c4 a+ }64
! ~' b- P4 z. F* e3 A% i65* U4 i* J, f5 O/ [  Z# {, W6 |
66+ [! ~9 R7 @: L% H9 H* B& K
67
  `' `0 T  t! }* r" T1 \68
/ [' v' T3 R2 k; B69
! @+ M. u5 t% H( O/ p' S" R, i70
4 S; C" W! e/ |6 C; A71
1 ?' j& D, A2 T! T2 U1 w72
- y/ V7 O* e  O( W; g, |& M4 E73. l6 u. Q  Y; d
74
6 Y' Z( ?8 U3 q2 e! w7 L75% p; \2 o% v% `* z4 e+ G
76
' o/ h  N8 T/ T1 K. ]. w- ]8 B5 A77
+ l! v) U1 K2 S4 H7 ]" m787 L5 Y; O* ~3 X
798 j- @; _1 R5 G$ \3 I
80
" e7 w$ s3 ]! N. ~" G+ Q81
$ u! ~% p2 \$ p823 u9 x' Q* ^0 o8 g4 k
83; z8 O4 M8 n( Q5 B; X9 e' X- m& n
840 i' s+ N0 Z* ^5 S
85
# S) r8 R  r/ w& m. C86' I3 u! _! X5 I- q7 y! O" P$ F! k, e
87. B# H2 S: n. o- d: F
884 K  w" J# Y3 b) F+ R7 ^, Q
89
  A* n  |1 |  h3 y90
. p- T1 F6 I( o6 y  j% _2 ^# I91: h$ t, }- S$ q5 w& Y; W
92& R* ~  W3 U  A  a/ Z0 Q: W
93) @7 P9 ~* N( w/ F: g
947 A. t5 m( V% E
95. K* }. m* _1 D5 Y3 h; c) E
96# r$ \5 {" R, U, I9 \, P4 ]! y
971 H- [# ~; |* ~% w5 f
98# J$ u- s7 f- x, u1 E: ~( ]
99
2 |$ R, \3 ~/ }3 B100
0 w7 M6 r& k; y8 u) `" J% U+ G1012 }" @8 @6 ?. f% Y; f6 d8 }4 o
102
' y2 ]# A$ w9 S* a103
' k. P* `# N' [' l# g8 Z(高斯核函数)
/ @& u% j* w7 `5 N) E& L8 x6 B
% b$ q  X# y# `) E1 u# t* W
5 u+ D3 g# s) P+ E9 C' R) E(K邻近法)
! l' N& x" m: V* ?) R5 x% e
8 w9 v  R, l0 g
: a- N  _) U, w. r四:谱聚类算法优缺点
1 `, L' T9 [$ W(1)优点
# Q& U$ v: O. `4 L谱聚类只需要数据之间的相似度矩阵,所以对于稀疏数据的聚类很有效
$ ~0 V4 V: f9 D- _; L使用了降维,因此处理高纬数据聚类时复杂度要明显低于传统聚类算法
. u% o2 U5 h( ~$ G2 d$ \# Y( b谱聚类算法建立在谱图理论基础上,与传统聚类算法相比,它具有能在任意形状的样本空间上聚类且收敛于全局最优解
* H3 @' y: [6 B2 D5 J(2)缺点
! |0 s) t) `: k. t( O6 o如果最终聚类的维度非常高,则由于降维的幅度不够,导致算法的运行速度和最后效果都不是很好3 A( ]; X. k5 G7 Y5 i
聚类效果依赖于相似度矩阵,所以不同的相似度矩阵得到的最终聚类效果大不同相同: Z( m- N3 f6 C( f: S; x; S8 U
————————————————& |8 k$ r; |& ]
版权声明:本文为CSDN博主「快乐江湖」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
- E* Q! h7 H+ ~原文链接:https://blog.csdn.net/qq_39183034/article/details/126747494, s4 y, U9 A4 B
4 Z" p/ I1 W2 s8 S& F, E, K
5 t& {) G  v2 y% F# c  z. ?/ x





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