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