A~=D−1A
D: outdegree matrix(diagonal)
D−1: outdegree1 matrix(diagonal)
calculate matrix
A=110101010,D=200020001,D−1=0.50000.50001
A~=0.50000.50001@110101010=0.50.500.50100.50
A~T=0.50.500.500.5010
power iteration
init r(0)=313131
r(1)=A~Tr(0)=0.50.500.500.5010@313131=312161
r=525251
2. Random Walk Interpretation
어떤 노드에서 다른 노드로 이동할때 random하게 이동하는 것
time t에 node i로 도착할 확률을 Pi(t)로 나타내며 값이 클수록 자주 방문된 노드임을 의미
p(t+1)=A~p(t)로 표현 가능, t→∞이면 p(t+1)≈p(t)해져서 p=A~p 즉, r=A~r과 유사해짐
t=0 시점의 초기 확률 분포가 무엇이든지:
random node에서 다른 어느 node로 이동 가능해야함
stationary distribution이 고유해야함(p(t)≈p(t+1)≈p)
기존 방식은 데이터에서 deadend(이동할 노드가 없는 경우 → column stochastic하지 않음)나 spider trap(갇히게 됨)이 발생하면 rank 계산에 있어 문제가 발생함
solution:
deadend: n1 로 값을 초기화해 해결함
spider trap: teleport를 이용해 random node로 jump하여 벗어남
r=Gr
G=βB~T+(1−β)[n1]n×n
B~T: A~T에서 column-stochastic(열의 합=1)하지 않은 열에 대해 각 값을 n1 으로 초기화
β∈[0.8,0.9],default=0.85
rj=β∑i∈Njdiri+(1−β)n1
random walk: β∑i∈Njdiri
teleport: (1−β)n1
4. Top Specific Page Rank
teleport로 random work할때 query의 topic과 관련된 page들의 집합 S안에서만 골라 이동
rs=βB~Trs+(1−β)qs
random walk: βB~Trs
topic specific teleport: (1−β)qs
qs: S안에 있는 요소인 경우 ∣S∣1, 그외는 0
S={1,2},β=0.8
calculate matrix
A=0100100010010010,D=2000010000100001,D−1=0.5000010000100001
A~=0.5000010000100001@0100100010010010=01000.50000.50010010
A~T=00.50.50100000010010=column stochastic=B~T
qs=0.50.500
power iteration
init rs(0)=0.250.250.250.25
rs(1)=0.8×00.50.50100000010010@0.250.250.250.25+0.2×0.50.500=0.30.20.30.2
r=[0.260.200.290.23]
지금까지의 Page Rank 방식에서 발생하는 G가 fully dense한 문제점에 대해 아래 2가지 해결책을 제시
D~T: deadend를 해결하기 위해 n1 로 값을 설정한 부분을 따로 정의
B~T=A~T+D~T
A~T=0.50.500.500.5000
D~T=000000313131
G=βB~T+(1−β)[n1]nxn→βA~T+βD~T+(1−β)[n1]nxn
하지만 여전히 A~T는 sparse함(real world에서 90~99% sparse) → CSR(Compressed Sparse Row)와 같은 sparse matrix format을 사용
또 deadend가 많이 발생하면 D~T도 sparse함 → injection leaked score를 사용
r(t+1)=βA~Tr(t)+(1−S)[n1]n×1
S=sum(βA~Tr(t)), 1−S: leaked score의 총합
2. Block Based Update Algorithm
graph(data)에 edge가 너무 많아서 memory에 올라가지 못하는 경우 adjacency matrix인 A~를 source node, degree, destination nodes를 포함한 list로 표현
source node
degree
destination nodes
o Basic
하나의 source node씩 읽으면서 PageRank 값을 업데이트
디스크에서 rold (이전 PageRank 값)과 A~ (인접 행렬)를 읽음
새로운 PageRank 값 rnew를 계산하여 디스크에 저장
cost=2∣r∣+∣A~∣
o Block Based
rnew를 K개의 블록으로 나누고 각 블록을 읽으면서 수행
rold와 A~를 K번 스캔
각 블록을 디스크에 저장하여 새로운 PageRank 값 rnew를 계산
cost=K(∣A~∣+∣r∣)+∣r∣
o Block Stripe Based
A~를 stripe 단위로 나누고, 각 stripe는 rnew의 블록에 대응되는 destination node만 포함해 수행, 한 번 읽은 파일을 다시 읽지 않아도 됨
rnew의 각 블록을 디스크에 저장하고, rold를 K번 스캔
A~의 stripe를 읽어 rnew를 업데이트, stripe의 크기는 (1+ϵ)∣A~∣이며, ϵ은 K보다 작은 값
cost=(1+ϵ)∣A~∣+(1+K)∣r∣