참고: 세상을 바꾼 Google의 PageRank 알고리즘
Pagerank 알고리즘은 노드 중요도를 계산하는 데 사용됩니다.
생각
웹페이지는 인차(참조)가 많을수록 더 중요합니다.
중요한 웹사이트에 인용되는 것이 일반 웹사이트에 인용되는 것보다 더 중요합니다.
따라서 웹사이트가 중요한지 여부를 고려하려면 해당 웹사이트를 참조하는 웹사이트가 중요한지 살펴봐야 합니다. 이는 반복적인 질문이 됩니다.
페이지랭크의 5가지 관점 이해
선형 방정식 시스템을 반복적으로 풀기
예
3개의 방정식과 3개의 미지수가 있는 것처럼 보이지만 실제로는 2개의 방정식만 있습니다.
가우스 소거법은 풀 수 있지만 확장성이 좋지 않습니다.
노드 j의 순위 값 rj r_j아르 자형jjj 에게 모든 것을 고려하는 것입니다노드 j 의 순위 값을 out-degree로 나누어 합산합니다.
반복적인 솔루션
왼쪽 곱셈 M 행렬 반복
반복 과정은 행렬로 표현됩니다: ( 왼쪽 행렬의 i행과 j열 Aij는 0이 아닌 값을 가지며 A_{ij}는 0이 아닌 값을 갖습니다.ㅏij0이 아닌 값은 j번째 노드에서 i번째 노드로 향하는 간선이 있음을 나타냅니다.)
왼쪽의 행렬을 열 확률 행렬(열 전달 행렬/열 대체 행렬, 열 확률 행렬)이라고 하고
오른쪽의 벡터를 페이지랭크 벡터라고 합니다.
행렬의 고유벡터
반복 공식:
r = M ⋅ rr=M \cdot r아르 자형=중⋅r은 실제로
1 ⋅ r = M ⋅ r 1 \cdot r=M \cdot r1⋅아르 자형=중⋅r
이러한 관점에서 페이지 순위 벡터는 고유값이 1인 M 행렬의 고유 벡터입니다.
Column Stochastic 행렬의 경우 Perreon-Frobenius 정리에 따라 가장 큰 고유값이 1이고 고유한 주 고유벡터(고유값 1에 해당하는 고유벡터)가 있으며 벡터의 모든 요소의 합은 1입니다.
거듭제곱 반복을 통해 페이지랭크 벡터를 빠르게 해결할 수 있습니다.
무작위 걷기
랜덤 워크 -> 카운트 합산 -> 확률로 정규화, 결과는 페이지 순위 벡터입니다.
마르코프 체인
페이지랭크 해결
융합분석
1. 수렴할지 여부 - 수렴, 같은 결과로 수렴
에르고딕 정리
에르고딕 정리(Ergodic Theorem)에 따르면, 환원 불가능하고 비주기적인 마르코프 체인에 대해:
1. 고유하고 안정적인 마르코프 분포가 있습니다
. 2. 그리고 모든 초기 분포는 동일한 분포로 수렴됩니다.
환원성 마르코프 체인과 환원불가능한 마르코프 체인
환원가능(reducible)은 고립된 상태가 있다는 뜻이고
, 환원불가능(irreducible)은 모든 상태에 도달할 수 있다는 뜻이다.
주기적 마르코프 체인과 비주기적 마르코프 체인
2. 결과가 중요성을 나타내는가 - 두 가지 질문 유형
거미 함정 문제
모든 외부 차수 모서리가 그룹에 포함되어 있어 이 그룹이 모든 중요도를 흡수하게 됩니다.
막다른 골목 문제
out-degree가 없으면 최종적으로 중요도는 0이 됩니다.
이 두 경우에는 수렴하더라도 합리적인 네트워크 중요도가 아닙니다.
예
해결책
거미덫 문제에 대한 해결책
막다른 골목에 대한 해결책
마지막 해결책
Pagerank 업그레이드-맵리듀스 작업
페이지랭크 알고리즘은 노드 유사성을 계산하는 데 사용되며 추천 시스템에 사용됩니다.
주어진: 사용자와 제품 간의 상호작용을 표현하기 위해 이분 그래프를 사용합니다
목표: 지정된 노드와 가장 유사한 노드를 찾습니다
가정: 동일한 사용자가 방문한 노드는 유사할 가능성이 더 높습니다.
Random Walk 관점에서 영감을 받은 pagerank
페이지랭크에 대한 한 가지 설명은 네트워크의 임의 노드에 무작위로 전송될 확률이 있는 랜덤 워크이며 계속해서 진행됩니다. 주제별 페이지
랭크(개인화된 페이지랭크라고도 함): 전송될 확률이 있는 랜덤 워크입니다. 지정된 수의 노드로 노드, 계속 걷기
무작위 걷기 재시작: 무작위 걷기, 지정된 노드로 전송, 계속 걷기
무작위 걷기 방문 횟수 - 유사성 척도
노드 세트 query_nodes가 주어지면 무작위 보행을 시뮬레이션합니다.
- 방문 기록
- 확률 α \alphaα 아래에서 query_nodes에서 걷기를 다시 시작합니다.
- 액세스 시간이 높은 노드는 query_nodes의 포인트와 유사성이 높습니다.
의사코드
이점
코드 연습
참조: https://www.bilibili.com/video/BV1Wg411H7Ep/?p=16&spm_id_from=pageDriver