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