finding clusters in a network from eigengaps

347 Views Asked by At

I have a usual Laplacian matrix, which describes a network. From the matrix I get the eigenvalues and from these I can compute a metric of modularity in my network based on the largest eigengap. Let's say that the largest eigengap is at eigenvalue (rank) #5, suggesting that there are 5 modules in my network. Is there a way to discover which nodes constitute each module?

Thanks in advance.

1

There are 1 best solutions below

2
On BEST ANSWER

Yes. Suppose $k$ is the number of clusters, which correspond to low eigenvalues. Let $L$ be the Laplacian, let $v_1, \ldots, v_k$ be the eigenvectors corresponding to the $k$ small eigenvalues, and $V$ be the $n \times k$ matrix whose columns are $v_1, \ldots, v_k$. There are $n$ rows of $V$ corresponding to the $n$ elements of the graph (network). The standard way to determine the clusters (modules) is to use the $k$-means clustering algorithm on the rows of $V$. Then for each cluster $C$, take the elements of the graph corresponding to the rows of $V$ in $C$.

Note that $k$ can't necessarily be easily determined from the largest eigenvalue gap - there's quite a bit of subtlety in inferring $k$.

Here is an introduction of spectral clustering with several variants of the above algorithm.