# Lancichinetti–Fortunato–Radicchi benchmark

Lancichinetti–Fortunato–Radicchi benchmark is an algorithm that generates benchmark networks (artificial networks that resemble real-world networks). They have a priori known communities and are used to compare different community detection methods. The advantage of the benchmark over other methods is that it accounts for the heterogeneity in the distributions of node degrees and of community sizes.

## The algorithm

The node degrees and the community sizes are distributed according to a power law, with different exponents. The benchmark assumes that both the degree and the community size have power law distributions with different exponents, $\displaystyle{ \gamma }$ and $\displaystyle{ \beta }$, respectively. $\displaystyle{ N }$ is the number of nodes and the average degree is $\displaystyle{ \langle k \rangle }$. There is a mixing parameter $\displaystyle{ \mu }$, which is the average fraction of neighboring nodes of a node that do not belong to any community that the benchmark node belongs to. This parameter controls the fraction of edges that are between communities. Thus, it reflects the amount of noise in the network. At the extremes, when $\displaystyle{ \mu = 0 }$ all links are within community links, if $\displaystyle{ \mu = 1 }$ all links are between nodes belonging to different communities.

One can generate the benchmark network using the following steps.

Step 1: Generate a network with nodes following a power law distribution with exponent $\displaystyle{ \gamma }$ and choose extremes of the distribution $\displaystyle{ k_{\min} }$ and $\displaystyle{ k_{\max} }$ to get desired average degree is $\displaystyle{ \langle k\rangle }$.

Step 2: $\displaystyle{ (1 - \mu) }$ fraction of links of every node is with nodes of the same community, while fraction $\displaystyle{ \mu }$ is with the other nodes.

Step 3: Generate community sizes from a power law distribution with exponent $\displaystyle{ \beta }$. The sum of all sizes must be equal to $\displaystyle{ N }$. The minimal and maximal community sizes $\displaystyle{ s_{\min} }$ and $\displaystyle{ s_{\max} }$ must satisfy the definition of community so that every non-isolated node is in at least in one community:

$\displaystyle{ s_{\min} \gt k_{\min} }$
$\displaystyle{ s_{\max} \gt k_{\max} }$

Step 4: Initially, no nodes are assigned to communities. Then, each node is randomly assigned to a community. As long as the number of neighboring nodes within the community does not exceed the community size a new node is added to the community, otherwise stays out. In the following iterations the “homeless” node is randomly assigned to some community. If that community is complete, i.e. the size is exhausted, a randomly selected node of that community must be unlinked. Stop the iteration when all the communities are complete and all the nodes belong to at least one community.

Step 5: Implement rewiring of nodes keeping the same node degrees but only affecting the fraction of internal and external links such that the number of links outside the community for each node is approximately equal to the mixing parameter $\displaystyle{ \mu }$.

## Testing

Consider a partition into communities that do not overlap. The communities of randomly chosen nodes in each iteration follow a $\displaystyle{ p(C) }$ distribution that represents the probability that a randomly picked node is from the community $\displaystyle{ C }$. Consider a partition of the same network that was predicted by some community finding algorithm and has $\displaystyle{ p(C_2) }$ distribution. The benchmark partition has $\displaystyle{ p(C_1) }$ distribution. The joint distribution is $\displaystyle{ p(C_1, C_2) }$. The similarity of these two partitions is captured by the normalized mutual information.

$\displaystyle{ I_n = \frac{\sum_{C_1,C_2} p(C_1,C_2) \log_2 \frac{p(C_1,C_2)}{p(C_1)p(C_2)} }{\frac 1 2 H(\{p(C_1)\}) + \frac 1 2 H(\{p(C_2)\})} }$

If $\displaystyle{ I_n=1 }$ the benchmark and the detected partitions are identical, and if $\displaystyle{ I_n=0 }$ then they are independent of each other.