  In this work we address the problem of detecting overlapping communities in
social networks. Because the word "community" is an ambiguous term, it is
necessary to quantify what it means to be a community within the context of a
particular type of problem. Our interpretation is that this quantification must
be done at a minimum of three scales. These scales are at the level of:
individual nodes, individual communities, and the network as a whole. Each of
these scales involves quantitative features of community structure that are not
accurately represented at the other scales, but are important for defining a
particular notion of community. Our work focuses on providing sensible ways to
quantify what is desired at each of these scales for a notion of community
applicable to social networks, and using these models to develop a community
detection algorithm. Appealing features of our approach is that it naturally
allows for nodes to belong to multiple communities, and is computationally
efficient for large networks with low overall edge density. The scaling of the
algorithm is $O(N~\overline{k^2} + \overline{N_{com}^2})$, where $N$ is the
number of nodes in the network, $\overline{N_{com}^2}$ is the average squared
community size, and $\overline{k^2}$ is the expected value of a node's degree
squared. Although our work focuses on developing a computationally efficient
algorithm for overlapping community detection in the context of social
networks, our primary contribution is developing a methodology that is highly
modular and can easily be adapted to target specific notions of community.
