In this article, some more social networking concepts will be illustrated with a few problems. The problems appeared in the programming assignments in the

coursera course Applied Social Network Analysis in Python. The descriptions of the problems are taken from the assignments. The analysis is done using NetworkX.

The following theory is going to be used to solve the assignment problems.

1. Measures of Centrality

In this assignment, we explore measures of centrality on the following two networks: A friendship network A political blog network.

First let’s do some analysis with different centrality measures using the friendship network, which is a network of friendships at a university department. Each node corresponds to a person, and an edge indicates friendship. The following figure visualizes the network, with the size of the nodes proportional to the degree of the nodes.

Degree Centrality

The next figure shows the distribution of the degree centrality of the nodes in the friendship network graph.

The following figure visualizes the network, with the size of the nodes again

proportional to the degree centrality of the nodes.

Closeness Centrality

The next figure shows the distribution of the closeness centrality of the nodes in the friendship network graph.

The following figure again visualizes the network, with the size of the nodes being

proportional to the closeness centrality of the nodes.

Betweenness Centrality

The next figure shows the distribution of the betweenness centrality of the nodes in the friendship network graph.

The following figure again visualizes the network, with the size of the nodes being

proportional to the betweenness centrality of the nodes.

Now, let’s consider another network, which is a directed network of political blogs, where nodes correspond to a blog and edges correspond to links between blogs.

This network will be used to compute the following: PageRank of the nodes using random walk with damping factor. Authority and Hub Score of the nodes using the HITS .



The blog network looks like the following:

source value tsrightdominion.blogspot.com Blogarama 1 rightrainbow.com Blogarama 1 gregpalast.com LabeledManually 0 younglibs.com Blogarama 0 blotts.org/polilog Blogarama 0 marylandpolitics.blogspot.com BlogCatalog 1 blogitics.com eTalkingHead 0 thesakeofargument.com Blogarama 1 joebrent.blogspot.com Blogarama 0 thesiliconmind.blogspot.com Blogarama 0 40ozblog.blogspot.com Blogarama,BlogCatalog 0 progressivetrail.org/blog.shtml Blogarama 0 randomjottings.net eTalkingHead 1 sonsoftherepublic.com Blogarama 1 rightvoices.com CampaignLine 1 84rules.blog-city.com eTalkingHead 1 blogs.salon.com/0002874 LeftyDirectory 0 alvintostig.typepad.com eTalkingHead 0 notgeniuses.com CampaignLine 0 democratreport.blogspot.com BlogCatalog 0

looks like the following: First let’s visualize the network, next figure shows the visualization. The network has nodes (blogs) from 47 different unique sources, each node belonging to a source is colored with a unique color. The gray lines denote the edges (links) between the nodes (blogs).

The next figure shows the same network graph, but without the node labels (blog urls).

Page-Rank and HITS

Now, let’s apply the Scaled Page Rank Algorithm to this network.,with damping value 0.85. The following figure visualizes the graph with the node size proportional to the page rank of the node.

to this network.,with damping value 0.85. The following figure visualizes the graph with the proportional to the page rank of the node. The next animations show how the page rank of the nodes in the network changes with the first 25 iterations of the power-iteration algorithm.

The top 5 nodes with the highest page rank values after 25 iterations of the power-iteration page-rank algorithm are shown below, along with their ranks scores . (u’dailykos.com’, 0.020416972184975967) (u’atrios.blogspot.com’, 0.019232277371918939) (u’instapundit.com’, 0.015715941717833914) (u’talkingpointsmemo.com’, 0.0152621016868163) (u’washingtonmonthly.com’, 0.013848910355057181)

values after of the power-iteration page-rank algorithm are shown below, along with their .

The top 10 nodes with the highest page rank values after the convergence of the page-rank algorithm are shown below, along with their ranks scores. (u’dailykos.com’, 0.01790144388519838) (u’atrios.blogspot.com’, 0.015178631721614688) (u’instapundit.com’, 0.01262709066072975) (u’blogsforbush.com’, 0.012508582138399093) (u’talkingpointsmemo.com’, 0.012393033204751035) (u’michellemalkin.com’, 0.010918873519905312) (u’drudgereport.com’, 0.010712415519898428) (u’washingtonmonthly.com’, 0.010512012551452737) (u’powerlineblog.com’, 0.008939228332543162) (u’andrewsullivan.com’, 0.00860773822610682)



The following figure shows the distribution of the page-ranks of the nodes after the convergence of the algorithm.

Next, let’s apply the HITS Algorithm to the network to find the hub and authority scores of node.

The following couple of figures visualizes the network graph where the node size is proportional to the hub score and the authority score for the node respectively, once the HITS algorithm converges.

is proportional to the and the for the node respectively, once the converges. Next couple of figures show the distribution of the hub-scores and the authority-scores for the nodes once the HITS converges.

2. Random Graph Identification

Given a list containing 5 networkx graphs., with each of these graphs being generated by one of three possible algorithms:

Preferential Attachment ( 'PA' )

) Small World with low probability of rewiring ( 'SW_L' )

) Small World with high probability of rewiring ( 'SW_H' )

Anaylze each of the 5 graphs and determine which of the three algorithms generated the graph.

The following figures visualize all the graphs along with their degree-distributions. Since the Preferential Attachment model generates graphs with the node degrees following the power-law distribution (since rich gets richer), the graphs with this pattern in their degree distributions are most likely generated by this model.

On the other hand, the Small World model generates graphs with the node degrees not following the power-law distribution, instead the distribution shows fat tails. If this pattern is seen, we can identify the network as to be generated with this model.



3. Prediction using Machine Learning models with the graph-centrality and local clustering features

For this assignment we need to work with a company’s email network where each node corresponds to a person at the company, and each edge indicates that at least one email has been sent between two people.

The network also contains the node attributes Department and ManagmentSalary .

Department indicates the department in the company which the person belongs to, and ManagmentSalary indicates whether that person is receiving a managment position salary. The email-network graph has

Number of nodes: 1005

Number of edges: 16706

Average degree: 33.2458

The following figure visualizes the email network graph.

Salary Prediction

Using network G , identify the people in the network with missing values for the node attribute ManagementSalary and predict whether or not these individuals are receiving a managment position salary.

To accomplish this, we shall need to

Create a matrix of node features

Train a (sklearn) classifier on nodes that have ManagementSalary data and

a (sklearn) on nodes that have data and Predict a probability of the node receiving a managment salary for nodes where ManagementSalary is missing.

The predictions will need to be given as the probability that the corresponding employee is receiving a managment position salary.

The evaluation metric for this assignment is the Area Under the ROC Curve (AUC).

A model needs to achieve an AUC of 0.75 on the test dataset.

Using the trained classifier, return a series with the data being the probability of receiving managment salary, and the index being the node id (from the test dataset).

The next table shows first few rows of the dataset with the degree and clustering features computed. The dataset contains a few ManagementSalary values are missing (NAN), the corresponding tuples form the test dataset, for which we need to predict the missing ManagementSalary values. The rest will be the training dataset.

Now, a few classifiers will be trained on the training dataset , they are:

RandomForest

SVM

GradientBoosting

with 3 input features for each node:

Department

Clustering (local clustering coefficient for the node)

(local clustering coefficient for the node) Degree

in order to predict the output variable as the indicator receiving managment salary.



Index Department ManagementSalary clustering degree 0 1 0.0 0.276423 44 1 1 NaN 0.265306 52 2 21 NaN 0.297803 95 3 21 1.0 0.384910 71 4 21 1.0 0.318691 96 5 25 NaN 0.107002 171 6 25 1.0 0.155183 115 7 14 0.0 0.287785 72 8 14 NaN 0.447059 37 9 14 0.0 0.425320 40

Typical 70-30 validation is used for model selection. The next 3 tables show the first few rows of the train, validation and the test datasets respectively.

Department clustering degree ManagementSalary 421 14 0.227755 52 0 972 15 0.000000 2 0 322 17 0.578462 28 0 431 37 0.426877 25 0 506 14 0.282514 63 0 634 21 0.000000 3 0 130 0 0.342857 37 0 140 17 0.394062 41 0 338 13 0.350820 63 0 117 6 0.274510 20 0 114 10 0.279137 142 1 869 7 0.733333 6 0 593 5 0.368177 42 0 925 10 0.794118 19 1 566 14 0.450216 22 0 572 4 0.391304 26 0 16 34 0.284709 74 0 58 21 0.294256 126 1 57 21 0.415385 67 1 207 4 0.505291 30 0

Index Department clustering degree ManagementSalary 952 15 0.533333 8 0 859 32 0.388106 74 1 490 6 0.451220 43 0 98 16 0.525692 25 0 273 17 0.502463 31 0 784 28 0.000000 3 0 750 20 0.000000 1 0 328 8 0.432749 21 0 411 28 0.208364 106 1 908 5 0.566154 28 0 679 29 0.424837 20 0 905 1 0.821429 10 0 453 6 0.427419 34 1 956 14 0.485714 15 0 816 13 0.476190 23 0 127 6 0.341270 28 0 699 14 0.452899 26 0 711 21 0.000000 2 0 123 13 0.365419 36 0 243 19 0.334118 53 0

Department clustering degree 1 1 0.265306 52 2 21 0.297803 95 5 25 0.107002 171 8 14 0.447059 37 14 4 0.215784 80 18 1 0.301188 56 27 11 0.368852 63 30 11 0.402797 68 31 11 0.412234 50 34 11 0.637931 31

The following table shows the first few predicted probabilities by the RandomForest classifier on the test dataset.

Index 0 1 0 1.0 0.0 1 0.2 0.8 2 0.0 1.0 3 1.0 0.0 4 0.5 0.5 5 1.0 0.0 6 0.7 0.3 7 0.7 0.3 8 0.3 0.7 9 0.7 0.3 10 0.9 0.1 11 0.8 0.2 12 1.0 0.0 13 0.6 0.4 14 0.7 0.3 15 0.5 0.5 16 0.0 1.0 17 0.2 0.8 18 1.0 0.0 19 1.0 0.0

The next figure shows the ROC curve to compare the performances (AUC) of the classifiers on the validation dataset.

As can be seen, the GradientBoosting classifier performs the best (has the highest AUC on the validation dataset).

The following figure shows the Decision Surface for the Salary Prediction learnt by the RandomForest Classifier.

4. New Connections Prediction (Link Prediction with ML models)

For the last part of this assignment, we shall predict future connections between employees of the network. The future connections information has been loaded into the variable future_connections . The index is a tuple indicating a pair of nodes that currently do not have a connection, and the FutureConnection column indicates if an edge between those two nodes will exist in the future, where a value of 1.0 indicates a future connection. The next table shows first few rows of the dataset.

Index Future Connection (6, 840) 0.0 (4, 197) 0.0 (620, 979) 0.0 (519, 872) 0.0 (382, 423) 0.0 (97, 226) 1.0 (349, 905) 0.0 (429, 860) 0.0 (309, 989) 0.0 (468, 880) 0.0

Using network G and future_connections , identify the edges in future_connections

with missing values and predict whether or not these edges will have a future connection.

To accomplish this, we shall need to

Create a matrix of features for the edges found in future_connections Train a (sklearn) classifier on those edges in future_connections that have Future Connection data Predict a probability of the edge being a future connection for those edges in future_connections where Future Connection is missing.

The predictions will need to be given as the probability of the corresponding edge being a future connection.

The evaluation metric for this assignment is again the Area Under the ROC Curve (AUC).

Using the trained classifier, return a series with the data being the probability of the edge being a future connection, and the index being the edge as represented by a tuple of nodes.

Now, a couple of classifiers will be trained on the training dataset , they are:

RandomForest

GradientBoosting

with 2 input features for each edge:

Preferential attachment

Common Neighbors

in order to predict the output variable Future Connection.



The next table shows first few rows of the dataset with the preferential attachment and Common Neighbors features computed.

Index Future Connection preferential attachment Common Neighbors (6, 840) 0.0 2070 9 (4, 197) 0.0 3552 2 (620, 979) 0.0 28 0 (519, 872) 0.0 299 2 (382, 423) 0.0 205 0 (97, 226) 1.0 1575 4 (349, 905) 0.0 240 0 (429, 860) 0.0 816 0 (309, 989) 0.0 184 0 (468, 880) 0.0 672 1 (228, 715) 0.0 110 0 (397, 488) 0.0 418 0 (253, 570) 0.0 882 0 (435, 791) 0.0 96 1 (711, 737) 0.0 6 0 (263, 884) 0.0 192 0 (342, 473) 1.0 8140 12 (523, 941) 0.0 19 0 (157, 189) 0.0 6004 5 (542, 757) 0.0 90 0

Again, typical 70-30 validation is used for model selection. The next 3 tables show the first few rows of the train, validation and the test datasets respectively.

preferential attachment Common Neighbors Future Connection (7, 793) 360 0 0 (171, 311) 1620 1 0 (548, 651) 684 2 0 (364, 988) 18 0 0 (217, 981) 648 0 0 (73, 398) 124 0 0 (284, 837) 132 1 0 (748, 771) 272 4 0 (79, 838) 88 0 0 (207, 716) 90 1 1 (270, 928) 15 0 0 (201, 762) 57 0 0 (593, 620) 168 1 0 (494, 533) 18212 40 1 (70, 995) 18 0 0 (867, 997) 12 0 0 (437, 752) 205 0 0 (442, 650) 28 0 0 (341, 900) 351 0 0 (471, 684) 28 0 0

Index preferential attachment Common Neighbors Future Connection (225, 382) 150 0 0 (219, 444) 594 0 0 (911, 999) 3 0 0 (363, 668) 57 0 0 (161, 612) 2408 4 0 (98, 519) 575 0 0 (59, 623) 636 0 0 (373, 408) 2576 6 0 (948, 981) 27 0 0 (690, 759) 44 0 0 (54, 618) 765 0 0 (149, 865) 330 0 0 (562, 1001) 320 1 1 (84, 195) 4884 10 1 (421, 766) 260 0 0 (599, 632) 70 0 0 (814, 893) 10 0 0 (386, 704) 24 0 0 (294, 709) 75 0 0 (164, 840) 864 3 0

preferential attachment Common Neighbors (107, 348) 884 2 (542, 751) 126 0 (20, 426) 4440 10 (50, 989) 68 0 (942, 986) 6 0 (324, 857) 76 0 (13, 710) 3600 6 (19, 271) 5040 6 (319, 878) 48 0 (659, 707) 120 0

The next figure shows the ROC curve to compare the performances (AUC) of the classifiers on the validation dataset.

As can be seen, the GradientBoosting classifier again performs the best (has the highest AUC on the validation dataset).

The following figure shows the Decision Boundary for the Link Prediction learnt by the RandomForest Classifier.