페이지랭크(PageRank)는 웹페이지가 받은 링크를 일종의 표로 보고, 그 표를 준 페이지의 중요도까지 반영해 각 페이지의 상대적 중요도를 숫자로 매기는 알고리즘이다. 구글 공동 창업자 래리 페이지의 이름과 웹페이지의 순위를 뜻하는 두 의미가 겹쳐 있는 이름이다.
핵심은 링크를 세는 방식에 있다. 원논문은 페이지랭크가 학술 인용 분석을 웹에 옮기되 “모든 페이지의 링크를 똑같이 세지 않고 한 페이지에 있는 링크 개수로 나누어 정규화한다”는 점에서 확장된 개념이라고 설명한다 (Brin & Page, The Anatomy of a Large-Scale Hypertextual Web Search Engine).
같은 수의 링크를 받아도 점수가 크게 갈리는 이유가 여기 있다.
원논문의 공식은 다음과 같다. 페이지 A를 가리키는 페이지가 T1부터 Tn까지 있고, C(T)가 페이지 T에서 나가는 링크 수, d가 감쇠 계수일 때다.
PR(A) = (1-d) + d ( PR(T1)/C(T1) + ... + PR(Tn)/C(Tn) )
읽는 법은 단순하다. 나를 가리키는 페이지의 점수를 그 페이지가 내보내는 링크 개수로 나눠서 모두 더한 뒤, 감쇠 계수를 곱한다.
혼자서는 풀리지 않는 식이다. A의 점수를 구하려면 A를 가리키는 페이지의 점수가 필요하고, 그 점수를 구하려면 또 다른 페이지의 점수가 필요하기 때문이다.
그래서 반복해서 푼다. 모든 페이지에 같은 초깃값을 준 뒤 위 식을 계속 적용하면 값이 한 지점으로 수렴한다.
논문은 이를 “단순한 반복 알고리즘으로 계산할 수 있으며 웹의 정규화된 링크 행렬의 주고유벡터에 해당한다”고 표현한다.
수렴이 얼마나 빠른지 보려고 페이지 4개짜리 웹을 만들어 직접 돌려 봤다. A는 B와 C를, B는 C를, C는 A를, D는 C를 가리키고, 전체 합이 1이 되도록 정규화한 형태에 d는 0.85로 두었다.
| 반복 | A | B | C | D |
|---|---|---|---|---|
| 1회 | 0.250 | 0.144 | 0.569 | 0.038 |
| 2회 | 0.521 | 0.144 | 0.298 | 0.038 |
| 3회 | 0.291 | 0.259 | 0.413 | 0.038 |
| 5회 | 0.389 | 0.203 | 0.371 | 0.038 |
| 10회 | 0.375 | 0.195 | 0.393 | 0.038 |
| 30회 | 0.373 | 0.196 | 0.394 | 0.038 |
10회 남짓이면 소수 둘째 자리가 굳는다. 웹 전체 규모에서도 이 성질 덕분에 계산이 가능하고, 논문은 1998년 당시 중간 사양 워크스테이션에서 2,600만 페이지의 페이지랭크를 몇 시간 만에 계산했다고 적었다.
결과를 보면 링크 개수가 전부가 아니라는 점이 드러난다. A와 B는 똑같이 링크를 하나씩 받았는데 최종 점수는 0.373 대 0.196으로 두 배 가까이 벌어졌다.
A가 받은 링크는 이 웹에서 가장 점수가 높은 C에서 왔고 그것이 C의 유일한 바깥 링크였다. 반면 B가 받은 링크는 A가 내보낸 두 개의 링크 중 하나라 절반으로 쪼개졌다.
아무 링크도 받지 못한 D는 (1-d)/4에 해당하는 0.038에서 더 오르지 않는다. 이 값이 모든 페이지에 기본으로 깔리는 바닥값이다.
지루해진 사용자가 링크 타기를 그만둘 확률을 다루는 값이다. 논문은 페이지랭크를 사용자 행동 모델로 설명하면서 “무작위 서퍼”라는 가상의 사용자를 가정한다.
이 서퍼는 아무 페이지에서 시작해 링크를 계속 클릭하고 뒤로 가기는 누르지 않는데, 결국 지루해지면 다시 아무 페이지에서 새로 시작한다. 어떤 페이지에 이 서퍼가 머무를 확률이 곧 그 페이지의 페이지랭크다.
감쇠 계수 d는 그 지루해질 확률과 연결된 값이고, 논문은 “d는 0과 1 사이로 설정할 수 있으며 보통 0.85로 둔다”고 밝힌다. 계속 링크를 따라갈 확률이 85퍼센트, 새 페이지로 점프할 확률이 15퍼센트라는 뜻이다.
이 15퍼센트가 없으면 계산이 망가진다. 서로만 링크하는 페이지 무리에 서퍼가 갇혀 점수가 그쪽으로 무한히 쌓이기 때문에, 어디로든 튈 수 있는 확률을 남겨 두는 것이다.
논문이 페이지랭크를 “웹페이지 전체에 대한 확률 분포이며 모든 웹페이지 페이지랭크의 합은 1이 된다”고 정의한 것도 이 서퍼 모델에서 나온다.
스탠퍼드대학교 대학원생이던 래리 페이지와 세르게이 브린이 1990년대 중반에 만들었다. 위키백과는 이 연구가 1995년 시작되어 1998년 구글이라는 시범 서비스로 발전했다고 기록한다 (위키백과, 페이지랭크).
특허는 회사가 아니라 학교 소유로 출발했다. “Method for node ranking in a linked database”라는 이름으로 스탠퍼드대학교가 1998년 1월 9일 출원했고 2001년 9월 4일 등록됐으며, 발명자는 래리 페이지 한 사람이다 (Google Patents, US6285999B1).
이 특허는 이미 만료된 상태다. 그래서 페이지랭크 계산 자체는 지금 누구나 구현할 수 있고, 실제로 그래프 분석 라이브러리 대부분이 기본 기능으로 제공한다.
원논문이 겨냥한 문제는 지금 읽어도 낯익다. 색인을 아무리 키워도 “쓰레기 결과가 사용자가 관심 있는 결과를 씻어내 버린다”는 것이 1997년 당시의 진단이었고, 링크 구조를 품질 판단에 쓰자는 것이 그 해법이었다.
쓴다. 구글은 순위 시스템을 안내하는 공식 문서에서 페이지랭크를 “링크 분석 시스템 및 PageRank” 항목으로 직접 다룬다 (Google 검색 센터, Google 순위 시스템 가이드).
같은 문서의 표현은 분명하다. 페이지랭크를 “Google이 처음 출시되었을 때 사용된 핵심 순위 시스템 중 하나”로 소개한 뒤, “그 이후로도 PageRank의 작동 방식이 크게 개선되었으며 여전히 Google의 핵심 순위 지정 시스템 중 하나”라고 못 박는다.
혼동은 대개 점수 조회가 사라진 것과 알고리즘이 사라진 것을 섞는 데서 온다. 구글 툴바가 0에서 10 사이 숫자로 보여 주던 툴바 페이지랭크는 2016년 4월 15일 표시가 중단됐지만, 내부 순위 산정에는 계속 쓰였다 (Wikipedia, PageRank).
그래서 오늘날 볼 수 있는 숫자와 원래의 페이지랭크는 다른 것이다.
| 구분 | 정체 | 지금 볼 수 있나 |
|---|---|---|
| 페이지랭크 | 구글 내부의 링크 분석 점수 | 볼 수 없음 |
| 툴바 페이지랭크 | 과거 구글 툴바가 보여 주던 0~10 값 | 2016년 표시 중단 |
| 서드파티 권위 지표 | 외부 도구가 자체 크롤링으로 추정한 점수 | 볼 수 있으나 구글 값이 아님 |
실무에서 남는 결론은 단순하다. 어떤 백링크를 받았는지가 몇 개를 받았는지보다 중요하고, 이는 SEO에서 링크를 다루는 방식의 출발점이 된다.
내보내는 링크의 성격을 구글에 알리는 수단도 마련돼 있다. 광고나 유료 링크는 rel="sponsored", 댓글 같은 사용자 제작 콘텐츠 링크는 rel="ugc", 연결되기를 원하지 않는 링크는 rel="nofollow"로 표시하며, 이렇게 표시된 링크는 일반적으로 추적되지 않는다 (Google 검색 센터, Google에 외부 연결 링크의 유효성 알리기).
링크가 신뢰를 옮기는 통로라는 발상은 GEO에서도 이어진다. AI 검색이 어떤 문서를 인용할지 고를 때도 그 문서가 다른 곳에서 얼마나 참조되는지가 신호로 쓰이기 때문이다.
무작위 서퍼 모델이 곧 마르코프 연쇄다. 다음에 어느 페이지로 갈지가 현재 있는 페이지에만 달려 있고 이전 경로와 무관하기 때문이다.
이 연쇄를 무한히 반복했을 때 각 페이지에 머무는 비율이 정상 분포이고, 그 값이 페이지랭크다. 감쇠 계수로 15퍼센트의 무작위 점프를 섞는 조작은 이 연쇄가 한 지점으로 반드시 수렴하도록 보장하는 장치이기도 하다.
수렴한 페이지랭크 값이 곧 고유벡터다. 원논문은 페이지랭크가 “웹의 정규화된 링크 행렬의 주고유벡터에 해당한다”고 적었다.
링크 관계를 행렬로 적고 그 행렬을 벡터에 계속 곱하는 것이 앞의 반복 계산과 같은 일이라서, 반복을 충분히 돌리면 고윳값 1에 해당하는 고유벡터로 수렴한다. 실제 계산에서 거듭제곱법을 쓰는 이유도 여기에 있다.
서치폴라리스가 AI 검색 가시성을 진단하고 GEO 실행까지 대행합니다.