I was wondering if there was a recommended way of getting a single best disjoint clustering of nodes given a graph using the nested SBM.
For example, using the minimize_nested_blockmodel_dl, I’m able to obtain a NestedBlockState and can access the clusterings at all levels of the hierarchy. For the purpose of using nested SBM as a disjoint clustering method, what’s the best way of utilizing this hierarchy of clusterings?
To clarify the question, is there any recommendation – based on any interpretation of “best” or even “good” clustering – for how to extract a clustering from a nested SBM? We are interested in knowing all recommendations.
The whole inferential approach implemented in graph-tool attempts to find the best partition (clustering) of a network according to the minimum description length principle, i.e. the partition that most compresses the data. In that sense, the partition found is already the “best” one.
I have a nested SBM result. I can access the levels and the description length for each level. I want a disjoint partitioning of the nodes.
Should I pick the level with the lowest description length? Alternatively, should I pick level 0 and assume that the level 0 partition is the best one that was found? Or is there another recommended technique?
The nested SBM gives you a single partition of the graph — the one at the lowest level. The higher levels are the partition of the groups themselves, and so on recursively. These are useful for a multi-scale view of the graph. But if this confuses you, just use the the lowest level.