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