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