Recommended way of using nested SBM for disjoint clustering

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?


Can you please explain what you mean by the best disjoint clustering? Are you talking about choosing between the hierarchical levels?

Sorry for not being very clear.

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?

Thank you for your patience.

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.