# Objectives

• Understand the difference between graph partitioning and community detection
• Survey the different methods available for community detection

# Introduction

Algorithms for finding communities have many uses in network science, particularly in the social sciences. Since collective action is such a fundamental aspect of social and political behavior, identifying the groups to which individuals belong is an important task. Here we discuss a variety of methods for approaching this problem.

From the outset, we are faced with the problem of articulating a good, quantitative definition of what a community is. Since the network primarily encodes the structure of the community, this is where we focus our attention. Modularity, discussed in greater detail next, is the operational definition of what a good community is and, therefore, serves as the basis for nearly all community detection algorithms.

# Modularity

Consider the patterns of connectivity within a community of people. What kinds of structural features might we expect to observe among these individuals? On plausible feature is that there is a higher degree of connectivity (more edges) among these individuals than we would observe for any random collection of people. This is the intuition that modularity captures.

Given an assignment of nodes to communities, modularity will return a value between -1 and 1 indicating whether there is less (< 0) or more (> 0) connectivity among the individuals belonging to the communities that would be expected at random. In community detection, we're seeking an assignment of nodes to communities that maximizes the modularity of the network - since an increase in modularity indicates that we have found labeling that increases the connectivity within the communities.

# Graph Partitioning

The most basic way to do community detection is to (1) tell the computer how many communities it should look for and then (2) for the computer to go find a way of assigning nodes to that number of communities that maximizes the modularity of the network. A number of methods exist that do this including spectral partitioning and the Kernighan-Lin algorithm.

However, this approach has a serious conceptual problem: you must know the number of communities you are looking for. In general, this will not be the case when working with a social network. Furthermore, even if one knows that there are, for example, two large groups present, it still may not be advisable to restrict the algorithm to searching for these two communities only, since more interesting phenomena and social structure might exist on another, finer level.

As a result, while partitioning algorithms exist, other algorithms that can discover arbitrarily many communities are typically more useful. We turn our attention to these now.

# Edge Betweenness

Despite having modularity optimization as our overall strategy for finding communities, we still must devise a way of identifying plausible assignments of nodes to communities. This is non-obvious and, for networks of any appreciable size, trying all possible community assignments is prohibitively expensive in terms of computing time. This means that we need to devise a way of iteratively dividing nodes into communities to search for a good assignment.

One approach ... use of betweenness centrality.

# References

<references group=""></references>

• [[Def: ]]
• [[Def: ]]
• [[Def: ]]