【数据聚类】第八章第二节:谱聚类算法之切图聚类、算法流程及其实现 $ @5 p0 e9 B, j0 u4 O' i3 z v+ R$ B1 J. I
本文部分内容源自刘建平博客,在此基础上进行总结拓展 s5 x0 O, v: S
; |. C( X1 b8 h原文链接" m. i) [: j* o8 y
文章目录* B2 S" _5 |! s# M
一:谱聚类与图划分 9 c0 X7 H& W; D4 j( O& N- c(1)比例割 , v0 K3 h7 g' n) [3 Q(2)规范割(常用) o5 N M: k. b1 p) x+ L
二:谱聚类算法流程8 B" d' g# ~. K7 |: Z W' r
三:Python实现1 d" T6 a. k. g7 ^# X# O) z
四:谱聚类算法优缺点4 P( A( D6 A" o; M- P: o- W
(1)优点 ( i. n" m2 U1 x; |. T! i- W/ K3 U! F) n: a(2)缺点! m* p9 @7 T3 W$ j
一:谱聚类与图划分 ' W# F' d0 H4 l) G! S$ n# S无向图切图:谱聚类算法根据数据点之间的相似度将数据点划分到不同簇中,因此将数据点映射到无向图之后,可以转化为图划分的问题。对于无向图G GG,切图的目标是将图G ( V , E ) G(V,E)G(V,E)切分成互相无连接k kk个子图,其中 Q* f& @) ^6 d; G7 h
0 u: }$ _/ z9 j; k
每个子图点的集合为{ A 1 , A 2 , . . . , A k } \{A_{1},A_{2},...,A_{k}\}{A : a$ l: m8 ~. }, B
1; F4 V! K0 c" @9 m' e7 k- ^
- j5 ^/ R& n$ Z( @$ n
,A ! q, a* M' N4 x; x+ H8 s
2 7 ?0 j" H1 V/ J' K; \4 U7 z) _9 Y& L7 V9 `
,...,A q* a% L! S" q- S
k9 i4 s( m' R) U+ m
6 u" g9 c I( x# e& _ },且满足A i ∩ A j = ∅ A_{i}\cap A_{j}=\emptyA & S- B+ U6 w6 l! k5 ui; Q* `& `# O* Q* H+ \* q* R
2 m2 Y' [9 u/ q6 V4 `& s) i
∩A * H c7 X1 ^) ]; R5 `1 t9 @ t9 vj8 n: s' r" u( S; c5 s
& h5 ^& E0 \2 Z4 j* o) ]) ~# a' W =∅、A 1 ∪ A 2 ∪ . . . ∪ A k = V A_{1}\cup A_{2}\cup ... \cup A_{k}=VA z% h# l: K# N1 W/ d1, F9 p7 L6 v! H5 N
]. V" j6 d; w! G1 o; U ∪A " p ?$ N9 A- O% l. {8 ]2; n* k* ?( X7 ~$ @
5 I( C, l+ ?! R0 w0 O ∪...∪A * a3 t- E3 C" Y4 ~" F4 v. G! gk ~* E* H) A+ V, }2 X: p0 _ S8 ^
=V 0 c# P9 l7 @5 W0 T对于任意两个子图点的集合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)= 6 H& Y) d) i( ]: [: i; [- A
i∈A,j∈B5 P# W, ?1 E$ Y4 H2 E6 h" V* |( l, R4 h
∑; |8 v& ]' L& ~! h9 ~5 e" E
8 e! y; Z) V2 A6 Z: l
w 7 Z+ f. ]& M( _% M4 v0 Kij( L7 L6 L' Q' z0 V; f! P8 P
" C! N! @1 R( |7 Z* E/ \
2 z6 G! I2 K% q" T! ~对于k kk个子图点的集合{ A 1 , A 2 , . . . , A k } \{A_{1},A_{2},...,A_{k}\}{A & t+ b3 `- X* b2 \5 T8 p
19 j# Q3 q+ O' ~, I/ ~9 ^
3 J) y3 i @: D* ?! m8 u9 w" A
,A ' E; m! J% [4 z7 u- I6 }+ t# O28 k. i5 z y- Y; d2 ~" u
* r) u5 e C% }. n! v A2 h" ^ ,...,A " D9 L; s' L1 X; u, e* {, g& ^1 }
k t, k2 z9 U S* ^: H8 `
2 y* u8 E2 L ]0 `9 N" E" U },定义切图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 4 n9 M8 g& T& P; n: \/ G
1 U8 ]* X0 x; Z5 `0 }, v
+ O& i( b2 \5 g2 ~( C
,A 5 }1 B; L7 \8 d/ V
2* |+ y" H4 N# u$ B; z
/ N, W, I0 i! O. G- A* N$ Y ,...,A # `* d$ k% i1 p- j$ vk c6 e( M. [1 V+ x1 o# L& W+ q) y; A) V% @* e( E
)= - n: b% H* F( c& B. T
2, W8 p* S9 V7 G
1 5 R: a7 \" U! `2 c% m4 J+ J5 u" [/ G! B4 g3 K8 h
( F# p) e8 X. W) q4 a+ bi=1$ u. e) S/ Z$ T
∑ ! ^; G C0 y6 e H9 n2 Gk {! }) D2 Z; k& }
4 T! E& F- u/ L/ \8 n* N* x W(A ( w) N) M2 Q6 W" D
i 7 X0 t6 W, A( p% P% U' l4 P" B8 c* d- z& Z5 n( d. F' }- Y
, 8 P% h9 T7 |/ k9 c4 u+ G
A 6 F J1 Y! x- ^4 Jˉ 2 T; |9 P. P: T3 ^# v # p7 g% I# u$ Z: } O5 W$ v9 k. x" Ui + B- O$ ^' ]. ] 1 _' ~# P! e6 y: Y: F( V ) (其中A ˉ i \bar A_{i} 9 c! {: q- `: e) \
A- L$ c+ s3 x7 ?5 F$ ^) t+ \
ˉ% [, @+ X- J. f9 H9 Z W
/ l4 U- N# s, f% b0 d+ o1 Ni8 L* P7 U% u/ h4 J' c# w( S
+ A3 a1 v6 M) q. u0 k 为A i A_{i}A 6 q7 S( x7 n* d) G
i 9 A) x9 Y- {, s c& q# R9 F2 S, m6 A1 t6 z2 y) Y/ Q+ k
的补集)9 L6 Z: W. C9 I6 R# |$ ^
可以看出,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 ' O) W- b- l; W$ a7 P7 g
1 . C7 t' v# Q3 z. n/ Q: x : n3 H) Q8 ^- d9 w ,A ' h8 ~! [8 A4 `5 E- b
24 ]% J* J4 g* G, M3 X
0 g: N) F3 W" s! J4 {
,...,A $ I0 ` ?% E1 n
k& h5 W1 W" j; u2 c4 Z* v( Y" B4 I
# C2 g# s! O) O# Q V
)= 9 {7 `) K8 o( O: m
2 0 Q K. b4 n1 H5 a1 j) W7 H1( |7 L- X. @8 h# ]9 d) L2 {% `
9 f4 J1 H5 U6 x' |0 V4 p" L, s* L7 N7 f- u5 }( P
i=1+ h8 v& h7 e9 D, p9 i( J+ N
∑ E3 X7 Y9 I5 ]: P, dk 8 j S0 k4 o( p/ c 6 |& h+ \' }0 O3 ]: O' q9 U" `8 M W(A , Z8 F) @. K/ \, v% o: oi 0 j/ C& B0 {; j# w' l$ D; z6 ]- ~0 D" M
, ( k( K F: g: h+ o" f
A* c7 O# B4 ~$ F+ z
ˉ1 i1 Y' {7 k' I' [; Q, u; i2 h! d
! g6 k9 z6 a+ z2 {& [. L S$ W; R
i + a/ ^+ D6 T3 ]$ X- l ] $ o' Y: i$ F* \2 j$ E2 n1 F' p )在划分子图时并没有考虑每个子图中节点的个数。所以在某些情况下,最小化c u t ( A 1 , A 2 , . . . , A k ) cut(A_{1},A_{2},...,A_{k})cut(A 4 G! w/ I$ d! h( g0 }. \; u
13 \6 D$ _* T" d6 p$ P) w0 E
+ l: d- K, a* H5 _+ \ ,A * i% U7 {. e4 S0 v$ m1 R
2) g+ m0 Q) c& I9 n
) Z6 J, K4 D5 S6 ? ,...,A : \4 `" U4 R8 [7 Rk 6 p5 t* ? x! p. W& M0 G4 r+ b% \+ d, ^& s6 j
)可能会把一个数据点或是很少数据点看做一个子图,导致子图划分结果不平衡 4 [4 M+ X- G7 n4 D( u. s7 o$ p, `* V ~1 Q$ U8 ?9 r
例如下图,选择一个权重最小的边缘的点,比如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 5 L5 `2 t9 H+ t/ p" K% E: d1 % h/ P/ Q2 i" D1 ] j# P8 A + X0 m6 f u6 E% u: e2 j' b7 Z! a ,A : a: t8 C$ Y. S/ ^7 b3 x6 H5 N
2" Z$ p$ b# S9 V2 W
+ K$ O# c9 D8 J
,...,A 4 d1 h$ S/ G& V% X9 F( d9 g
k1 D# h; i3 s+ U) u& z
6 w. v4 X/ i5 _0 l
)但是却不是最优的切图9 y# ?9 o' i' ^; \. [3 w
; I# O6 |! w& I6 W5 G/ V7 b/ G- [
为了解决这个问题,会引入一些正则化方法。最常用的两种方法为比例割和规范割 ' m, Z6 F* f O1 m . |* q% X. C/ U2 {$ X) V1 T比例割: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 + G3 h$ G9 }6 a4 A- m1. _& `- v! |, I7 u* G+ D4 Q
) C/ |4 }% |( `( ~/ F
,A 1 w% k" V: x# z E/ z
23 \+ W( q( {2 k3 h
}1 r) M& Q4 L2 }) ^
,...,A $ B6 s$ e/ A& I+ z. I8 f7 Ik ' `4 V' q6 O. X: \6 R- w% r: a+ T 9 l2 c- O$ _& [2 c# H% l$ x+ x3 m )= 3 o) [$ h: n# _2 Q24 n( [2 ^1 n2 z4 V8 E5 T+ A
1. k9 O) G5 ?6 I2 D% q
; S- p3 k8 J; t6 ~1 |, J6 T! g$ {6 I8 s# f! S/ K$ q2 b4 x" u
i=19 o0 |* y }4 R; Y. H j
∑' \2 F8 H" Z+ @2 ~
k ( H% G% s3 c7 c2 }5 s0 G - _7 |. e+ Y% }3 `. D + ~; [, m8 b2 v8 m5 X) _2 G0 p+ S∣A : ]2 D' l: i' H/ j: c; d5 U3 }i+ d- L6 L/ x1 x# d
# \7 j0 |* W" q- h- I ∣8 ?( A0 J' s/ n
W(A 1 i3 G- a& {6 H5 K @6 |' x4 B
i7 u; Q& z4 V- t% u" n( ^' L
5 J' o: Z: G3 |) K9 w , . x, d) z: P4 ]; n% I+ G+ e- m
A 6 Y; j$ c! B8 X+ jˉ + Z' u9 f1 a E2 m( C6 P5 G , r: _; i; H- B$ \i6 v) n' @- I u; r4 |
* N, S8 C r* s( g
); U T. t; ^+ o. q3 m# b# V
! @* {6 H$ ^3 b4 i' R2 Y) j 7 i- L( s# l2 u9 |4 ~规范割: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 3 }6 n0 b5 A* H' p
1 6 j9 V3 O5 K1 o0 t. m7 O $ W6 K% j C' ~( o! v# I ,A ( H' u* b9 q8 ], c$ C
2 : i7 _( ]8 ~6 c6 w% B* a( j" O4 v7 a. N2 D) q3 p
,...,A ( b$ B$ p e; F& Y1 B1 i
k 9 N9 E3 C" a- V+ ?6 {$ A9 q4 ] + c/ U8 z' m! H )= . c+ g$ P4 k1 z- E
2; r Y, I% v3 O
1 ; t f) U6 @) ^2 }! ^" q2 A6 d& c- H- X/ r ~7 P
2 @9 J5 k# K( v( h) g! U% _i=1( h( Q( o1 `8 o! F
∑ 8 K- q5 w6 @* K6 Q. C) Q% M0 Fk: I- B9 I# t& p( [& \5 H$ T
* H. c& p% ]8 E/ Z
# ^5 C5 z! I2 b+ y8 A* Q" Z
vol(A 2 [6 _1 J# H. O( O$ U
i ) z, E9 n! r+ u$ N- u* y. c0 p, D% d
) 3 y$ T' ] C3 _# YW(A # n3 Z$ b0 S, J0 p# Ri9 D7 v$ O) o: Y; [# ?$ g2 l, _! Z
; |; ] m. h7 h, ]4 p; u
, ; d( E/ { ^- a+ ]% x( ^( `
A 6 l' g7 u4 \, U6 }. t) C7 q! sˉ5 x0 R/ R& k: X5 }: X
+ \1 o6 ]* _* \
i 5 L$ ]7 n, E( M, u$ W, O9 N% c) G2 {& u; |
) 9 C9 V3 W3 g7 N! M% c6 j! B6 R* x7 T' D: W% H
$ y4 s) N8 V8 y# V9 h
(1)比例割 # \0 L) S! b" u8 P' D) f4 m引入指示向量(点击可查看指示向量定义)h j ∈ { h 1 , h 2 , . . . , h k } h_{j}\in\{h_{1},h_{2},...,h_{k}\}h / w: j+ C$ J9 N2 I e* fj6 O$ A" o( D. {+ `% S2 t9 _6 ~! R
$ l: U3 D5 `- |9 ]! e3 I ∈{h 0 g4 x; m, T' w1 U& q
1 1 @# C( ?8 d; M1 D4 Y$ R- ?3 C( y/ e: `0 I W' j# z+ U( r' C
,h ' j# z/ U# F) A" m7 Z: ]6 A; P3 U2$ y# g) a9 E7 L" `) q3 w/ X
: P1 ]5 J" I' p4 |
,...,h , r( D2 [7 |) r! n2 \
k3 X& B( k2 t. s
' X, N; N! z3 {; l$ ~ },j = 1 , 2 , . . . , k j=1,2,...,kj=1,2,...,k。对于任意一个向量h j h_{j}h 6 h& j% _+ C: N" E$ X3 L! K9 j" o, }
j 6 h. ]- n: y' a9 V6 q! w: g' T5 g/ E$ J- F6 m8 r1 p7 f
,它是一个n nn维向量(n nn表示样本数),定义h i j h_{ij}h 5 @# z6 R) |! V& tij4 c4 `! }! ]! ]5 p1 m
9 Q2 n+ o% Y! F/ P3 H 如下 . O3 u; D s+ P% R- u; k+ M+ M 3 ~2 d, ^* t7 s$ e8 A$ S# h$ mh i j = { 0 , v i ∉ A j ∣ A j ∣ , v i ∈ A j h_{ij}= * h8 p( g4 M, d6 T{0,vi∉Aj|Aj|−−−√,vi∈Aj 2 L$ i$ r( F* X( ?6 H% v! }' s{0,vi∉Aj|Aj|,vi∈Aj2 x. Z% m+ h9 Z: s* w
h * A( Z% e$ a. q" |4 h. X3 [
ij. j0 o8 Y9 a: i: W
0 o3 C5 h) \' H' h0 s
={ ( a {# U" x; |6 V; h0,v 0 {! C5 Q% q! \" [) |i2 ^: t9 b: X9 H8 Q& s. B
- t" B) ~* B; @# c0 p2 Q
∈ 2 T' L) M8 B0 f& E& L* O) q# c9 N6 I/$ x u2 W1 D8 z
A ; Y% t1 n3 ?1 S7 A
j 7 H! k7 S4 Q" U8 p' N* m; h' v1 ?8 v J% }# x7 h6 R$ T$ V. L& H
6 M+ {% @- Q: Y* m/ g∣A ' T- c7 `- P4 L" T7 D5 T: e
j 4 C0 D9 u4 O8 n( {7 s# h" i$ B 8 C, f K4 ?( W# R. ? ∣ 9 Q) o* d0 k7 G$ q3 Q$ X0 b 8 U$ j) G2 H; C& g7 q ,v % J; ~+ H( y8 C3 ]/ T8 bi ' I) F. H4 m, S6 h2 G2 }; r4 v8 o# R( {* H/ J2 \. S
∈A ) [0 z8 F. n* O+ D' R1 P. O
j 8 ? w2 A+ d% q 9 r" \8 {. N. F. C- ` . \5 w# m( s/ ]% A/ ]/ a" M! c+ ] ! x( R L" X5 a) x) _ B& l# i2 F: \# _7 b8 n! n * E e8 |' y, O6 c( O4 M) [于是,对于h i T L h i h_{i}^{T}Lh_{i}h * s1 M" Y7 m( l9 s4 v8 Wi* d+ g2 i9 h2 V; j7 X. x; o+ T! @3 l
T' w6 l4 ]) M: c( D* U
# Y) s/ G) M2 `1 F$ e- k) F Lh 9 o) v. p. b# x; w7 ~# T, E+ Xi * d$ W" K& v% Q( g/ E$ C* ^9 w( s! a* G, H: |% N) ~4 m7 J$ h
,根据拉普拉斯矩阵性质可知" l: j8 ^( z3 m4 u& o k$ K5 n
% f/ U. z4 K* n" z0 e& ^1 l3 b
对于任意向量f = ( f 1 , . . . , f n ) T ∈ R n f=(f_{1},...,f_{n})^{T} \in R^{n}f=(f 5 B+ c6 ^0 z7 C' \
1 4 a( ?- g& L# K9 n5 D) U- C: o7 o) H) C
,...,f , ~" ]% ?4 I7 q1 On$ r2 Z8 S# I: y
: M" n& ?: D( L. G. G
) ! X) M( n4 r5 d& }+ [% p
T% z1 A/ z2 \4 G* P4 m! [
∈R / E# o# W7 u* p, pn # W, n* P9 S9 H# ^0 a: a6 G ,有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 5 n& @" o) ~+ R9 g
T4 X/ Y) e+ y* D# `7 @7 M
Lf= : N* w" t4 r$ k4 V% z9 h' o2 % i' k! g/ H# V- p% O" U; G1 & M. ]9 o4 C6 V: r: J. ]* }% S, R; d" I2 b1 m% ?9 e8 ^
- U/ N4 X' z- Y1 wi,j=1 % K- e4 B" l+ O9 B# f) h∑, j; I9 v5 d a) m% i
n / C5 C [! Q# K P& g: K" z( d2 B6 f8 N( v; S
w % M5 g3 Z/ L: |# |8 z" S/ y4 hij4 n* |+ ^$ d! m- t# W4 I
7 v! N# S! @8 J+ g; P( p' l9 H2 \6 l (f ! {! X0 k: p) M2 q- _
i3 j" g5 E5 N( v; ?1 |( M
! E% L0 R# [5 s# X3 r) e1 Q −f & k- B) s1 s! {: I( R* }( f+ [) \: Sj * J" @9 F+ G) t" R6 }" b , ?9 }' Y7 I [% t- ]5 E# I ) 7 a$ z( l J, C2 Z+ _
27 @6 J5 m- v# q0 n+ N' P8 z
( z1 p; [+ C. u* L" v/ @8 Sh 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}|}9 ]# {3 P0 [- s( g! l" Q
h : a, n1 ~- g* w5 ni + h" S- s- T7 |/ r0 D. f, F8 XT" N' q. X8 T' E- a( L
( y& D! @8 ?+ M4 F" ?0 N Lh 6 Q6 E6 [8 |$ z
i . R4 @! q" F3 F1 \% z2 _ . \* s" I$ q- D% v = , @6 w4 { ]" J' ~2* o3 n3 e# G6 T/ k' o1 s
18 S9 R5 }4 w9 ^# q
) I* J$ U) y/ | L1 n
/ n9 o( j6 {. i- {$ s
m=1+ o7 Z8 M) H% d6 u$ S3 F
∑ 0 R8 \) b% Z# ?2 i8 Y" _: T6 A. l+ B1 w. v
/ |# J# Q. c$ D/ o1 N: V. Jn=16 ?2 h9 q' P4 |( Y7 h) ^
∑3 N, Q' m$ ]' c1 R
7 Z% _$ N$ [8 \5 h$ R) t
w ! s' p8 Y$ W" {4 `. P* U& [6 ymn 4 ]8 R+ X. f+ p, E* p6 n1 E7 n ) W7 o9 L0 a4 s, ]7 {* f# ? (h - a' f9 d" x9 h9 Z2 |im* @. V( T4 [8 f( I5 F, X+ z
6 \4 r* l- t: o5 f9 F
−h - _4 m! ?8 l3 a# d* X$ c2 v
in/ D1 M9 u/ G. Z. D$ }5 m
5 X. B0 \* V% x& |. E2 m ) # n1 |) H, {# T2 ?2 B3 ?4 f6 N2 ) P1 j" v3 E6 M$ T = `3 x' Y: w2 \3 n' x
∣A & W1 i2 [- ?. ?8 r* U( X1 Hi/ Q' ~, s8 ~. }. h
& r7 ^( E' T/ }( o3 s, r
∣3 [0 u0 ~- `. k2 C
cut(A 5 e% L( [# b9 _& g. {) s: L; li1 p: m( [- h; D0 F9 q
" A' u$ l" b# K, {8 A0 e
, : f# Q9 j5 v- X8 ^( A
A 7 Y7 z$ y: X1 aˉ : g! H% C% k% Z1 n! F ; K) G Z$ @4 Y) A" k- N+ Z, Hi) r- d: m5 n7 _4 x
" `2 c- t& l% ~2 x8 i+ a ) " U4 D# s( t; v7 {% U- v , a8 b& G1 ?1 P9 ^, j) j. N4 @& E3 S" Z( \9 F0 X
: H. s! W0 m* ?: E( f1 q
严格证明过程请看刘建平博客:链接 7 G l0 U2 y: d# h- A" u# e" l6 ~可以看到,对于某一个子图i ii,R a t i o n C u t RationCutRationCut就对应于h i T L h i h_{i}^{T}Lh_{i}h 2 J! {0 v: Q$ i3 T& y. |
i ' x* I# ?- x$ R% j# ]/ g7 aT & f# H* c# s/ P W5 W4 K6 m8 A0 f: e, r5 ]) `3 o; Q$ e
Lh " q) _/ S# w! K6 S2 @& n$ j
i7 z8 J/ I/ W9 ]# s3 p
: C1 L4 ~ q$ D7 E9 n8 S
,那么对于k kk个子图' e0 d0 x/ i' b( Z, n8 m1 V' l; n
6 @, H. S4 Y; Y: Q6 AR 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) ) t6 n K3 A# q& VRatioCut(A $ C7 ]3 I4 a3 @# I2 D1 ( T: ~+ ^" u, [% I, _6 e1 }% G, Y- m6 E& ^$ E
,A * X, N& R) s) g ^1 N: u% j2 5 d/ o& s- d4 q! ?3 }+ _, t . o% p- P. [5 F1 D: f ,...,A 6 K" f; @/ j. M( e* ~
k & y5 t8 K% ?9 v" H% ? . Q1 H/ Q. h1 T. n1 V+ G )= 6 _" s* l' `+ @" C c
i=16 G9 T( D0 w- l9 I
∑" K, x' F3 ^; c" p2 \
k- W5 N$ |4 S* ?+ `" d9 m
: @! t4 v0 R1 Z( R* z" P h 7 S6 |9 G; \, \. r) V* d
i: P) f2 b7 G7 I8 q S- L* Y8 `: f- E
T/ T5 Y5 F* b0 T
6 Q* Y$ @; j+ K$ O! C" w7 m Lh 4 k1 w! a. J0 f) ^
i7 F, N" ^0 \% A6 b i7 G6 G
h* S( Y* t- W1 K = / }/ ^& p6 V4 |' Z& j0 q5 I+ [
i=1 7 v& g! D5 j4 h% @( i∑ / g5 H- {5 Y) c: x, nk ! p/ f7 g9 k+ g5 C! { % f3 \( I6 j. m# m; j (H # p' F6 [( T5 O
T % o2 Z5 H. d* q* v5 b1 z LH) , _( {; g, s$ x4 g0 Z
ii$ s+ E0 u r" ^6 Q+ b
) _" m$ j7 j4 ]7 [
=tr(H 1 U9 ]/ }9 G- G& `1 ]T ( g9 \" C, W- h# d/ N- P9 u LH) 0 b7 f8 m @1 [% a; J2 o & _3 T9 X2 Z5 z8 T( G因此,R a t i o n C u t RationCutRationCut切图本质就是最小化t r ( H T L H ) tr(H^{T}LH)tr(H # {3 u; [' O8 q8 s& [
T + N' p; }8 Q- r1 o6 i7 s5 B; g& o LH)。又因为H T H = I H^{T}H=IH " ^0 J% q6 o/ A; U8 TT 3 J. X/ {& F" r" l9 o. I H=I(单位矩阵),则切图优化目标为8 Q9 a0 p5 _ |9 \ s2 {
8 Q; ?3 V8 V" }: O8 Ea 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=I% r3 \" ]. R6 a" I
H* f$ F; C) A- a, h; X
argmin! K8 J q/ {& r: {# d, s; ?& M
/ ~' |" j8 U+ i
( Z& Y! Z7 n+ C5 ~
3 `3 t5 a! q$ L. ]+ p( k; w/ S, v7 ~
tr(H 8 |% B5 e2 c3 P4 \0 NT ( W0 V/ B# V/ _- m8 } LH)s.t.H % [7 d3 H, N) v' C$ `: g% rT$ E0 P8 N/ T; ?3 J
H=I 3 v7 |+ Y7 {/ ?/ p 4 l7 i6 p& ?' A对于优化目标t r ( H t L H ) tr(H^{t}LH)tr(H ' T9 @4 u& N: p7 T6 R# B) st2 V. }& m8 M3 E
LH)中的每一个优化子目标h i T L h i h_{i}^{T}Lh_{i}h 1 t! @- C% q: t" i
i 4 a2 J2 K) ?. ZT ' t5 f! E4 _ x" n$ M" E3 |1 w8 e* N. }8 [3 w2 B
Lh 0 P A; c& Y: p3 n, J5 T
i ; T! |8 b) a5 k2 g$ a D. Q( ~; W* z) H- W: o4 R# @
,其中的h hh是单位正交基,L LL为对称矩阵,所以此时h i T L h i h_{i}^{T}Lh_{i}h - G# z4 B* J+ [. t4 f
i! n, w0 V1 l# H* U" y& o1 @% L' Q
T 2 H6 g* [+ x+ f- }6 @9 K0 q + d: D" _) I+ a Lh 1 W- a5 E- b4 F4 ?+ @
i8 j' X0 W3 C2 X0 e
& N. L: U$ ^ R, G1 Q2 h
的最大值即为L LL的最大特征值、最小值即为L LL的最小特征值。而在谱聚类中,我们的目标就是要找到目标的最小特征值,得到对应特征值向量,此时切图效果最佳。所以对于h i T L h i h_{i}^{T}Lh_{i}h 2 v2 R2 k5 E- w7 W1 {4 }
i # |: x u! _# u5 [. p& n' a, yT 6 C, G$ S! I+ [9 X X1 f1 @) r* t2 ~+ H( N0 |' N6 `
Lh # L& [7 H9 g4 u* B Zi 2 n) N: {* X W( J7 { m5 y) P7 c( T4 d
,目标就是找到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 d9 F* A- a) V V# Q/ w8 a
t 8 d7 s1 Y6 r, u! ]$ L+ z/ [ LH)= 6 u& V1 f5 A0 B/ t* s% c4 j. vi=11 j# \$ Q/ n! d4 B j( C
∑3 r% B, O7 \: F& g9 n
k+ w4 u' R+ j5 K$ z7 R
- ?3 o- v& z, I S; `) q h " p& Z* r2 C% V4 r9 u: D# Ii# Z" B% U* E8 u5 o0 o3 e: k
T. J% t. e5 n. T& s
0 A8 F4 W. N5 b7 q: c/ H
Lh ' [ O; p! j4 C- c% V# g8 C
i$ \* T3 {, x$ C6 t
6 d( |; f2 }% Z
,则目标就是要找到k kk个最小的特征值' R9 O2 x: l- D& u+ ]: k
# p2 } G! d5 y$ F' {) j B& g因此,通过找到L LL的最小的k kk个特征值,可以得到对应的k kk个特征向量,这k kk特特征向量组成一个n nn×k kk维矩阵,也即H HH。一般需要对矩阵H HH按行做标准化,如下+ V: [* t- R1 Z$ _! P- y
$ o) u& w( `7 {( t
一般来说,k kk远小于n nn,也就说进行了降维( T% [' H0 H3 H5 u
h 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}}} 4 z5 i6 I+ m5 `, K# u+ Hh ( m8 v8 Z* B1 r. P: p/ @ij + J9 u" m1 m/ Q+ y* c& v∗ o2 a; u# N7 l/ J; h R
- H* p2 O8 K4 i" U; N1 u
= ; c y, v& q! H4 f5 N
( , A% F+ V0 p# D9 X& r
t=1 ; R d$ x. X$ h, p1 }' A∑& X% z2 |2 d5 f+ M) ]7 C
k# u8 J; K$ L6 S- F
6 a" m+ L4 B; ?
h & B6 G! S I8 {& |" x, Qit . Y5 ]: x l# e4 p26 }; V- H8 n0 q* W* W
& q I# q6 }5 B* y$ R ) ) _ A2 r- m3 l0 q/ g
24 F: ^. t. q W+ S: ]
1- {! O. _. a; F
% u6 f& [+ z" T$ v6 q( f2 t5 L2 K* D* W
: X% X8 T7 J% q: ~0 |# r
h ( S- b- A; M1 o5 T" k7 a
ij 4 s* m }+ ^2 x% X# z / I6 S, Z) a- K0 y, U/ b. D, R + V- O& J7 G5 h* \$ H$ [- D/ G5 v% u6 h
. ~3 H9 z0 l2 [6 a, j! |/ U9 K+ i! T4 H9 G7 @
这里需要注意,降维后导致得到的指示向量h hh对应的H HH现在并不能完全指示各样本的归属,因此一般在得到n × k n×kn×k维的矩阵H HH后还需要对每一行进行一次传统的聚类,比如使用K-Means聚类 & F5 T! ~' o* E5 [9 e+ d! A3 ?0 C2 I9 B9 Y1 h) v
(2)规范割(常用)! a2 U6 d1 o$ N$ |5 ^$ f: M
规范割和比例割类似,只是把比例割的分母∣ A i ∣ |A_{i}|∣A ( ?% r. x, j9 ~- D+ Ri8 }0 j, W2 D! O4 T& ?2 S
q" O/ J2 z* \- B/ x+ [
∣换成了v o l ( A i ) vol(A_{i})vol(A ' ]7 q, L, R4 T7 Ai0 E/ m4 }( l6 w+ J
% o# ~* G( E3 |+ P: l# i' Y
),定义指示向量h i j h_{ij}h # [& Z# J+ G/ _: g
ij) k* x* A, A8 u) {$ f
. C. R6 n2 m; p3 L' F0 w- Y+ x 如下 % C+ _# V# q; @8 y* U& e9 }: h: e+ ]( E; T8 q
h i j = { 0 , v i ∉ A j v o l ( A i ) , v i ∈ A j h_{ij}=; O4 O2 R/ e) w) U9 A3 L! a! r
{0,vi∉Ajvol(Ai)−−−−−−√,vi∈Aj - I0 y" B8 ?( P$ N! S" w$ I{0,vi∉Ajvol(Ai),vi∈Aj . m$ f# g7 d( C$ O# U# x Hh . q5 s/ Z3 ], j: Jij; k5 E, J! b/ Y" ^8 C+ N0 _: s
8 w. Z" F8 o6 Y& x/ M; C
={ * b5 p% B6 H5 C; @. F
0,v : ^0 b( L n" p F9 F
i * k3 P1 u; ]# c+ v! d5 l- u" a- X2 e- b! G ]9 A2 y
∈ ) E; l0 h1 W5 O, ~3 ~3 {$ w/: |; m3 x3 k& T/ P( e, l
A $ A0 n: p f% K6 e& Ej , l* W, I; d( `6 L/ j- c4 J6 h, S9 s4 x' M- M c+ h; {/ i
: L& z7 |4 G8 W9 E* ivol(A 1 j: K2 [) ?+ A$ P1 Ei ; F3 S+ T9 k% ]1 N6 \" _7 e 6 d5 p: v& e3 [2 s6 i )0 ]5 v) @. H$ |" A9 g) z0 k( x
+ W$ B2 n/ \( q& i4 K
,v " g) F' n6 U3 C: K2 W% U4 U5 j
i/ f M: O# {2 ~! d1 H/ a
! {1 g- w, ?$ r' H! | ∈A 5 Q0 D9 T6 ~+ J. G A# k0 c$ k
j; b2 A6 C7 t6 m: M/ b( n' t" w
( b x6 S% p8 J
' r1 X+ _- L/ V, q" ^2 q0 b8 R3 Q3 j" P
+ _3 s% {4 p9 w4 K* h( p # m) A% R+ X: q# S+ `. W k! l; X于是,对于h i T L h i h_{i}^{T}Lh_{i}h . _, G5 }( ?) c: I. X1 x
i ! x% Y, B/ k; J$ ?/ n" aT * {, x: B7 X N* l" F% m) w( Q/ e/ [; r, e! ^: n( r
Lh : `6 b$ I& R+ k& N) [7 ?* G$ Ii: o) p3 s& Z1 r$ o
9 z5 ?0 s; r- c; @) C5 l
,根据拉普拉斯矩阵性质可知3 j/ G: d# I! J# V; W. A8 c. F
, o" e( t4 ]# I4 e, ?- t3 U对于任意向量f = ( f 1 , . . . , f n ) T ∈ R n f=(f_{1},...,f_{n})^{T} \in R^{n}f=(f ' ]7 V. Z4 [2 m: u* C0 R5 q
1; y5 e6 G: j1 X A3 f! K( U
8 B- \# i7 F+ d& I! Q; X0 q# O
,...,f - R! |4 I$ Y/ c, B" S- r) ^
n3 m' n: }# ]3 x/ u/ d6 A; W
1 U) ]+ d' u" I% y/ K Z; ?* W+ X
) 1 u/ n, {% O, q! `% a
T N" c- h% R* v, j ∈R 8 v' b% S# ?$ p( c8 V$ J4 _n8 X' x. U9 T" G" U# Y( P
,有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 % \" ^. b- I: mT8 ^7 M& A% J+ L" [6 c# V
Lf= ' w/ @. w i/ v6 b2 0 I) E8 X, j8 i2 v10 Z4 `9 C" h$ d9 i% A A1 W
- x; a+ S8 B! b) w, u " O7 q; e8 v4 |- U bi,j=18 M# A) S5 X1 x+ `( U" l2 k% }
∑9 H! C6 G) s5 |' {4 p6 p$ d* i
n ) O# ], K, @' a6 t% f: X/ Y; {" ?9 _: c5 |$ G6 Y
w ! o1 ~% F3 s7 _: p* u, s# O
ij ; F+ k$ P9 c* u9 L3 T/ Y, ?7 ^! G3 E9 s9 D
(f " h- P3 ?9 X2 R& }% u! J* X3 P
i8 u$ Y& o% u2 L4 P z8 t# S- h
% a, L3 x m7 Q" M −f / Z& [9 I" V4 w* m2 D, u1 C
j ; D I& }2 o' }! V! H. ^$ F' O3 s& @! n; f7 X. H( ]
) E4 J; R; d& g& x: K$ O0 }) k2 : K. `7 o) U5 ~" E6 O, D, G# r0 \7 |
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})}+ `( O* @. F9 N" Q" o% p- d2 M( b
h ( F- [7 O5 h/ {$ m( I' ]
i r& o, H$ X+ z: y, ET( s. X$ Q: \* v5 U/ j7 [
! ?# Q; d# O2 Q. o
Lh . X: F" Z) Y% o0 Oi 5 \5 v( f0 A: c * K2 K# X$ x' W3 | = : F3 W) o4 ~- r2; d' Z" x8 }- }' Z) w1 I4 f6 E% l
1, g: U; e2 I0 a
& K6 B3 ~1 q$ t# T) c ( K4 o! D$ C+ ~# q- Bm=1 ) T/ K" g3 ?/ c0 f: F' S3 A. X∑ * O( T* ~* T- D+ u8 D" b4 @, m% o) P7 B( B# k
% O9 w" _$ ]9 e# G5 \( d
n=1 ' X' U2 d; k& J8 [6 K0 C: Q; B1 x4 f∑/ X# H( k4 L7 k7 `3 K/ B
; w7 Z, P& B5 D9 F* D! o w : o& n+ K* \3 K' p; F, G" U0 Mmn 1 S7 o W. S+ |, Q F; } 6 ^$ D: R! n) N8 l8 i/ { (h 9 U6 A3 W5 b* m, n7 E4 x& jim1 t ~' f! N z, r! l/ f4 i* \
9 z- x9 U% b( s6 A/ K
−h " ?$ l! q% r' y# d% s1 B; Sin( v4 H; J3 u2 Q3 I. n4 b& n/ b
# B# R( B7 j+ W, W* X
) 0 p X& P k! i0 Z' K8 m
2* f4 }; Z: t' x; R1 c0 ], }
= 1 S0 U0 T9 @" b- I3 S4 hvol(A + c/ U4 T& B+ S5 P) C2 k2 f; Vi J" Q4 E& x' k# o1 R
, L9 N5 T4 y6 i: j1 ~7 y
)& F# p& s4 J2 y( ?2 H5 h
cut(A % ?5 l6 z$ K4 N2 [: C# k
i 2 ~ f F! L; i4 w ( l1 |2 i8 L+ K0 K , 1 S+ T) T" U- G9 ?A6 r8 _/ ?3 b, Q) e; z4 G
ˉ w; r; ~5 M7 N8 Y 5 } f: K9 }6 s: R- w& e% p8 ki 8 R5 u$ x: P* ^ T ' w: _. W$ R# C0 H$ V7 j )8 _4 f9 R4 `8 m1 B6 S2 b' t% o
# G. t& F/ x2 B5 Q6 C, K0 e4 p# P0 r; F! F8 o# u
6 j0 e* O% U/ u
严格证明过程请看刘建平博客:链接! W" w& `; R9 A* V( [. T
可以看到,对于某一个子图i ii,R a t i o n C u t RationCutRationCut就对应于h i T L h i h_{i}^{T}Lh_{i}h ; c9 \, g' D' F- M# H% U/ {i ' y& U0 N. @- V: OT2 v+ J. j! H% P& }! _+ l
0 f6 N0 X& y& l Lh ) Q7 k) u; O. h4 z) B
i ( U9 h6 V% T& ?0 s5 Z8 a1 Q : p; p( Z' [% ?5 y( J$ ?% P7 n ,那么对于k kk个子图 5 q e- B l z# K' {) @3 { * J( I2 d" C5 ]' M. ^: yN 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)/ Q2 O! ^ z- o
NCut(A 7 S2 t- s; t6 R8 _17 s( O4 i1 {( {4 y8 ^) ^$ z
) J/ k5 B' f2 |" Z' q( I9 o6 R
,A q" b: p( f' |
2 * J# b) q* J' _ & q% `3 Y* P$ Y% Q( ` ,...,A % J- c Q5 Z8 [k 6 K7 x* ]* T o- T' c1 w& ~; ~, v! ?
)= - d0 {- ~/ z2 k5 P7 Q% n1 Ii=1; C* u3 W' f# w, A# Z! I; M& @
∑ & O# N& a! ?8 x- N- T5 |& gk6 g) c/ h$ [% z; y6 v9 l* h3 S
1 W# f* p N7 u9 L% k1 v
h + E4 W& G- `) w* W6 t* yi , l" Z( `; e- p/ p4 a1 E& IT& H! C4 _, I0 a( e2 S5 Q* ?' q# k0 ]$ \
5 J: v8 K/ `( B8 [ Lh 1 [8 {' B. ?! a$ _
i 9 T* q. Z* [/ c9 K; | ) ^8 P5 v6 ^0 G2 K- S X = * M7 M U2 f% {! E! ~
i=1 0 q. s m x. ]8 l G+ H. W∑$ o" p7 g1 I- c8 v
k+ a. l; t7 I8 s- I9 d' W( O: S
1 l+ C/ ~7 b* j1 d: }7 Q (H 6 {" Z6 n( G+ U" G' P
T + P) o4 h: @5 C! R! k1 m LH) 5 ]( u, h, Y- W
ii 9 ^; ^( l* c4 @; x# v ' z4 j3 [* m2 y+ _' w+ j4 A =tr(H , P- h/ ?, m- M, i4 I# X2 HT! H% Z' c+ }/ Y2 i' i
LH)/ v9 ^9 ?) Q6 F$ A
4 D+ D! z8 f& G0 x但此时H T H ≠ I H^{T}H \not=IH . Z( J7 h, L4 H) s/ I$ KT + [) M8 w1 c2 `' ^# l H6 ^) V4 w8 Q5 V) s: {2 Y) g# ?
W* [+ X/ @+ {% l" B; B+ o- Q=I,而是H T D H = I H^{T}DH =IH : o* v9 B4 `, D5 l. o
T * g9 u8 e. y! F6 t5 A DH=I9 J- W; b: L2 Y$ k# N8 U) l
/ V; @6 e- L# _- L7 v. P- _
这是因为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 $ B+ U9 |9 C9 p6 }4 j; B
i ( |; X" d4 [& G* W+ G9 nT b& k8 ~8 c* M7 i! w$ f
$ {/ H# |3 y/ N/ h1 x Dh " E: E) t& S j0 Ti; G, f; d3 H7 b1 Z# X2 m. Q) h& Q: v
( O4 ~7 e) n& P/ W = - v U& _" V* b, T1 w) z) Y
j=1; X0 T1 }; S- t; F) r5 U8 D
∑! I3 @! I7 ]! z8 K
n 0 B, p) E. _) U) w- b. L ( |9 u. Z3 j7 K7 g3 `' ~5 E h 3 n" j5 g1 R) D, R: Tij) h9 o. h n# t0 h5 a* } Q0 U) L
2 / d- h* Z0 D7 d& ]3 Z: V 0 D6 ^$ z: s6 S d ' a1 d* ~7 t: X$ h% R( [
j; t* J' R0 Q0 ?, V8 H
& `% q, {/ N+ l7 Q = ) T- f( e" a2 T- i/ r2 u
vol(A # p) D7 x( e9 M1 m
i2 ^- g0 \$ d0 Y8 Y
; I2 v j6 g( ^; y8 @* T
); a: G. {- X6 @5 ^' l9 x5 X) R
1 4 E! q- `' u6 h' [9 _. Z# K3 Y1 t/ ^( H
7 ?+ r) G4 {! x+ J y4 B1 G
j∈A ( I! A1 {9 n: q# ]. P% |! x# r4 d
i r, ~; E5 f# X- E6 F" ]: [ q% Y
6 A5 M( b5 p# F, n- j! P& H
* e9 L% C- X- n, o∑ : M. ], T0 o% @8 H2 }% a) A7 I4 i3 V2 b' b9 t/ `' u5 y
d w/ @- x( R& ?, lj : P2 ~ v. I! R$ N/ [$ @# k* G! W7 A , G# Y% H; G3 s- { = $ \) a; H; }; D5 Q, h8 F
vol(A " D, e _' ^5 k$ l2 qi# } B; I1 i3 e( }6 e5 R8 ^
6 m* P4 C" i" D- V! P& V' O! { ), t, U+ B# @+ V- U% ], l* R
1 2 k# \7 T, S) U: ]( R | l. s- h+ }/ v1 k. ~+ w, Z
vol(A ) d m9 H. T: ]/ |+ F. di . R; K+ s2 C( e; Y8 j# K7 j1 {4 ]3 S. ~$ N( Q# w( t
)=1 * y( f0 h9 D- M: _/ c' |因此,此时切图优化目标为/ p- `0 J% X* F/ g; n/ N' C, U
6 e7 B4 F2 f3 X, S3 ^. h
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 * m$ S/ U- }/ b C; VH ; k6 R7 u& P9 V( K6 I2 a Cargmin 9 @! M. F F; a T1 c, P+ }9 {+ f! S- y; Z0 q& L3 M ?
3 g( ~" B" X9 F" h2 c
7 D, ]1 R! r( P' J" L2 N tr(H $ P6 A* X: f0 `/ f
T ; Z1 m d2 J W$ L/ [; @; N LH)s.t.H 0 {) j+ ]7 V6 |# p/ r+ K/ J. r8 y" xT0 [) _9 `, q# p) f* K
DH=I7 f1 N3 m6 r. Y* n7 P0 {
/ ]5 r+ \2 N# h+ x
但是现在矩阵H HH中的指示向量h hh并不是标准正交基,所以需要对H HH做一定转换。令H = D − 1 2 F H=D^{-\frac{1}{2}}FH=D ! L1 o" [- U4 D h− 3 r& s. B( I1 J' @. n
20 |+ n5 f0 q6 `; K* [5 X
1" ], E" ^/ x7 I5 c+ q/ M* B
; B+ ]0 o6 k# l" L5 h9 o
+ T9 M8 U2 s' ]) j3 g+ j8 s+ O F、H T D H = F T F = I H^{T}DH=F^{T}F=IH % b* ~9 U m4 u9 w2 J* i% H
T 8 l& r4 U- D" e2 E. E DH=F 4 |) N$ ?( h' d7 QT % o* b7 S. K" \, T. i F=I,于是优化目标变更为5 i! b) V$ t+ t! I
a 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 2 [9 s. @( z/ B5 w. U5 YF 4 f+ I; B0 M& g& ]+ s6 b4 zargmin 7 n* [# Q6 m# f w" G3 G V& P & \* o& D. @. N- n" P2 n9 U, q, p8 R! q4 I 0 g% h' @# W1 E1 Q B" Z+ [0 }0 z/ Y$ ^" S" T5 F' \3 o3 M& L8 f
tr(F + Y- A$ w& l, u2 g: n" N8 e7 y
T 6 |8 M3 \% b7 i( K H' w. [ D + k9 k, J# |8 L% G. g2 Z9 F− 0 K/ @) ^, o9 g% d" ~2 1 y* v' M: ?# U* Z9 r* U1; G7 w Z4 u4 @; E4 Z2 s1 j3 i
/ r5 R; G( H9 v5 b j) g
+ A# Q4 H# w0 ~ s ~8 V" p
LD 9 N" l) x9 P( O9 ?
− 7 p4 {; R' h% }. q- P3 P8 ^( n2% X; t4 p k L
1) V! u, ?$ \7 u! Y1 v% o+ K, S
( z; c3 ?4 n `7 n! L1 V3 W: p: E " M1 N* K# U2 T4 i `+ P F)s.t.F 0 i1 E" Z y% f- _
T) P( g, W9 S+ R
F=I8 ] N/ K1 C: C! s
+ g A! m! x q6 M现在,和比例割一样,通过找到D − 1 2 L D − 1 2 D^{-\frac{1}{2}}LD^{-\frac{1}{2}}D ! s$ p, T; A9 V; g
− 3 S! e x5 F1 H+ [
2 # R* f% C! o0 x( ~4 L1 , L2 t7 l/ q g* o0 Q% c. } 2 N/ X9 C3 @/ @- ~$ Q( x) k ; `+ u+ a$ Q# c5 P6 p; V7 W7 y LD 1 d( Z6 p8 B" }3 E* B$ @- p− 2 o7 O: X4 E0 [- H2 : R7 }* t5 X/ v. q: q g: H! L1 + H* l' y+ H1 `+ a6 ?0 ~, L- b1 {' C2 U! x7 Y; t4 n- |* `
1 I. {: c$ k, w) V* L G, Q
(就是之前的L LL)的最小的k kk个特征值,可以得到对应的k kk个特征向量,这k kk特征向量组成一个n nn×k kk维矩阵,也即F FF,最后对F FF进行传统聚类' `) W5 {% s8 R6 ]- h
1 L6 R, u1 t) g! G一般来说,D − 1 2 L D − 1 2 D^{-\frac{1}{2}}LD^{-\frac{1}{2}}D / G3 c# o' V. H* T
− " d% D; L m% y( B7 `5 {9 _! Y e! f3 Y* A
2% d. H3 |3 L! m# H1 P. m
1; Y' B; C3 s$ Y4 T
( d' _+ ~: T4 z9 W: B8 |9 `. V' R/ C% V( @# X* i
LD ) @- Q7 {! L1 J; u8 [9 M/ Y
− 4 h4 _* U- E" i) y, C
2 6 H6 [" s9 ^% f2 ?- q! Q" ?1% h! _6 ~' j; x7 i( t1 q2 e
6 c' t" f' o" e+ G# k5 v
2 [8 ?) `3 a7 I9 f: u 相当于对L LL做了一次标准化,也即L i j d i ∗ d j \frac{L_{ij}}{\sqrt{d_{i}*d_{j}}} - ~. y4 T, ], E# t8 [ a
d - v) P- y; \2 g$ P3 Ji0 E- n: B6 i0 Y' H- c% l
8 {0 Z# m$ U K" h6 Y: w
∗d ) Q) ]4 c; J& C
j. t' W, q3 ?6 I$ P
1 l+ `* c) {; L! N, F# |! l - y7 \1 K1 }( A2 k. k. e& g* y5 r+ s
7 a2 E! @: ]# F7 ~
L ! v; K5 q2 R0 K# v- y. r/ ^! I8 Oij 5 h( F. c' G% C& B8 ?+ E( ~ ) s1 z W9 L& \" x& h ( z% l+ V) [" p . _( _2 N; u% H- r , @) d0 m% S$ y/ ~) [二:谱聚类算法流程 + _9 Q' R& G) i% ]4 z给定数据集D = { x 1 , x 2 , . . . , x n } D=\{x_{1}, x_{2}, ... , x_{n}\}D={x 2 y0 g* _( g4 \* A1$ k* E3 Z5 R3 ^0 s( H
& x9 D( w5 ?. @8 @) {6 l8 [: N$ P& n
,x . S( b. y2 h: d2 # K2 Q5 T; n- u' P* ?$ c, b& {7 C) n% D' _7 l4 A' w8 P
,...,x 3 u) E" c% l/ b0 W _5 Q% |n; x# H5 t4 q j1 U
1 M. q6 a k B: N. ^
} , ^, e* u _8 _" w7 [+ D" q 0 Y5 X9 c! i) Y$ K: S( z* g根据输入的相似矩阵生成方式(一般为高斯核函数)构建相似矩阵S SS(AffinityMatrix)3 q3 x3 [! ?! Y! r( j( b9 f5 w
根据相似矩阵S SS构建邻接矩阵W WW,再构建度矩阵D DD& G: I+ a2 W8 ]% R
计算拉普拉斯矩阵L = D − W L=D-WL=D−W 6 J p7 `5 W3 _) f! T1 I得到标准化后的拉普拉斯矩阵D − 1 2 L D − 1 2 D^{-\frac{1}{2}}LD^{-\frac{1}{2}}D ! e9 ]1 A* Y, [$ O8 B
− 8 S/ x6 U/ t* y
2 3 n. N, e" A6 [15 G- f, e: M I. D8 I
5 w. D7 C0 O: t, T7 W/ a& f
' ~9 O- B7 M* \ b9 ]
LD / {/ n+ U! c: O5 S
− ) z: q0 \" f& |; F) X: @/ \( q
29 p& n6 O# s9 Z. k
1 ) n6 V6 P T, a' Q5 {6 \) S0 \1 `: H# W( t' u
5 s$ R9 P& h% v1 ?- q4 y4 P: D l
$ _2 N: t% m! ?! K% V1 L2 Z4 V3 m计算D − 1 2 L D − 1 2 D^{-\frac{1}{2}}LD^{-\frac{1}{2}}D ! M/ o/ Y5 t8 s. W+ M- n# {" }8 o6 Q− + v& y8 v" g4 @- @3 L
2 - W- k3 k `- v& C1; y+ j ]6 ~) h
V% r3 [2 V% s, \% `) H
2 o4 L! G1 S0 ^+ C$ d" \ D0 L
LD ; y3 U0 T' }) C
− " A. K% c( |" m3 |2 # e p) S9 B0 X- s. ?3 _12 l4 F1 h/ T, u: Q7 R5 @+ S9 v( X
: e* `/ S0 i: B% E
# d' ~ Z I8 Q7 y 最小的k kk个特征值对应的特征向量f ff+ C$ A7 v% |+ [ n% z
将特征向量f ff组成矩阵并按行标准化,最终组成n nn×k kk维的特征矩阵F FF {& o* A5 c0 P+ M# _
F FF中每一行作为一个k kk维的样本,共n nn个样本,采用某种聚类方法进行聚类,假设聚类维数为k 、 k^{、}k 2 `8 Y; j: A6 M、* d8 q( R8 n! Q
/ P& Y V5 Z1 B0 f. s0 |
得到簇划分C( c 1 , c 2 , . . . , c k 、 ) (c_{1}, c_{2}, ... , c_{k^{、}})(c 3 B) ?; y! ?& d3 M3 e4 D1* t. ^! ?* h6 I$ t* r2 B7 J$ H
1 o+ g2 Y+ e! q+ f$ ~: q! | ,c ! C9 A4 F' y/ [) s0 X0 k20 s. I0 @, D1 {6 Y5 a, \7 o% M
9 k R- J9 u# l3 I ` c/ L5 M9 Y ,...,c - R% x6 `' B7 f/ ]* o
k : d) i$ Z% Y) |/ Y、4 n: L" k3 A4 E" O4 S
/ x1 |2 [9 w* H4 a% B: o3 {$ p* |
! c; }: _7 C# \
)7 t* I: P9 i) e6 b Y
三:Python实现+ O4 f h; o/ k' R' @3 Q
import matplotlib.pyplot as plt! V! K2 }# ?1 n" ]/ P" C' R
import numpy as np 4 h% o+ G0 Z1 C% Q: U, L) ^2 fimport pandas as pd5 W5 o4 Y2 z5 H* X
from sklearn.cluster import KMeans' \# f/ V( X9 [8 ~- B( A" i: \- X
from sklearn.metrics.pairwise import rbf_kernel + j& G, j5 U) }from sklearn.datasets import make_blobs 5 p$ q( a% Z2 p5 xfrom sklearn.preprocessing import normalize ) B# c) t& l) j: y" G 7 i6 ^* G+ {3 K# f2 u; M jdef get_affinity_matrix(data_set):+ n/ g! U" {, h3 N9 R0 b# y
# 利用高斯核函数计算相似矩阵(全连接); q* W8 o' P8 |6 o
rbf = rbf_kernel(data_set) 6 `9 E" a1 @( U v4 `% L% [7 } for i in range(len(rbf)):* f# ~+ s' }( ~
rbf[i, i] = 0 1 X% k# b- t' x8 O: {+ r, N8 G2 a return rbf 0 v' d# D* l D4 z9 @ # z5 x3 [$ U0 W+ Y1 z$ N9 {* a) d, x- h4 c5 [: k9 ]8 B
def distance(x1, x2):* ]+ V4 l- D) _4 _; n) n `
""" " ^7 N# N$ z9 {) b 获得两个样本点之间的距离 ! A4 c9 v' F/ ?/ k/ m# H :param x1: 样本点12 u7 N% O( T& \& G$ E
:param x2: 样本点2, [* z' U0 s: j) a
:return: ! e; V( D0 e) p3 ^, W h# G* [ """ * U* x% B) ~/ z- O4 {6 n! c dist = np.sqrt(np.power(x1-x2,2).sum()), w7 k" k* T+ t1 f. d) Q0 j
return dist 5 N$ u: n4 p1 c0 c/ ~% e+ H5 U( h" m
def get_dist_matrix(data): % c4 `& ^' \- P% O$ c0 D """% |4 K+ y2 p# t4 {' y+ b+ D5 }
获取距离矩阵/ N4 ~' G+ Q7 ^$ T; {
:param data: 样本集合# ?0 s9 N- F, y& Q
:return: 距离矩阵" Y, u* J* n3 C# z
""") e. v. ~( l7 ~$ w
n = len(data) #样本总数 0 a$ n, Q8 X5 D. D7 L dist_matrix = np.zeros((n, n)) # 初始化邻接矩阵为n×n的全0矩阵 4 n" h% q% ]- s+ o* y% f5 X for i in range(n): 8 _. `. {0 q0 J, K/ n for j in range(i+1, n):( A! {9 c) ?/ Y2 r5 K
dist_matrix[j] = dist_matrix[j] = distance(data, data[j]) 6 E+ S& B% a$ t# \7 _" G2 g return dist_matrix5 ]; t* G! D) k- x: d$ }9 V# \2 @; U
5 }; ^1 z4 g0 ^( e4 Y" T- O4 bdef get_W(data, k): ' N. R; r$ c& N8 P1 l # 获取邻接矩阵(K邻近法) $ W+ @ q- u) E; p% V/ i+ @! _ n = len(data) 1 A J5 \0 I9 ]7 D+ w dist_matrix = get_dist_matrix(data)) u8 l( n" S2 s! X8 o
W = np.zeros((n, n)) ) h: H8 i( c$ N$ f. m) d for idx, item in enumerate(dist_matrix): 2 a8 i0 @2 W M& v7 O idx_array = np.argsort(item) # 每一行距离列表进行排序,得到对应的索引列表! T) r( ~; t7 t) n: p- h' R
W[idx][idx_array[1:k+1]] = 16 d. p7 y l7 x* V* W
transpW =np.transpose(W) 5 y" J; F ` _& z# _+ e0 n! R return (W+transpW)/2 9 V! S$ \7 }# _+ O& z, r8 N! X% g' E+ r0 w5 d
def spectral_clustering(data_set, k):9 O2 k6 X1 L* S7 B. X
# 利用相似矩阵S得到邻接矩阵W + U( b0 |% m7 b; e W = get_affinity_matrix(data_set) #高斯核函数(全连接法)! P5 j$ V+ f8 @
# W = get_W(data_set, k) # K邻近法8 F3 |3 a9 d' b9 ~. n
, V( a$ `* W. z) P2 D6 ~5 R
# 计算度矩阵D,并得到矩阵D的1/2次方的逆矩阵(便于计算拉普拉斯矩阵) $ S n/ v' {6 L+ a# k# U D_inv = np.diag(np.power(np.sum(W, axis=1), -0.5)) $ D% t' c+ K/ P : ^: S |9 e+ e- P, ?, S( @# r0 [* J # 计算拉普拉斯矩阵L=D-W1 N: o" D9 h U- r2 B( }9 E1 |: t/ g0 i+ m6 T
# 标准化拉普拉斯矩阵l = D_inv*L*D_inv=I-D_inv*W*D_inv , n0 P. v! w6 j# J: i, M3 C L = np.eye(len(data_set)) - np.dot(np.dot(D_inv, W), D_inv): R3 b- A% Q* f" `0 @