Ok, ci permette di costruire adiacenza matrice W per tale grafico seguendo la procedura semplice: se entrambi vertici adiacenti i-esima e j-esima sono dello stesso colore, allora il peso del bordo tra loro W_ {i, j} è un numero elevato (che sintonizzerà i tuoi esperimenti in seguito) e altro è un numero piccolo che verrà analizzato in modo analogo.
Ora, consente di scrivere il Laplaciano della matrice come L = D - W, dove D è una matrice diagonale con elementi d_ {i, i} uguale alla somma della riga W i-th.
Ora, si può facilmente mostrare che il valore di fLf^T, dove f è un vettore arbitrario, è piccolo se i vertici con enormi pesi di aggiustamento hanno valori f vicini. Potresti pensare a questo come al modo di impostare un sistema di coordinate per il grafico con i-il vertice ha f_i coordinate nello spazio 1D.
Ora, scegliamo un numero di tali vettori f^k che ci danno la rappresentazione del grafico come un insieme di punti in uno spazio euclideo in cui, per esempio, k-means funziona: ora avete il vertice i-esimo del grafico iniziale avente coordinate f^1_i, f^2_i, ... e anche i vettori adiacenti dello stesso colore sul grafico iniziale saranno chiusi in questo nuovo spazio di coordinate.
La domanda su come scegliere i vettori f è semplice: basta prendere un paio di autovettori di matrice L come f che corrispondono a autovalori piccoli ma non nulli.
Questo è un metodo noto denominato clustering spettrale.
Ulteriori letture: Gli elementi dell'apprendimento statistico: data mining, inferenza e previsione. da Trevor Hastie, Robert Tibshirani e Jerome Friedman
, che è disponibile gratuitamente dalla pagina di autori http://www-stat.stanford.edu/~tibs/ElemStatLearn/
Non è forse quello che viene implementato in scikit-learn SpectralClustering? –
@Juh_ probabilmente, non sapevo di scikit-imparare al momento della scrittura. – Moonwalker