Slide - public.asu.edu

Fast Direction-Aware Proximity
for Graph Mining
KDD 2007, San Jose
Hanghang Tong, Yehuda Koren,
Christos Faloutsos
Defining Direction-Aware Proximity (DAP):
escape probability
• Define Random Walk (RW) on the graph
• Esc_Prob(AB)
– Prob (starting at A, reaches B before returning to A)
A
the remaining
graph
Esc_Prob = Pr (smile before cry)
B
2
P=
 p1,1

 p2,1
p
 3,1
 p4,1

 p5,1
p
 6,1
p1,2 p1,3 p1,4 p1,5 p1,6 

p2,2 p2,3 p2,4 p2,5 p2,6 
p3,2 p3,3 p3,4 p3,5 p3,6 

p4,2 p4,3 p4,4 p4,5 p4,6 

p5,2 p5,3 p5,4 p5,5 p5,6 
p6,2 p6,3 p6,4 p6,5 p6,6 
P: Transition matrix (row norm.)
Esc_Prob(1->5)
=
I-
6
0.5
3
0.5
0.5
1
0.5
0.5
0.5
2
0.5
1
1
5
0.5
4
-1
+
3
Intuition of Formula
1. Q   I  P  =I  P  P 2 +P 3 +
1
 
2. P 2
i, j
,
tells the probability that start from i, take two
steps to arrive at j
3. Q gives the stationary distribution.
4. Qi , j tells the probability we started from i and ended with j.
P*P=
 p1,1

 p2,1
p
 3,1
 p4,1

 p5,1
p
 6,1
p1,2
p1,3
p1,4
p1,5
p2,2
p2,3
p2,4
p2,5
p3,2
p3,3
p3,4
p3,5
p4,2
p4,3 p4,4
p4,5
p5,2
p5,3
p5,4
p5,5
p6,2
p6,3
p6,4 p6,5
p1,6 

p2,6 
p3,6 

p4,6 

p5,6 
p6,6 
 p1,1

 p2,1
p
 3,1
 p4,1

 p5,1
p
 6,1
p1,2
p1,3
p1,4
p1,5
p2,2
p2,3
p2,4
p2,5
p3,2
p3,3
p3,4
p3,5
p4,2
p4,3 p4,4
p4,5
p5,2
p5,3
p5,4
p5,5
p6,2
p6,3
p6,4 p6,5
p1,6 

p2,6 
p3,6 

p4,6 

p5,6 
p6,6 
P=
 p1,1

 p2,1
p
 3,1
 p4,1

 p5,1
p
 6,1
p1,2 p1,3 p1,4 p1,5 p1,6 

p2,2 p2,3 p2,4 p2,5 p2,6 
p3,2 p3,3 p3,4 p3,5 p3,6 

p4,2 p4,3 p4,4 p4,5 p4,6 

p5,2 p5,3 p5,4 p5,5 p5,6 
p6,2 p6,3 p6,4 p6,5 p6,6 
P: Transition matrix (row norm.)
Esc_Prob(1->5)
=
I-
6
0.5
3
0.5
0.5
1
0.5
0.5
0.5
2
0.5
1
1
5
0.5
4
-1
+
5
Challenges
• Case 1, Medium Size Graph
– Matrix inversion is feasible, but…
– What if we want many proximities?
– Q: How to get all (n2 ) proximities efficiently?
– A: FastAllDAP!
• Case 2: Large Size Graph
– Matrix inversion is infeasible
– Q: How to get one proximity efficiently?
– A: FastOneDAP!
6
FastAllDAP
• Q1: How to efficiently compute all
possible proximities on a medium
size graph?
– a.k.a. how to efficiently solve multiple linear
systems simultaneously?
• Goal: reduce # of matrix inversions!
7
FastAllDAP: Observation
P=
P=
 p1,1

 p2,1
p
 3,1
 p4,1

 p5,1
p
 6,1
p1,2 p1,3 p1,4 p1,5 p1,6 

p2,2 p2,3 p2,4 p2,5 p2,6 
p3,2 p3,3 p3,4 p3,5 p3,6 

p4,2 p4,3 p4,4 p4,5 p4,6 

p5,2 p5,3 p5,4 p5,5 p5,6 
p6,2 p6,3 p6,4 p6,5 p6,6 
 p1,1

 p2,1
p
 3,1
 p4,1

 p5,1
p
 6,1
p1,2 p1,3 p1,4 p1,5 p1,6 

p2,2 p2,3 p2,4 p2,5 p2,6 
p3,2 p3,3 p3,4 p3,5 p3,6 

p4,2 p4,3 p4,4 p4,5 p4,6 

p5,2 p5,3 p5,4 p5,5 p5,6 
p6,2 p6,3 p6,4 p6,5 p6,6 
6
0.5
3
0.5
0.5
1
0.5
0.5
0.5
2
0.5
1
1
4
5
0.5
Need two different matrix inversions!
8
Prox(1  5)
P=
 p1,1

 p2,1
p
 3,1
 p4,1

 p5,1
p
 6,1
p1,2 p1,3 p1,4 p1,5 p1,6 

p2,2 p2,3 p2,4 p2,5 p2,6 
p3,2 p3,3 p3,4 p3,5 p3,6 

p4,2 p4,3 p4,4 p4,5 p4,6 

p5,2 p5,3 p5,4 p5,5 p5,6 
p6,2 p6,3 p6,4 p6,5 p6,6 
Prox(1  6)
P=
 p1,1

 p2,1
p
 3,1
 p4,1

 p5,1
p
 6,1
p1,2 p1,3 p1,4 p1,5 p1,6 

p2,2 p2,3 p2,4 p2,5 p2,6 
p3,2 p3,3 p3,4 p3,5 p3,6 

p4,2 p4,3 p4,4 p4,5 p4,6 

p5,2 p5,3 p5,4 p5,5 p5,6 
p6,2 p6,3 p6,4 p6,5 p6,6 
FastAllDAP: Rescue
Overlap between
two gray parts!
Redundancy among different linear systems!
9
FastAllDAP: Theorem
• Theorem:
• Example:
• Proof: by SM Lemma
10
FastAllDAP: Algorithm
• Alg.
– Compute Q
– For i,j =1,…, n, compute
• Computational Save O(1) instead of O(n )!
2
• Example
– w/ 1000 nodes,
– 1m matrix inversion vs. 1 matrix!
11
FastOneDAP
• Q1: How to efficiently compute one
single proximity on a large size graph?
– a.k.a. how to solve one linear system
efficiently?
• Goal: avoid matrix inversion!
12
FastOneDAP: Observation
6
0.5
3
0.5
0.5
1
0.5
0.5
0.5
2
0.5
1
1
4
5
0.5
Partial Info. (4 elements /2 cols ) of Q is enough!
13
FastOneDAP: Observation
• Q: How to compute one column of Q?
• A: Taylor expansion
[0, …0, 1, 0, …, 0]
T
i th col of Q
Reminder:
14
FastOneDAP: Observation
T
[0, …0, 1, 0, …, 0]
i th col of Q
….
x
x
x
Sparse matrix-vector multiplications!
15
FastOneDAP: Iterative Alg.
• Alg. to estimate i thCol of Q
16
FastOneDAP: Property
• Convergence Guaranteed !
• Computational Save
– Example:
• 100K nodes and 1M edges (50 Iterations)
• 10,000,000x fast!
• Footnote: 1 col is enough!
– (details in paper)
17
Esc_Prob is good, but…
• Issue #1:
– `Degree-1 node’ effect
• Issue #2:
– Weakly connected pair
Need some practical modifications!
18
Issue#1: `degree-1 node’ effect
[Faloutsos+] [Koren+]
A
1
D
1
B
1/3
B
Esc_Prob(a->b)=1
A
1
D
1/3
1
1/3
1
E
F
Esc_Prob(a->b)=1
• no influence for degree-1 nodes (E, F)!
– known as ‘pizza delivery guy’ problem in undirected graph
• Solutions: Universal Absorbing Boundary!
19
Universal Absorbing Boundary
Footnote: fly-out probability = 0.1
A
0.9
1
D
0.9
1
B
0.1
0.1
U-A-B
U-A-B
0.1
1
U-A-B is a black-hole!
20
Introducing Universal-Absorbing-Boundary
A
1
D
1
B
A
0.9
D
0.9
B
0.1
Esc_Prob(a->b)=1
0.1
0.1
U-A-B
Prox(a->b)=0.91
A
1
D
1/3
1
1/3
B
A
0.9
E
F
0.3
F
0.1
0.1
0.1
0.1
0.1
Esc_Prob(a->b)=1
B
0.3
0.9
0.3
0.9
1/3
1
E
D
U-A-B
Prox(a->b)=0.74
Footnote: fly-out probability = 0.1
21
Issue#2: Weakly connected pair
A
1
1
B
1
Prox(AB) = Prox (BA)=0
Solution: Partial symmetry!
.
a w
i
w
j
i
j
.
(1-a) w
22
Practical Modifications: Partial Symmetry
A
1
1
1
B
Prox(AB) = Prox (BA)=0
0.1
A
0.9
0.1
0.9
0.1
0.9
B
Prox(AB) =0.081 > Prox (BA)=0.009
23
Efficiency: FastAllDAP
Time (sec)
Straight-Solver
1,000x
faster!
FastAllDAP
Size of Graph
24
Efficiency: FastOneDAP
Time (sec)
Straight-Solver
1,0000x
faster!
FastOneDAP
Size of Graph
25
Link Prediction: direction
• Q: Given the existence of the link, what is the
direction of the link?
• A: Compare prox(ij) and prox(ji)
density
>70%
Prox (ij) - Prox (j27i)