{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# [NTDS'17] assignment 2: network models\n", "[ntds'17]: https://github.com/mdeff/ntds_2017\n", "\n", "[Hermina Petric Maretic](https://people.epfl.ch/hermina.petricmaretic), [EPFL LTS4](http://lts4.epfl.ch)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For this assignment we will work on a network representing the collaboration between scientists in the field of General Relativity and Quantum Cosmology. The network comes from [SNAP](http://snap.stanford.edu/data/ca-GrQc.html) and is described as follows:\n", "\n", "> Arxiv GR-QC (General Relativity and Quantum Cosmology) collaboration network is from the e-print [arXiv](https://arxiv.org) and covers scientific collaborations between authors papers submitted to General Relativity and Quantum Cosmology category. If an author *i* co-authored a paper with author *j*, the graph contains a undirected edge from *i* to *j*. If the paper is co-authored by *k* authors this generates a completely connected (sub)graph on *k* nodes. The data covers papers in the period from January 1993 to April 2003 (124 months). It begins within a few months of the inception of the arXiv." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import os\n", "import random\n", "import matplotlib.pyplot as plt\n", "import networkx as nx\n", "import numpy as np\n", "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "G = nx.read_edgelist(os.path.join('..', 'data', 'arxiv_collaboration_network.txt'))" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "My network has 5242 nodes.\n", "My network has 14496 edges.\n" ] } ], "source": [ "print('My network has {} nodes.'.format(len(G.nodes())))\n", "print('My network has {} edges.'.format(G.size()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Comparing to model networks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1.1 In this part of the assignment, you have to create an Erdős–Rényi and Barabási-Albert graph using NetworkX, and compare them to the collaboration network. Try to simulate the original network as best as you can. When choosing parameters for the networks, take into account the number of vertices and edges of the original network. The number of vertices should be exactly the same. Comment on your choice of parameters." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "n = len(G.nodes())\n", "m = G.size()\n", "p = m*2/(n*(n-1))\n", "er=nx.erdos_renyi_graph(n,p)\n", "ba=nx.barabasi_albert_graph(n,3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the ER network, the expected number of edges is $$E[m] = pn(n-1)/2.$$\n", "For the BA network, m is fixed to $$m = q*(n-q),$$ where $q$ is the model parameter. \n", "\n", "Since $q$ had to be a natural number, $q=3$ gives the best approximation." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "My Erdos Renyi network has 5242 nodes.\n", "My Erdos Renyi network has 14368 edges.\n", "My Barabasi Albert network has 5242 nodes.\n", "My Barabasi Albert network has 15717 edges.\n" ] } ], "source": [ "print('My Erdos Renyi network has {} nodes.'.format(len(er.nodes())))\n", "print('My Erdos Renyi network has {} edges.'.format(er.size()))\n", "print('My Barabasi Albert network has {} nodes.'.format(len(ba.nodes())))\n", "print('My Barabasi Albert network has {} edges.'.format(ba.size()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1.2 Check the size of the largest connected component in each graph and compare them to the original network. In the Erdős–Rényi model, what should the probability of creating each edge be in order to have the same expected size of the largest component? Justify. Generate a graph with this parameter to check if you indeed get a similar value." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4158\n", "5223\n", "5242\n" ] } ], "source": [ "giant_G = max(nx.connected_component_subgraphs(G), key=len)\n", "giant_er = max(nx.connected_component_subgraphs(er), key=len)\n", "giant_ba = max(nx.connected_component_subgraphs(ba), key=len)\n", "print(len(giant_G.nodes()))\n", "print(len(giant_er.nodes()))\n", "print(len(giant_ba.nodes()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We know from the lectures that in Erdős–Rényi networks, the fraction of nodes in the giant component $$S = \\frac{N_G}{N}$$ grows with the average degree by $$S = 1 - e^{-\\langle k \\rangle S}.$$ Therefore, as $\\langle k \\rangle = (N-1)p$:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The parameter p for an Erdos Renyi network with the same expected size of the giant component is 0.00037911157202514926.\n", "The size of the component in a randomly generated network with this parameter is 4157.\n" ] } ], "source": [ "S_G = len(giant_G.nodes())/n\n", "p_giant = - np.log(1-S_G)/((n-1)*S_G)\n", "print('The parameter p for an Erdos Renyi network with the same expected size of the giant component is {}.'.format(p_giant))\n", "\n", "er_giant = max(nx.connected_component_subgraphs(nx.erdos_renyi_graph(n,p_giant)), key=len)\n", "print('The size of the component in a randomly generated network with this parameter is {}.'.format(len(er_giant.nodes())))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1.3 Look at the clustering coefficient of the original network. Is there a network model we talked about that could have a clustering coefficient that is close? Explain." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.529635811052136" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nx.average_clustering(G)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Yes, the Watts - Strogatz model can have a very high clustering coefficient with the similar number of vertices and edges. This coefficient can be decreased with a high rewiring parameter, leaving the number of vertices and edges the same." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Creating a network with a predefined degree distribution" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this part of the assignment, you will have to create a random network from a predefined degree distribution. There are several network models which can create a random network with the exact same degree distribution as the original, or with the same expected distribution as the original. Refer to section 4.8 of [the Barabási book](http://networksciencebook.com) for more information." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One of the most famous ones is the configuration model. The model for a graph with $L$ edges in total is constructed in the following steps:\n", "\n", "- Assign a degree to each node, represented as stubs (half-links). The degree sequence is either generated analytically from a preselected distribution, or it is extracted from the adjacency matrix of a real network. Note that we must start from an even number of stubs to avoid being left with unpaired stubs.\n", "- Randomly select a stub pair and connect them. Then randomly choose another pair from the remaining $2L - 2$ stubs and connect them. This procedure is repeated until all stubs are paired up.\n", "\n", "*Reminder:* A stub is a half-link, representing the half of an edge. It contains one node and can be paired up with another stub to create an edge (between the two corresponding nodes)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2.1 However, this model allows for the creation of multi-links (multiple edges between the same pair of vertices) and self-loops, thus leading to a non-simple graph. In this assignment, you will implement a greedy configuration model, to avoid these problems." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2.1 However, this model allows for the creation of multi-links (multiple edges between the same pair of vertices) and self-loops, thus leading to a non-simple graph. In this assignment, you will implement a greedy configuration model, to avoid these problems.\n", "\n", "The algorithm goes as follows:\n", "- Extract the degree sequence from our collaboration network.\n", "- Assign a target degree to each node, represented as stubs or half-links. Use the degree sequence extracted from the collaboration network.\n", "- Sort the nodes by degree. \n", " - Pick the node with the highest target degree. Delete all its stubs from the list of stubs to make sure we don't create a self loop.\n", " - Until all its weighted degree equals its target degree: \n", " - Randomly select one stub from the list of stubs (corresponding to one of the other nodes), and connect these two nodes. In case the two chosen nodes are already connected, simply increase the weight of this edge by one. Be careful to randomly select from stubs and not from nodes, as this means the chances of selecting a node will be proportional to its target degree.\n", " - When the number of edges adjacent to this node corresponds to its target degree, go on to the second node in the list. \n", " - Repeate this procedure until all stubs are paired up, or there is only one node left with a pair number of stubs. In that case, don't create a self-loop, but discard the stubs.\n", " \n", "*Hints*: \n", " - Use `nx.empty_graph()` to create an empty graph.\n", " - Use `G.add_edge(node1,node2,weight = 1)` to add an edge to a weighted graph.\n", " - Use `G.edge[node1][node2]['weight'] += 1` to increment the weight of an edge by one." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def greedy_configuration(degree_distribution):\n", " N=len(degree_distribution)\n", " G=nx.empty_graph()\n", "\n", " degree_distribution = sorted(degree_distribution,reverse=True)\n", " stublist=[]\n", " for node in range(len(degree_distribution)):\n", " for i in range(degree_distribution[node]):\n", " stublist.append(node) \n", " \n", " for node in range(len(degree_distribution)):\n", " for stub in range(degree_distribution[node]):\n", " del stublist[0]\n", " while(degree_distribution[node] and len(stublist) > 0):\n", " ind = np.random.randint(0,len(stublist))\n", " b = stublist.pop(ind)\n", " if G.has_edge(node,b):\n", " G.edge[node][b]['weight'] += 1\n", " else:\n", " G.add_edge(node,b,weight = 1)\n", " \n", " degree_distribution[node] = degree_distribution[node] - 1\n", " degree_distribution[b] = degree_distribution[b] - 1\n", " return G" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "degree_sequence=sorted(nx.degree(G).values(),reverse=True) # degree sequence\n", "gc = greedy_configuration(degree_sequence)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2.2 Verify that the networks have the same number of nodes. Plot the difference between the weighted degree distributions to verify that they are identical. If not, why?" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "My network has 5242 nodes.\n" ] }, { "data": { "image/png": "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\nwSBJ6vwft1Zmb3/mkwoAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print('My network has {} nodes.'.format(len(gc.nodes())))\n", "degree_sequence_gc=sorted(nx.degree(gc, weight = 'weight').values(),reverse=True)\n", "plt.plot(np.array(degree_sequence) - np.array(degree_sequence_gc));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The number of nodes and weighted distributions are the same. However, they could've been different in case our algorithm finished with just one node and a pair number of stubs." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2.3 Should these two networks have the same adjacency matrices? Justify." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "No, the configuration model only tries to ensure the weighted degree distributions are the same. However, it still chooses connections between nodes randomly and there is no reason to expect the same structure. Having the same adjacency matrices would mean having identical graphs. In addition, having the same weighted degrees doesn't even guarantee the same number of neighbors for corresponding nodes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2.4 Draw both the generated and original networks. Are they similar? If not, why? Try to explain." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nSUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nx.draw(G,node_size = 5)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nx.draw(gc,node_size = 5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Not really. We can see that the random graph has a much larger giant component. This is due to the special structure of the collaboration graph, with a lot of well connected small groups that collaborate within, but not to the outside. The random model couldn't capture this structure." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2.5 Do you expect the properties studied in the first part of the assignment to be close to the original graph? Justify." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We expect the number of nodes and edges to be similar by design. However, as we've seen in ex 2.4, the size of the giant component is quite larger. As for the clustering coefficient, we know from the first part that the original graph has a very large clustering coefficient. Therefore, we don't expect the random graph to have a similar value." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.2" } }, "nbformat": 4, "nbformat_minor": 2 }