<<

Introduction to Graph Cluster Outline

• Introduction to Cluster Analysis • Types of Graph Cluster Analysis • for Graph Clustering  k-Spanning Tree  Shared Nearest Neighbor  Betweenness Centrality Based  Highly Connected Components  Maximal Enumeration  k- • Application

2 Outline

• Introduction to Clustering • Introduction to Graph Clustering • Algorithms for Graph Clustering  k-Spanning Tree  Shared Nearest Neighbor  Betweenness Centrality Based  Highly Connected Components  Maximal Clique Enumeration  Kernel k-means • Application

3 What is Cluster Analysis?

The process of dividing a set of input into possibly overlapping, subsets, where elements in each subset are considered related by some similarity measure

2 Clusters

3 Clusters

4 Applications of Cluster Analysis

• Summarization – Provides a macro-level view of the data-set

Clustering precipitation in Australia From Tan, Steinbach, Kumar Introduction To , Addison-Wesley, Edition 1

5 Outline

• Introduction to Clustering • Introduction to Graph Clustering • Algorithms for Graph Clustering  k-Spanning Tree  Shared Nearest Neighbor  Betweenness Centrality Based  Highly Connected Components  Maximal Clique Enumeration  Kernel k-means • Application

6 What is Graph Clustering?

• Types – Between-graph • Clustering a set of graphs – Within-graph • Clustering the nodes/edges of a single graph

7 Between-graph Clustering

Between-graph clustering methods divide a set of graphs into different clusters

E.g., A set of graphs representing chemical compounds can be grouped into clusters based on their structural similarity

8 Within-graph Clustering

Within-graph clustering methods divides the nodes of a graph into clusters

E.g., In a social networking graph, these clusters could represent people with same/similar hobbies

Note: In this chapter we will look at different algorithms to perform within-graph clustering

9 Outline

• Introduction to Clustering • Introduction to Graph Clustering • Algorithms for Within Graph Clustering  k-Spanning Tree  Shared Nearest Neighbor  Betweenness Centrality Based  Highly Connected Components  Maximal Clique Enumeration  Kernel k-means • Application

10 k-Spanning Tree

2 k groups 1 3 k-Spanning of 3 2 5 Tree non-overlapping vertices 2 4 4

Minimum Spanning Tree k

STEPS: • Obtains the (MST) of input graph G • Removes k-1 edges from the MST • Results in k clusters

11 What is a Spanning Tree?

A connected subgraph with no cycles that includes all vertices in the graph G 2 2 3 1 6 1 3 6 7 2 5 5 3 4 7 2 2 4 4 Weight = 17 5 2 4

Note: Weight can represent either distance or similarity between two vertices or similarity of the two vertices

12 What is a Minimum Spanning Tree (MST)?

The spanning tree of a graph with the minimum possible sum of edge weights, if the edge weights represent distance G 2 Weight = 11 1 3 2 6 1 3 7 2 5 3 4 3 2 5 2 4 4 5 2 4 4

2 1 3 Note: maximum possible sum of edge 2 5 Weight = 13 weights, if the edge 2 2 4 4 weights represent 1 3 6 5 similarity 7 2 5 Weight = 17 2 4 13 to Obtain MST Prim’s Algorithm

Given Input Graph Select Vertex Randomly Initialize Empty Graph T G e.g., Vertex 5 with Vertex 5 2 1 3 6 T 7 2 5 3 4 5 5 2 4 4 5

Repeat until all vertices are added to T

From L select the Select a list of edges L Add X to T edge X with from G such that at minimum weight most ONE vertex of each edge is in T T 5 4 6 5 4 5 3 4 4 5 4

14 k-Spanning Tree

2 1 3 Remove k-1 edges Note: k – is the 3 2 5 number of with highest weight clusters 2 4 4

Minimum Spanning Tree

E.g., k=3 E.g., k=3 2 1 3 1 3 5 3 2 5

2 4 2 4 4

3 Clusters 15 k-Spanning Tree R-code

• library(GraphClusterAnalysis) • library(RBGL) • library(igraph) • library(graph) • data(MST_Example) • G = graph.data.frame(MST_Example,directed=FALSE) • E(G)$weight=E(G)$V3 • MST_PRIM = minimum.spanning.tree(G,weights=G$weight, algorithm = "prim")

• OutputList = k_clusterSpanningTree(MST_PRIM,3) • Clusters = OutputList[[1]] • outputGraph = OutputList[[2]] • Clusters

16 Outline

• Introduction to Clustering • Introduction to Graph Clustering • Algorithms for Within Graph Clustering  k-Spanning Tree  Shared Nearest Neighbor Clustering  Betweenness Centrality Based  Highly Connected Components  Maximal Clique Enumeration  Kernel k-means • Application

17 Shared Nearest Neighbor Clustering

Shared Nearest Neighbor Graph (SNN) 2 0 2 1 Groups Shared of 2 2 2 3 4 Nearest non-overlapping 1 Neighbor vertices 1 3 Clustering 2

STEPS: τ • Obtains the Shared Nearest Neighbor Graph (SNN) of input graph G • Removes edges from the SNN with weight less than τ

18 What is Shared Nearest Neighbor? (Refresher from Proximity Chapter)

Shared Nearest Neighbor is a proximity measure and denotes the number of neighbor nodes common between any given pair of nodes

u v

19

¯¾·È»º ª»·È»ÉÊ ª»¿½¾¸ÅÈÉ Shared Nearest Neighbor (SNN) Graph Given input graph G, weight each edge (u,v) with the number of shared nearest neighbors between u and v G SNN 0 2 2 0 2 1 4 2 2 2 3 4 1 3 1 3 1 1 Node 0 and Node 1 have 2 neighbors in common: Node 2 and Node 3

20 Shared Nearest Neighbor Clustering Jarvis-Patrick Algorithm

SNN graph of input graph G 2 0 2 1 If u and v share more than τ neighbors 2 2 2 3 4 Place them in the same cluster 1 3 1 2 E.g., τ =3 0 2 4 1 3 21 SNN-Clustering R code

• library(GraphClusterAnalysis) • library(RBGL) • library(igraph) • library(graph) • data(SNN_Example) • G = graph.data.frame(SNN_Example,directed=FALSE) • tkplot(G)

• Output = SNN_Clustering(G,3) • Output

22 Outline

• Introduction to Clustering • Introduction to Graph Clustering • Algorithms for Within Graph Clustering  k-Spanning Tree  Shared Nearest Neighbor Clustering  Betweenness Centrality Based  Highly Connected Components  Maximal Clique Enumeration  Kernel k-means • Application

23 What is Betweenness Centrality? (Refresher from Proximity Chapter)

Betweenness centrality quantifies the degree to which a vertex (or edge) occurs on the shortest path between all the other pairs of nodes

Two types: – Vertex Betweenness – Edge Betweenness

24 Vertex Betweenness

The number of shortest paths in the graph G that pass through a given node S G

E.g., Sharon is likely a liaison between NCSU and DUKE and hence many connections between DUKE and NCSU pass through Sharon 25 Edge Betweenness

The number of shortest paths in the graph G that pass through given edge (S, B)

E.g., Sharon and Bob both study at NCSU NCSU and they are the only link between NY DANCE and CISCO groups

Vertices and Edges with high Betweenness form good starting points to identify clusters 26 Vertex Betweenness Clustering

Given Input graph G Betweenness for each vertex

1. Disconnect graph at Repeat until selected vertex (e.g., Select vertex v with highest vertex vertex 3 ) the highest betweenness ≤ µ 2. Copy vertex to both betweenness Components E.g., Vertex 3 with value 0.67

27 Vertex Betweenness Clustering R code

• library(GraphClusterAnalysis) • library(RBGL) • library(igraph) • library(graph) • data(Betweenness_Vertex_Example) • G = graph.data.frame(Betweenness_Vertex_Example,directed=FALSE) • betweennessBasedClustering(G,="vertex",threshold=0.2)

28 Edge-Betweenness Clustering Girvan and Newman Algorithm

Given Input Graph G Betweenness for each edge

Disconnect graph at Repeat until selected edge Select edge with highest edge (E.g., (3,4 )) Highest betweenness ≤ µ Betweenness E.g., edge (3,4) with value 0.571

29 Edge Betweenness Clustering R code

• library(GraphClusterAnalysis) • library(RBGL) • library(igraph) • library(graph) • data(Betweenness_Edge_Example) • G = graph.data.frame(Betweenness_Edge_Example,directed=FALSE) • betweennessBasedClustering(G,mode="edge",threshold=0.2)

30 Outline

• Introduction to Clustering • Introduction to Graph Clustering • Algorithms for Within Graph Clustering  k-Spanning Tree  Shared Nearest Neighbor Clustering  Betweenness Centrality Based  Highly Connected Components  Maximal Clique Enumeration  Kernel k-means • Application

31 What is a Highly Connected Subgraph?

• Requires the following definitions – Cut – Minimum Edge Cut (MinCut) – Edge Connectivity (EC)

32 Cut

• The set of edges whose removal disconnects a graph 7 Cut = {(3,5),(4,2)} 6 8 7 6 8 0 0 5 1 5 1 4 2 4 7 3 6 8 3 2 0 5 1 Cut = {(0,1),(1,2),(1,3} 4 2 3 33 Minimum Cut

The minimum set of edges whose removal disconnects a graph

MinCut = {(3,5),(4,2)} 7 6 8 7 6 8 0 0 5 1 5 1 4 2 4 3 3 2

34 Edge Connectivity (EC)

• Minimum NUMBER of edges that will disconnect a graph

MinCut = {(3,5),(4,2)} Edge Connectivity 7 6 8 EC = | MinCut| 0 = | {(3,5),(4,2)}| 5 = 2 1

4 3 2

35 Highly Connected Subgraph (HCS)

A graph G =(V,E) is highly connected if EC(G)>V/2

G 7 6 8

0 5 EC(G) > V/2 1 2 > 9/2

4 3 2 G is NOT a highly connected subgraph

36 HCS Clustering

Return G Given Input graph G Find the YES 6 7 8 Minimum Cut MinCut (G) 0 5 (3,5),(4,2)} Is EC(G)> V/2 1

4 Process Graph G1 2 3 Process Graph G2 NO

Divide G using MinCut

G1 G2

37 HCS Clustering R code

• library(GraphClusterAnalysis) • library(RBGL) • library(igraph) • library(graph) • data(HCS_Example) • G = graph.data.frame(HCS_Example,directed=FALSE) • HCSClustering(G,kappa=2)

38 Outline

• Introduction to Clustering • Introduction to Graph Clustering • Algorithms for Within Graph Clustering  k-Spanning Tree  Shared Nearest Neighbor Clustering  Betweenness Centrality Based  Highly Connected Components  Maximal Clique Enumeration  Kernel k-means • Application

39 What is a Clique?

A subgraph C of graph G with edges between all pairs of nodes

G C 7 6 7 6

8 5 5 Clique

4

40 What is a Maximal Clique?

A maximal clique is a clique that is not part of a larger clique.

Clique 6 7 7 6 8

5 5

7 4 6

Maximal Clique 8

5 41 Maximal Clique Enumeration Bron and Kerbosch Algorithm Input Graph G BK(C,P,N) C - vertices in current clique P – vertices that can be added to C N – vertices that cannot be added to C

Condition: If both P and N are empty – output C as maximal clique

42 Maximal Clique R code

• library(GraphClusterAnalysis) • library(RBGL) • library(igraph) • library(graph) • data(CliqueData) • G = graph.data.frame(CliqueData,directed=FALSE) • tkplot(G) • maximalCliqueEnumerator (G)

43 Outline

• Introduction to Clustering • Introduction to Graph Clustering • Algorithms for Within Graph Clustering  k-Spanning Tree  Shared Nearest Neighbor Clustering  Betweenness Centrality Based  Highly Connected Components  Maximal Clique Enumeration  Kernel k-means • Application

44 What is k-means?

• k-means is a clustering algorithm applied to vector data points • k-means recap: – Select k data points from input as centroids 1. Assign other data points to the nearest centroid 2. Recompute centroid for each cluster 3. Repeat Steps 1 and 2 until centroids don’t change

45 k-means on Graphs Kernel K-means

• Basic algorithm is the same as k-means on Vector data • We utilize the “kernel trick” (recall Kernel Chapter) • “kernel trick” recap – We know that we can use within-graph kernel functions to calculate the inner product of a pair of vertices in a user- defined feature space. – We replace the standard distance/proximity measures used in k-means with this within-graph kernel function

46 Outline

• Introduction to Clustering • Introduction to Graph Clustering • Algorithms for Within Graph Clustering  k-Spanning Tree  Shared Nearest Neighbor Clustering  Betweenness Centrality Based  Highly Connected Components  Maximal Clique Enumeration  Kernel k-means • Application

47 Application

• Functional modules in protein-protein networks • Subgraphs with pair-wise interacting nodes => Maximal cliques

R-code • library(GraphClusterAnalysis) • library(RBGL) • library(igraph) • library(graph) • data(YeasPPI) • G = graph.data.frame(YeasPPI,directed=FALSE) • Potential_Protein_Complexes = maximalCliqueEnumerator (G) • Potential_Protein_Complexes

48