머릿말

5 minute read

머릿말

νŽ˜μ΄μ§€λž­ν¬(PageRank) μ•Œκ³ λ¦¬μ¦˜μ€ κ΅¬κΈ€μ˜ 초기 검색 엔진에 μ‚¬μš©λœ μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. κ΅¬κΈ€μ˜ μ°½μ—…μž μ„Έλ₯΄κ²Œμ΄ 브린(Sergey Brin)κ³Ό 래리 νŽ˜μ΄μ§€(Larry Page)의 논문이기에 κ΅¬κΈ€μ΄λž€ νšŒμ‚¬κ°€ μ‹œμž‘λ˜λŠ” μ•Œκ³ λ¦¬μ¦˜μΈ μ…ˆμ΄λ‹€.

νŽ˜μ΄μ§€λž­ν¬ μ•Œκ³ λ¦¬μ¦˜μ€ λ…Όλ¬Έμ˜ 인용(citation) 방식을 μ›Ή νŽ˜μ΄μ§€μ— μ μš©ν•œ μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ, νŠΉμ • νŽ˜μ΄μ§€κ°€ μ–Όλ§ˆλ‚˜ μ€‘μš”ν•œμ§€λ₯Ό μ•Œ 수 μžˆλ‹€.

PageRank Formula

PageRank μ•Œκ³ λ¦¬μ¦˜μ˜ λ…Όλ¬Έ "The PageRank Citation Ranking: Bringing Order to the Web"의 Reference 문단

논문에선 ν”ΌμΈμš©μˆ˜κ°€ κ·Έ λ…Όλ¬Έμ˜ 영ν–₯λ ₯이닀. μ›ΉνŽ˜μ΄μ§€λ„ 같은 λ°©μ‹μœΌλ‘œ μ€‘μš”λ„λ₯Ό μΈ‘μ •ν•  수 μžˆμ§€ μ•Šμ„κΉŒ? μ–΄λ–€ νŽ˜μ΄μ§€λ₯Ό μΈμš©ν•˜λŠ” λ‹€λ₯Έ νŽ˜μ΄μ§€κ°€ λ§Žλ‹€λ©΄, κ·Έ νŽ˜μ΄μ§€λŠ” μ€‘μš”ν•œ νŽ˜μ΄μ§€ 일 것이닀!

κ·ΈλŸ¬λ‚˜ λŒ€ν•™μ›μƒμ΄ κ³ μƒν•΄μ„œ μΆœνŒν•˜λŠ” λ…Όλ¬Έκ³Ό 달리 μ›ΉνŽ˜μ΄μ§€λŠ” μ•„μ£Ό μ‰½κ²Œ λ§Œλ“€μ–΄μ§„λ‹€. λˆ„κ΅¬λ‚˜ μ›ΉνŽ˜μ΄μ§€λ₯Ό λ§Œλ“€ 수 있고, λ‹€λ₯Έ μ›ΉνŽ˜μ΄μ§€μ˜ 링크λ₯Ό κ±Έ 수 μžˆλ‹€. 이런 이유둜 νŽ˜μ΄μ§€λž­ν¬ μ•Œκ³ λ¦¬μ¦˜μ€ λ‹€λ₯Έ νŽ˜μ΄μ§€μ— μ˜€λŠ” 링크λ₯Ό λͺ¨λ‘ 같은 λΉ„μ€‘μœΌλ‘œ μ„ΈλŠ” 것이 μ•„λ‹ˆλΌ ν•΄λ‹Ή νŽ˜μ΄μ§€μ— κ±Έλ¦° 링크 숫자λ₯Ό μ •κ·œν™”(normalize)ν•΄ μ‚¬μš©ν•œλ‹€.

$A$ νŽ˜μ΄μ§€μ˜ νŽ˜μ΄μ§€λž­ν¬ $\text{PR}(A)$의 곡식을 μ‚΄νŽ΄λ³΄μž. $T_1, T_2, …, T_n$은 $A$ νŽ˜μ΄μ§€λ₯Ό μΈμš©ν•˜λŠ” λ‹€λ₯Έ νŽ˜μ΄μ§€λ“€μ„ μ˜λ―Έν•˜λ©°, $C(T_i)$λŠ” $T_i$ νŽ˜μ΄μ§€μ— μ‘΄μž¬ν•˜λŠ” 링크의 총 κ°―μˆ˜μ΄λ‹€.

\[\text{PR}(A) = \sum^N_{i=1} \frac{\text{PR}(T_i)}{C(T_i)}\]

즉, μ–΄λ–€ νŽ˜μ΄μ§€μ˜ νŽ˜μ΄μ§€λž­ν¬λŠ” β€˜κ·Έ νŽ˜μ΄μ§€λ₯Ό μΈμš©ν•˜λŠ” λ‹€λ₯Έ νŽ˜μ΄μ§€μ˜ μ •κ·œν™”λœ νŽ˜μ΄μ§€λž­ν¬μ˜ 총합’이닀!

μ™œ μ •κ·œν™”λœ νŽ˜μ΄μ§€λž­ν¬λ₯Ό μ“°λŠ”κ°€?

νŽ˜μ΄μ§€λž­ν¬λŠ” 인용 νŽ˜μ΄μ§€ $T_i$의 νŽ˜μ΄μ§€λž­ν¬ $\text{PR}(T_i)$λ₯Ό κ·ΈλŒ€λ‘œ μ“°λŠ”κ²Œ μ•„λ‹ˆλΌ μ •κ·œν™”λœ $\text{PR}(T_i) / C(T_i)$λ₯Ό μ‚¬μš©ν•œλ‹€. κ·Έ 이유λ₯Ό μ‚΄νŽ΄λ³΄μž.

인용 νŽ˜μ΄μ§€μ˜ νŽ˜μ΄μ§€λž­ν¬λ₯Ό μ •κ·œν™”ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄,
링크 수천개λ₯Ό 달아 ν”ΌμΈμš© νŽ˜μ΄μ§€μ˜ νŽ˜μ΄μ§€λž­ν¬λ₯Ό 고의둜 높일 수 μžˆλ‹€.

해컀가 νŽ˜μ΄μ§€λž­ν¬ μ•Œκ³ λ¦¬μ¦˜μ„ κ΅λž€ν•˜κΈ° μœ„ν•œ 수천 개의 μ™ΈλΆ€ 링크가 μžˆλŠ” 더미 νŽ˜μ΄μ§€λ₯Ό λ§Œλ“€μ—ˆλ‹€κ³  μƒμƒν•΄λ³΄μž. κ·Έλ ‡λ‹€λ©΄ 더미 νŽ˜μ΄μ§€κ°€ μΈμš©ν•œ νŽ˜μ΄μ§€μ˜ νŽ˜μ΄μ§€λž­ν¬λŠ” κ½€ 높아지고 말 것이닀. 이런 더미 νŽ˜μ΄μ§€μ˜ 효과λ₯Ό μ™„ν™”ν•˜κΈ° μœ„ν•΄ 인용 νŽ˜μ΄μ§€μ— μ‘΄μž¬ν•˜λŠ” 링크 수 $C(T_i)$λ₯Ό μ‚¬μš©ν•΄ νŽ˜μ΄μ§€λž­ν¬ 값을 μ •κ·œν™”ν•œλ‹€.

인용 νŽ˜μ΄μ§€μ˜ νŽ˜μ΄μ§€λž­ν¬λ₯Ό μ–΄λ–»κ²Œ κ΅¬ν•˜λŠ”κ°€?

κ°„λ‹¨ν•˜λ‹€. νŽ˜μ΄μ§€λž­ν¬μ˜ 곡식을 인용 νŽ˜μ΄μ§€ $T_i$에 μ μš©ν•˜λ©΄ λœλ‹€. 그러렀면 $T_i$ νŽ˜μ΄μ§€λ₯Ό μΈμš©ν•˜λŠ” λ‹€λ₯Έ νŽ˜μ΄μ§€λ“€μ˜ νŽ˜μ΄μ§€λž­ν¬λ₯Ό κ΅¬ν•˜κ³  … μ΄λ ‡κ²Œ μ–΄λ–€ νŽ˜μ΄μ§€μ˜ PR을 κ΅¬ν•˜λ €λ©΄ 인용 νŽ˜μ΄μ§€μ˜ PR을 ꡬ해야 ν•œλ‹€. μž¬κ·€μ μœΌλ‘œ 말이닀!

def PageRank(A):
  pageRank = 0
  for page in A.inbounds:
    link_cnt = len(page.links)
    pageRank += (PageRank(page) / link_cnt)
  return pageRank

PageRank()λΌλŠ” ν•¨μˆ˜λ₯Ό PageRank() ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ 또 ν˜ΈμΆœν•˜λŠ” μž¬κ·€μ  ꡬ쑰λ₯Ό 가지고 μžˆλ‹€. κ·ΈλŸ¬λ‚˜ μž¬κ·€ 연산을 λκΉŒμ§€ ν•˜λŠ” λΉ„μš©μ΄ 아깝기 λ•Œλ¬Έμ— 보톡은 μ–΄λŠ κΉŠμ΄κΉŒμ§€ μž¬κ·€ 연산을 ν•  것인지 μ œν•œμ„ 두고 인용 νŽ˜μ΄μ§€μ˜ PR을 κ΅¬ν•œλ‹€.

Damping Factor

νŽ˜μ΄μ§€λž­ν¬ μ•Œκ³ λ¦¬μ¦˜μ€ damping factor $d$λ₯Ό $[0, 1]$의 값을 κ°–λŠ”λ‹€. damping factorλ₯Ό 포함해 식을 λ‹€μ‹œ 써보면 μ•„λž˜μ™€ κ°™λ‹€.

\[\text{PR}(A) = (1-d) + d \cdot \sum^N_{i=1} \frac{\text{PR}(T_i)}{C(T_i)}\]

damping factor $d$의 μ–‘ 극단인 $0$와 $1$을 μ‚΄νŽ΄λ³΄μž.

  • $d=0$이라면, λͺ¨λ“  νŽ˜μ΄μ§€μ˜ PR이 $1$이 λœλ‹€.
  • $d=1$이라면, μž¬κ·€μ μœΌλ‘œ λ™μž‘ν•˜λŠ” PR을 κ·Έλž˜λ„ μ‚¬μš©ν•œλ‹€.

그런데 μ™œ 이런 damping factor $d$λ₯Ό λ„μž…ν•œ κ²ƒμΌκΉŒ? μ›Ήμ„œν•‘μ„ ν•˜λŠ”λ° $p = 0.8$의 ν™•λ₯ λ‘œ λ‹€λ₯Έ νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•˜λŠ” μ‚¬λžŒμ΄ μžˆλ‹€κ³  μƒκ°ν•΄λ³΄μž. κ·Έ μ‚¬λžŒμ€ ν˜„μž¬μ˜ νŽ˜μ΄μ§€μ—μ„œ λ©ˆμΆ”κ±°λ‚˜ μ΄λ™ν•œλ‹€. λ§Œμ•½ κ·Έ ν™•λ₯ μ΄ $p = 1$이라면, νŽ˜μ΄μ§€μ— μ‘΄μž¬ν•˜λŠ” λͺ¨λ“  νŽ˜μ΄μ§€λ₯Ό 끝없이 클릭해 μ›Ήμ„œν•‘μ„ μ΄μ–΄κ°€λŠ” 것이고, ν™•λ₯ μ΄ $p = 0$이라면 처음 λ°©λ¬Έν•œ νŽ˜μ΄μ§€μ—μ„œ 무쑰건 λ©ˆμΆ”κ³  더 μ΄λ™ν•˜μ§€ μ•ŠλŠ”λ‹€.

damping factor $d$κ°€ 곧 μœ„μ—μ„œ λ¬˜μ‚¬ν•œ β€œλ‹€λ₯Έ νŽ˜μ΄μ§€λ‘œ 이동할 ν™•λ₯  $p$”이닀. 그리고 PageRank $\text{PR}(A)$λŠ” 이 ν™•λ₯ μ˜ 평균을 λ‚Έ 것이닀. μ§€κ·Ήνžˆ ν™•λ₯ λ‘ μ !

μ €μž μ„Έλ₯΄κ²Œμ΄μ˜ 말에 λ”°λ₯΄λ©΄ λͺ¨λ“  μ›ΉνŽ˜μ΄μ§€μ˜ νŽ˜μ΄μ§€λž­ν¬ 값을 λ”ν•œ 총합은 $1$이 λœλ‹€κ³  ν•œλ‹€.

\[\sum_A \text{PR}(A) = 1\]

그런데 μœ„μ˜ μˆ˜μ‹μ—μ„œ $d=0$인 경우, λͺ¨λ“  νŽ˜μ΄μ§€μ˜ PR이 $1$이 되기 λ•Œλ¬Έμ—, 총합을 κ΅¬ν•˜λ©΄ $\sum \text{PR}(A) = N$이 λœλ‹€. κ·Έλž˜μ„œ μˆ˜μ‹μ„ μ•½κ°„ μˆ˜μ •ν•œ μ΅œμ’…μ μΈ ν˜•νƒœλŠ” μ•„λž˜μ™€ κ°™λ‹€.

\[\text{PR}(A) = \frac{(1-d)}{N} + d \cdot \sum^N_{i=1} \frac{\text{PR}(T_i)}{C(T_i)}\]

맺음말

νŽ˜μ΄μ§€λž­ν¬ μ•Œκ³ λ¦¬μ¦˜μ€ ꡬ글을 졜고의 κ²€μƒ‰μ—”μ§„μ˜ μžλ¦¬μ— μ˜¬λ €λ†“μ€ μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. 1995λ…„ λŒ€ν•™μ›μƒμ΄λ˜ 그듀이 인터넷과 세상을 크게 λ°”κΎΈμ—ˆλ‹€. λ‚˜λŠ” μ–΄λ–€ μ„œλΉ„μŠ€, ν”„λ‘œλ•μœΌλ‘œ 세상을 λ°”κΏ€ 수 μžˆμ„κΉŒ? κ·Έλ“€μ˜ μ•Œκ³ λ¦¬μ¦˜μ€ λ³Ό λ•Œλ§ˆλ‹€ μƒˆλ‘œμš΄ μžκ·Ήμ„ μ£ΌλŠ” 것 κ°™λ‹€ πŸ˜€

Reference

Categories:

Updated: