graph cluster analysis
TRANSCRIPT
![Page 1: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/1.jpg)
Introduction to Graph Cluster Analysis
![Page 2: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/2.jpg)
Outline
• Introduction to Cluster Analysis• Types of Graph Cluster Analysis• Algorithms for Graph Clustering
k-Spanning TreeShared Nearest NeighborBetweenness Centrality BasedHighly Connected ComponentsMaximal Clique EnumerationKernel k-means
• Application
2
![Page 3: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/3.jpg)
Outline
• Introduction to Clustering• Introduction to Graph Clustering• Algorithms for Graph Clustering
k-Spanning TreeShared Nearest NeighborBetweenness Centrality BasedHighly Connected ComponentsMaximal Clique EnumerationKernel k-means
• Application
3
![Page 4: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/4.jpg)
What is Cluster Analysis?
The process of dividing a set of input data into possibly overlapping, subsets, where elements in each subset are considered related by some similarity measure
4
Clusters by Shape
Clusters by Color
2 Clusters
3 Clusters
![Page 5: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/5.jpg)
Applications of Cluster Analysis
5
• Summarization– Provides a macro-level
view of the data-set
Clustering precipitation in Australia
From Tan, Steinbach, KumarIntroduction To Data Mining, Addison-Wesley, Edition 1
![Page 6: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/6.jpg)
Outline
• Introduction to Clustering• Introduction to Graph Clustering• Algorithms for Graph Clustering
k-Spanning TreeShared Nearest NeighborBetweenness Centrality BasedHighly Connected ComponentsMaximal Clique EnumerationKernel k-means
• Application
6
![Page 7: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/7.jpg)
What is Graph Clustering?
• Types– Between-graph
• Clustering a set of graphs– Within-graph
• Clustering the nodes/edges of a single graph
7
![Page 8: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/8.jpg)
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
![Page 9: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/9.jpg)
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
9
Note: In this chapter we will look at different algorithms to perform within-graph clustering
![Page 10: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/10.jpg)
Outline
• Introduction to Clustering• Introduction to Graph Clustering• Algorithms for Within Graph Clustering
k-Spanning TreeShared Nearest NeighborBetweenness Centrality BasedHighly Connected ComponentsMaximal Clique EnumerationKernel k-means
• Application
10
![Page 11: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/11.jpg)
k-Spanning Tree
11
1
2
3
4
5
2
3 2k-Spanning
Tree
k
k groups of
non-overlapping vertices4
Minimum Spanning Tree
STEPS:• Obtains the Minimum Spanning Tree (MST) of input graph G• Removes k-1 edges from the MST• Results in k clusters
![Page 12: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/12.jpg)
What is a Spanning Tree?
A connected subgraph with no cycles that includes all vertices in the graph
12
1
2
3
4
5
2
3 2
4
6
5
7 4
1
2
3
4
526
7Weight = 17
2
Note: Weight can represent either distance or similarity between two vertices or similarity of the two vertices
G
![Page 13: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/13.jpg)
What is a Minimum Spanning Tree (MST)?
13
1
2
3
4
5
2
3 2
4
6
5
7 4
G1
2
3
4
5
2
3 2
4
Weight = 11
21
2
3
4
52
45
Weight = 131
2
3
4
526
7Weight = 17
2
The spanning tree of a graph with the minimum possible sum of edge weights, if the edge weights represent distance
Note: maximum possible sum of edge weights, if the edge weights represent similarity
![Page 14: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/14.jpg)
Algorithm to Obtain MSTPrim’s Algorithm
14
1
2
3
4
5
2
3 2
4
6
5
7 4
Given Input Graph G
Select Vertex Randomlye.g., Vertex 5
5
Initialize Empty Graph T with Vertex 5
5
T
Select a list of edges L from G such that at most ONE vertex of
each edge is in T
From L select the edge X with
minimum weight
Add X to T
5
5
3
4
6
4
5 445T
4
Repeat until all vertices are added to T
![Page 15: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/15.jpg)
k-Spanning Tree
15
1
2
3
4
5
2
3 2Remove k-1 edges
with highest weight4
Minimum Spanning Tree
Note: k – is the number of clusters
E.g., k=3
1
2
3
4
5
2
3 2
4
E.g., k=3
1
2
3
4
5
3 Clusters
![Page 16: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/16.jpg)
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
![Page 17: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/17.jpg)
Outline
• Introduction to Clustering• Introduction to Graph Clustering• Algorithms for Within Graph Clustering
k-Spanning TreeShared Nearest Neighbor ClusteringBetweenness Centrality BasedHighly Connected ComponentsMaximal Clique EnumerationKernel k-means
• Application
17
![Page 18: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/18.jpg)
18
Shared Nearest Neighbor Clustering
0
1
2
3
4
Shared Nearest Neighbor Graph (SNN)
2
2
221
13
2
Shared Nearest
Neighbor Clusterin
g
Groups of
non-overlapping vertices
STEPS:• Obtains the Shared Nearest Neighbor Graph (SNN) of input graph G• Removes edges from the SNN with weight less than τ
τ
![Page 19: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/19.jpg)
What is Shared Nearest Neighbor?(Refresher from Proximity Chapter)
19
u v
𝑺𝒉𝒂𝒓𝒆𝒅 𝑵𝒆𝒂𝒓𝒆𝒔𝒕 𝑵𝒆𝒊𝒈𝒉𝒃𝒐𝒓𝒔
Shared Nearest Neighbor is a proximity measure and denotes the number of neighbor nodes common between any given pair of nodes
![Page 20: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/20.jpg)
Shared Nearest Neighbor (SNN) Graph
20
0
1
2
3
4
G
0
1
2
3
4
SNN
2
2
221
13
Given input graph G, weight each edge (u,v) with the number of shared nearest neighbors between u and v
1Node 0 and Node 1 have 2 neighbors in common: Node 2 and Node 3
![Page 21: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/21.jpg)
Shared Nearest Neighbor ClusteringJarvis-Patrick Algorithm
21
0
1
2
3
4
SNN graph of input graph G
2
2
221
13
2
If u and v share more than τ neighbors
Place them in the same cluster
0
1
2
3
4
E.g., τ =3
![Page 22: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/22.jpg)
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
![Page 23: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/23.jpg)
Outline
• Introduction to Clustering• Introduction to Graph Clustering• Algorithms for Within Graph Clustering
k-Spanning TreeShared Nearest Neighbor ClusteringBetweenness Centrality BasedHighly Connected ComponentsMaximal Clique EnumerationKernel k-means
• Application
23
![Page 24: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/24.jpg)
What is Betweenness Centrality?(Refresher from Proximity Chapter)
Two types:– Vertex Betweenness– Edge Betweenness
24
Betweenness centrality quantifies the degree to which a vertex (or edge) occurs on the shortest path between all the other pairs of nodes
![Page 25: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/25.jpg)
Vertex Betweenness
25
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
![Page 26: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/26.jpg)
Edge BetweennessThe number of shortest paths in the graph G that pass through given edge (S, B)
26
E.g., Sharon and Bob both study at NCSU and they are the only link between NY DANCE and CISCO groups
NCSU
Vertices and Edges with high Betweenness form good starting points to identify clusters
![Page 27: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/27.jpg)
Vertex Betweenness Clustering
27
Repeat until highest vertex
betweenness ≤ μ
Select vertex v with the highest betweennessE.g., Vertex 3 with value 0.67
Given Input graph G Betweenness for each vertex
1. Disconnect graph at selected vertex (e.g., vertex 3 )2. Copy vertex to both Components
![Page 28: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/28.jpg)
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,mode="vertex",threshold=0.2)
28
![Page 29: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/29.jpg)
29
Edge-Betweenness ClusteringGirvan and Newman Algorithm
29
Repeat until highest edge
betweenness ≤ μ
Select edge with Highest BetweennessE.g., edge (3,4) with value 0.571
Given Input Graph G Betweenness for each edge
Disconnect graph at selected edge (E.g., (3,4 ))
![Page 30: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/30.jpg)
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
![Page 31: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/31.jpg)
Outline
• Introduction to Clustering• Introduction to Graph Clustering• Algorithms for Within Graph Clustering
k-Spanning TreeShared Nearest Neighbor ClusteringBetweenness Centrality BasedHighly Connected ComponentsMaximal Clique EnumerationKernel k-means
• Application
31
![Page 32: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/32.jpg)
What is a Highly Connected Subgraph?
• Requires the following definitions– Cut – Minimum Edge Cut (MinCut)– Edge Connectivity (EC)
32
![Page 33: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/33.jpg)
Cut
• The set of edges whose removal disconnects a graph
33
6
5
4
7
3 2
1
0
8
6
5
4
7
3 2
1
0
8
6
5
4
7
3 2
1
0
8
Cut = {(0,1),(1,2),(1,3}
Cut = {(3,5),(4,2)}
![Page 34: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/34.jpg)
Minimum Cut
34
6
5
4
7
3 2
1
0
86
5
4
7
3 2
1
0
8
MinCut = {(3,5),(4,2)}
The minimum set of edges whose removal disconnects a graph
![Page 35: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/35.jpg)
Edge Connectivity (EC)
• Minimum NUMBER of edges that will disconnect a graph
35
6
5
4
7
3 2
1
0
8
MinCut = {(3,5),(4,2)}
EC = | MinCut| = | {(3,5),(4,2)}| = 2
Edge Connectivity
![Page 36: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/36.jpg)
Highly Connected Subgraph (HCS)
A graph G =(V,E) is highly connected if EC(G)>V/2
36
6
5
4
7
3 2
1
0
8
EC(G) > V/22 > 9/2
G
G is NOT a highly connected subgraph
![Page 37: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/37.jpg)
HCS Clustering
37
6
5
4
7
3 2
10
8Find the
Minimum CutMinCut (G)
Given Input graph G
(3,5),(4,2)}
YES
Return G
NO
32
10
6
5
4
78
G1 G2
Divide Gusing MinCut
Is EC(G)> V/2
Process Graph G1Process Graph G2
![Page 38: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/38.jpg)
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
![Page 39: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/39.jpg)
Outline
• Introduction to Clustering• Introduction to Graph Clustering• Algorithms for Within Graph Clustering
k-Spanning TreeShared Nearest Neighbor ClusteringBetweenness Centrality BasedHighly Connected ComponentsMaximal Clique EnumerationKernel k-means
• Application
39
![Page 40: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/40.jpg)
What is a Clique?
A subgraph C of graph G with edges between all pairs of nodes
40
6
5
4
7
8
Clique
6
5
7G C
![Page 41: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/41.jpg)
What is a Maximal Clique?
41
6
5
4
7
8
Clique
Maximal Clique
6
5
7
6
5
7
8
A maximal clique is a clique that is not part of a larger clique.
![Page 42: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/42.jpg)
42
BK(C,P,N)C - vertices in current cliqueP – vertices that can be added to CN – vertices that cannot be added to C
Condition: If both P and N are empty – output C as maximal clique
Maximal Clique EnumerationBron and Kerbosch Algorithm
Input Graph G
![Page 43: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/43.jpg)
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
![Page 44: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/44.jpg)
Outline
• Introduction to Clustering• Introduction to Graph Clustering• Algorithms for Within Graph Clustering
k-Spanning TreeShared Nearest Neighbor ClusteringBetweenness Centrality BasedHighly Connected ComponentsMaximal Clique EnumerationKernel k-means
• Application
44
![Page 45: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/45.jpg)
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 centroids1. Assign other data points to the nearest centroid2. Recompute centroid for each cluster3. Repeat Steps 1 and 2 until centroids don’t
change
45
![Page 46: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/46.jpg)
k-means on GraphsKernel 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
![Page 47: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/47.jpg)
Outline
• Introduction to Clustering• Introduction to Graph Clustering• Algorithms for Within Graph Clustering
k-Spanning TreeShared Nearest Neighbor ClusteringBetweenness Centrality BasedHighly Connected ComponentsMaximal Clique EnumerationKernel k-means
• Application
47
![Page 48: Graph Cluster Analysis](https://reader030.vdocument.in/reader030/viewer/2022020108/5887402a1a28abee458c571f/html5/thumbnails/48.jpg)
Application• Functional modules in protein-protein
interaction networks• Subgraphs with pair-wise interacting nodes =>
Maximal cliques
48
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