  Networks are widely used in the biological, physical, and social sciences as
a concise mathematical representation of the topology of systems of interacting
components. Understanding the structure of these networks is one of the
outstanding challenges in the study of complex systems. Here we describe a
general technique for detecting structural features in large-scale network data
which works by dividing the nodes of a network into classes such that the
members of each class have similar patterns of connection to other nodes. Using
the machinery of probabilistic mixture models and the expectation-maximization
algorithm, we show that it is possible to detect, without prior knowledge of
what we are looking for, a very broad range of types of structure in networks.
We give a number of examples demonstrating how the method can be used to shed
light on the properties of real-world networks, including social and
information networks.
