콘텐츠 대표 이미지 - 고유값과 고유벡터 쉽게 이해하기: 구글 검색 순위를 만든 행렬의 비밀

고유값과 고유벡터 쉽게 이해하기: 구글 검색 순위를 만든 행렬의 비밀

선형대수PageRank행렬의 고유구조어려운 수학

"행렬이 벡터를 흔들어도 방향이 안 바뀌는 애들이 있다"는 한 문장에서 시작된 이야기

0. 먼저, 솔직한 고백부터

친구야, 고유값(eigenvalue)이랑 고유벡터(eigenvector)를 처음 배울 때 다들 똑같은 생각을 해.

"그래서 이걸 왜 구해요?"

선형대수 중간고사 범위라서 외우고, det(A − λI) = 0이라는 주문을 외우고, 3×3 행렬 하나 받아서 특성방정식 풀다가 인생에 회의를 느끼지.
근데 사실 이건 수학 역사상 가장 실용적인 개념 톱 3에 들어가. 과장 아니야.

진동하는 다리가 무너지는 이유, 양자역학에서 전자의 에너지가 딱딱 끊어진 값만 갖는 이유, 얼굴 인식 알고리즘이 사람을 구별하는 원리, 넷플릭스가 취향을 맞추는 방식, 그리고 1998년 스탠퍼드 대학원생 두 명이 웹 검색을 완전히 뒤집어버린 사건까지.
전부 고유값과 고유벡터 이야기야.

이 글의 목표

1) 고유값·고유벡터를 그림으로 느끼게 만들기
2) 계산이 아니라 의미를 손에 쥐게 하기
3) 구글 PageRank가 왜 "고유벡터 하나 구하는 문제"인지 끝까지 밀고 가기

수식은 나와. 근데 무섭지 않게 나와. 약속할게.

1. 행렬은 '도형을 반죽하는 기계'다

고유벡터를 이해하려면 먼저 행렬을 숫자 표가 아니라 동작으로 봐야 해.

2×2 행렬 A가 있고, 평면의 벡터 v가 있어. Av를 계산하면 새로운 벡터가 나오지.
이때 A가 하는 일은 뭐야? 벡터를 잡아당기고, 찌그러뜨리고, 돌리고, 밀어버리는 것이야.

대표적인 '반죽' 4종 세트

① 늘리기(스케일링) — [[2,0],[0,3]] : x축으로 2배, y축으로 3배. 원이 타원이 돼.

② 돌리기(회전) — 30도 회전 행렬 : 길이는 그대로, 방향만 빙글.

③ 밀기(전단, shear) — [[1,1],[0,1]] : 정사각형이 평행사변형으로 기울어져.

④ 접기(투영·반사) — 특정 직선에 그림자를 떨어뜨리거나 거울에 비추기.

여기서 질문. "벡터를 반죽하면 보통 방향이 바뀌잖아. 그런데 절대 방향이 안 바뀌는 특별한 벡터가 있을까?"

있어. 그게 고유벡터야.

행렬 A = [[3, 1], [0, 2]] 가 벡터를 반죽하는 방식 일반 벡터 → 방향이 바뀐다 v = (1,1) Av = (4,2) 기울기 1 → 기울기 0.5 (방향 변함) 고유벡터 → 방향 그대로, 길이만 3배 x = (1,0) Ax = 3x = (3,0) λ = 3 같은 직선 위에 그대로 머문다

오른쪽 그림이 핵심이야. 벡터 (1,0)에 A를 곱하면 (3,0)이 나와. 방향은 1도도 안 틀어졌고 길이만 3배가 됐어.
이럴 때 우리는 이렇게 말해.

A x = λ x

x는 A의 고유벡터, λ는 그에 대응하는 고유값

'고유(固有)'라는 번역은 독일어 eigen에서 왔어. '자기 자신의', '본래의'라는 뜻이야.
그래서 고유벡터는 "이 행렬이 본래 가지고 있는, 자기만의 축"이라고 읽으면 딱 맞아.

2. 왜 하필 '방향이 안 바뀌는 벡터'가 중요한가

여기서 많은 사람이 놓치는 포인트가 있어. 고유벡터가 중요한 이유는 "신기해서"가 아니야.
계산이 미친 듯이 쉬워지기 때문이야.

2-1. 행렬 곱셈 100번을 1초에

어떤 시스템이 매 시각 행렬 A를 한 번 곱하는 식으로 변한다고 해보자. 100시간 뒤 상태는 A100v.
행렬을 100번 곱하라고? 2×2면 어찌어찌 하겠지만 1000×1000이면 죽음이야.

그런데 만약 v가 고유벡터라면?

A v      = λ v
A²v      = A(λv) = λ(Av) = λ²v
A³v      = λ³v
...
A¹⁰⁰ v   = λ¹⁰⁰ v        ← 행렬 곱셈이 '숫자 거듭제곱'으로 붕괴!

행렬 100번 곱하기가 스칼라 λ의 100제곱으로 줄어들었어. 이게 고유벡터의 첫 번째 초능력이야.

2-2. 일반 벡터도 고유벡터로 쪼개면 된다

"근데 내 벡터는 고유벡터가 아니야"라고? 괜찮아.
고유벡터들이 기저(basis)를 이루면, 어떤 벡터든 고유벡터들의 합으로 분해할 수 있어.

v = c₁x₁ + c₂x₂ + ... + cₙxₙ

A^k v = c₁λ₁^k x₁ + c₂λ₂^k x₂ + ... + cₙλₙ^k xₙ

이걸 행렬로 정리하면 그 유명한 대각화(diagonalization)가 나와.

A = P D P⁻¹        (P의 열 = 고유벡터, D = 고유값 대각행렬)
A^k = P D^k P⁻¹    (D^k는 대각원소만 k제곱하면 끝)

비유로 말하면: 복잡하게 기울어진 방에서 가구를 옮기려면 머리가 아파. 그런데 방의 벽에 딱 맞춰 좌표축을 다시 그리면(=고유벡터를 축으로 삼으면), 모든 움직임이 "x로 얼마, y로 얼마" 단순 스케일링이 돼.
고유벡터는 그 행렬에게 가장 편한 좌표계야.

2-3. 그리고 가장 큰 고유값이 세상을 지배한다

위 식을 다시 봐. k가 커지면 어떻게 될까?
λ₁ = 2, λ₂ = 0.5라면 k=20일 때 λ₁20 ≈ 100만, λ₂20 ≈ 0.00000095야.

즉 시간이 오래 흐르면 가장 큰 고유값에 해당하는 고유벡터 방향만 살아남아.
나머지는 먼지처럼 사라져. 이 현상을 지배 고유벡터(dominant eigenvector)라고 불러.

기억해 둬. 이 한 문장이 나중에 구글을 만들어.

3. 손으로 한 번 구해보자 (진짜 쉽게)

정의로 돌아가자. Ax = λx에서 우변을 넘기면

(A − λI) x = 0

x는 0이 아닌 벡터여야 의미가 있어(0벡터는 아무 행렬이나 0으로 보내니까 반칙).
그런데 어떤 행렬이 0이 아닌 벡터를 0으로 보내려면, 그 행렬은 납작하게 찌그러뜨리는 행렬, 즉 역행렬이 없어야 해.
역행렬이 없다 = 행렬식이 0.

det(A − λI) = 0  ← 특성방정식(characteristic equation)

예제: A = [[3,1],[0,2]]

A − λI = [[3−λ, 1], [0, 2−λ]]

det = (3−λ)(2−λ) − (1)(0) = (3−λ)(2−λ) = 0
→ λ₁ = 3, λ₂ = 2

λ=3 : [[0, 1],[0,-1]] x = 0  →  x₂ = 0  →  x = (1, 0)
λ=2 : [[1, 1],[0, 0]] x = 0  →  x₁ = -x₂ →  x = (1, -1)

끝이야. 고유값 3에는 (1,0), 고유값 2에는 (1,−1)이 붙어.

꿀팁 두 개 — 검산할 때 인생이 편해져.

• 대각합(trace) = 고유값의 합 → 3+2 = 5 = 3+2 ✔
• 행렬식 = 고유값의 곱 → 3×2 = 6 = 6 ✔

특이한 케이스들도 알아두자

행렬 유형고유값의 성격기하적 의미
회전 행렬복소수 (실수 고유벡터 없음)모든 방향이 돌아가니 당연
대칭 행렬 (Aᵀ=A)항상 실수, 고유벡터 직교주축이 깔끔하게 수직
사영 행렬0 또는 1남기거나 없애거나
[[1,1],[0,1]] 전단λ=1 중복, 고유벡터 1개뿐대각화 불가 (조르당 표준형 필요)
확률 행렬(열 합=1)최대 고유값이 정확히 1확률 총량 보존

마지막 줄, 밑줄 쫙. "확률 행렬의 최대 고유값은 1" — 이게 PageRank의 심장이야.

4. 1998년, 웹 검색은 쓰레기였다

이제 본편이야. 시간을 90년대 후반으로 돌려보자.

당시 검색엔진(알타비스타, 라이코스, 익사이트 등)의 순위 원리는 단순했어.
"검색어가 페이지에 몇 번 나오냐". 이게 거의 전부였어.

결과가 어땠을지 짐작되지? 페이지 하단에 흰 글씨로 "여행 여행 여행 여행..."을 1000번 박아놓은 사이트가 1위를 했어.
이걸 키워드 스터핑(keyword stuffing)이라고 불렀고, 웹은 스팸의 바다였어.

문제의 본질: 페이지가 스스로 주장하는 정보는 조작 가능하다.
그럼 조작하기 어려운 신호는 뭘까? → 다른 사람들이 그 페이지를 어떻게 대하는가.

래리 페이지와 세르게이 브린이 여기서 학술 논문의 세계를 떠올렸어.
논문의 권위는 "내가 대단하다"고 써서 생기는 게 아니라 인용 횟수로 생기지.
웹에서 인용에 해당하는 건? 하이퍼링크.

그래서 아이디어는 이렇게 시작해.

PageRank 발상 1단계 — 링크를 투표로

A가 B로 링크를 걸었다면, A는 B에게 "이 페이지 괜찮아"라고 투표한 것이다.

근데 이대로면 또 망해. 스팸 사이트 1만 개 만들어서 서로 링크 걸면 되잖아.
그래서 2단계가 천재적이야.

PageRank 발상 2단계 — 투표에 가중치를

중요한 페이지의 투표는 더 무겁다.
BBC가 걸어준 링크 하나 >> 이름 없는 블로그 링크 1000개

그리고 3단계에서 순환 논리가 터져 나와.

"어떤 페이지가 중요한가?" → "중요한 페이지가 링크를 걸어준 페이지"
"그러면 그 중요한 페이지는 왜 중요한가?" → "중요한 페이지가 링크를 걸어줬기 때문"

…… 뱀이 자기 꼬리를 물었어. 그런데 바로 이 순환이 고유벡터 방정식이다.

5. 순환 논리를 수식으로: r = M r

페이지 i의 중요도를 r(i)라고 쓸게. 규칙은 두 개야.

규칙 A. 페이지 i는 자기 점수 r(i)를 자기가 링크한 페이지들에게 똑같이 나눠서 준다.
i가 링크를 L(i)개 갖고 있으면, 각 링크로 r(i)/L(i) 씩 흘려보낸다.

규칙 B. 페이지 j의 점수는 자기에게 들어온 몫을 전부 더한 값이다.

r(j) = Σ  r(i) / L(i)      ( i → j 링크가 있는 모든 i에 대해 )

이걸 행렬로 묶으면 이렇게 돼.

r = M r

M의 원소 M[j][i] = (i가 j로 링크했으면) 1/L(i), 아니면 0

여기서 잠깐. 이 식을 노려봐.
r = M r 은 곧 M r = 1 · r이야.

즉 r은 행렬 M의 고유값 1에 대응하는 고유벡터라는 뜻이야.
"구글 검색 순위 = 웹 전체 링크 행렬의 지배 고유벡터" — 농담이 아니라 문자 그대로 그래.

4개 페이지 미니 웹: 점수가 링크를 따라 흐른다 A 0.38 B 0.28 C 0.22 D 0.12 각 노드는 자기 점수를 나가는 링크 수로 나눠 공평하게 흘려보낸다

실제 숫자로 굴려보기

위 그림의 구조를 정리하면:

A → B, C      (L(A)=2)
B → C, D      (L(B)=2)
C → B         (L(C)=1)
D → C         (L(D)=1)

전이행렬 M (열 = 출발, 행 = 도착):

        A     B     C     D
   A [  0     0     0     0  ]
   B [ 1/2    0     1     0  ]
   C [ 1/2   1/2    0     1  ]
   D [  0    1/2    0     0  ]

초기값을 전부 0.25로 주고 M을 반복해서 곱해보면?

반복ABCD
0회0.2500.2500.2500.250
1회0.0000.3750.3750.125
2회0.0000.3750.3130.188
5회0.0000.3830.3480.176
20회 (수렴)0.0000.4000.4000.200

재밌는 게 보이지? A는 0이 됐어. 아무도 A에게 링크를 안 걸었으니까.
그리고 값들이 더 이상 변하지 않는 지점에 도달했어. 그 상태가 바로 r = Mr을 만족하는 고유벡터야.

이렇게 곱하기를 반복해서 지배 고유벡터를 찾는 방법을 거듭제곱법(Power Iteration)이라고 불러.
아까 2-3절에서 말했지? "시간이 흐르면 최대 고유값 방향만 살아남는다". 그 원리를 그대로 써먹는 거야.

6. 랜덤 서퍼: 확률로 다시 읽는 PageRank

PageRank에는 아주 감각적인 두 번째 해석이 있어. 이게 진짜 예뻐.

랜덤 서퍼 모델(Random Surfer Model)
웹 서핑을 아무 생각 없이 하는 사람을 상상해. 페이지에 도착하면 거기 있는 링크 중 하나를 무작위로 눌러. 그리고 또 누르고, 또 누르고… 영원히.
아주 긴 시간이 흐른 뒤, 이 사람이 특정 페이지에 있을 확률이 바로 그 페이지의 PageRank다.

즉 PageRank는 마르코프 연쇄(Markov chain)의 정상분포(stationary distribution)야.
"정상분포"라는 건 한 번 더 이동해도 분포가 변하지 않는 상태, 즉 π = Mπ. 어? 똑같은 식이네.

같은 수식을 세 가지 언어로 말할 수 있다는 게 이 이론의 아름다움이야.

관점표현해석
선형대수Mr = 1·r고유값 1의 고유벡터
확률론π = Mπ마르코프 연쇄의 정상분포
그래프이론흐름 균형들어온 점수 = 나간 점수

7. 두 개의 재앙, 그리고 damping factor 0.85

그런데 순수한 r = Mr은 현실 웹에서 두 가지 이유로 폭발해.

재앙 1: 막다른 길 (Dangling node)

나가는 링크가 하나도 없는 페이지. PDF 파일, 이미지 페이지 같은 거.
랜덤 서퍼가 여기 도착하면? 갇혀. 그리고 확률 총량이 이 구멍으로 새어나가서 결국 모든 페이지 점수가 0으로 수렴해.

재앙 2: 스파이더 트랩 (Spider trap)

몇 개 페이지가 서로서로만 링크를 걸고 외부로는 절대 안 나가는 구조.
랜덤 서퍼가 들어가면 못 나와. 그러면 그 그룹이 웹 전체의 점수를 싹 다 빨아먹어. 실제로 스팸 업자들이 이걸 악용했어. '링크 팜(link farm)'이라는 이름으로.

두 가지 구조적 재앙과 '순간이동' 처방 ① 막다른 길 P1 PDF 나가는 링크 0개 → 확률 누수 ② 스파이더 트랩 S1 S2 S3 닫힌 고리 → 점수 독식 ③ 처방: 15% 순간이동 현재 랜덤 랜덤 랜덤 주소창에 새 URL을 치는 행동

처방: 지루해진 서퍼

페이지와 브린의 해법은 현실적이면서 수학적으로 완벽했어.

"랜덤 서퍼는 가끔 지루해진다. 링크를 누르는 대신, 주소창에 아무 URL이나 새로 입력해서 웹 어디로든 점프한다."

이 '지루함' 확률을 15%로 잡고, 85%는 계속 링크를 따라간다고 하면:

r = d · M r + (1 − d) · (1/N) · 1

d = 0.85 (damping factor, 감쇠 계수), N = 전체 페이지 수

여기서 벌어진 일이 수학적으로 어마어마해.

1. 이제 모든 페이지에서 모든 페이지로 갈 확률이 0보다 크다. 막다른 길도, 트랩도 없어졌어.
2. 행렬이 원시적(primitive)이고 기약적(irreducible)인 양수 확률행렬이 됐어.
3. 그러면 페론–프로베니우스 정리(Perron–Frobenius theorem)가 발동해.

페론–프로베니우스 정리 (핵심만)

원소가 모두 양수인 확률행렬은

• 최대 고유값이 정확히 1이고
• 그에 대응하는 고유벡터가 유일하며
• 그 고유벡터의 모든 성분이 양수다.

→ 즉 "정답이 반드시 존재하고, 딱 하나이고, 음수 순위 같은 헛소리는 안 나온다"가 수학적으로 보장돼.

이게 PageRank 논문의 진짜 무기야. 아이디어가 좋았던 게 아니라, 아이디어가 잘 작동한다는 걸 100년 전 수학이 증명해줬다는 것.

왜 하필 0.85인가?

이건 이론값이 아니라 공학적 절충이야. 두 번째로 큰 고유값의 크기가 대략 d에 비례하기 때문에, 거듭제곱법의 수렴 속도는 d가 작을수록 빨라.

d 값수렴 속도순위의 질
0.5매우 빠름링크 구조 정보가 희석됨
0.85보통 (50~100회면 충분)실용적 최적점
0.99매우 느림트랩에 민감, 불안정

오차를 1/1000로 줄이려면 0.85k < 0.001 → k ≈ 43회.
실제로 초기 구글은 웹 전체(수억 페이지)에 대해 이 반복을 수십 회만 돌려서 순위를 뽑았어.

8. 수억 × 수억 행렬을 어떻게 계산했을까

여기서 현실적인 질문. 웹에 페이지가 10억 개면 M은 10억 × 10억 행렬이야.
원소 개수가 1018개. 이걸 저장하려면 지구상의 모든 하드디스크를 합쳐도 부족해.

구글이 이걸 해낸 비결은 두 가지야.

① 희소성(Sparsity)

평균적인 웹페이지에 링크가 몇 개 있어? 10개? 50개? 많아도 수백 개야.
즉 M의 원소 중 99.99999%가 0이야. 0은 저장할 필요가 없지.

링크만 리스트로 저장하면 10억 페이지 × 링크 20개 = 200억 개 항목. 이건 관리 가능한 수준이야.

② 거듭제곱법은 '행렬-벡터 곱'만 쓴다

대각화하려면 특성방정식을 풀어야 하는데, 10억 차 다항식은 인류가 풀 수 없어.
그런데 거듭제곱법은 오직 M × (벡터) 연산만 반복해. 희소행렬-벡터 곱은 링크 수에 비례하는 시간이면 끝나.

# PageRank 의사코드 (실제로 이 정도로 단순하다)

r = [1/N] * N                      # 모든 페이지에 균등 초기값
for step in range(50):
    r_new = [(1 - d) / N] * N      # 순간이동 기본 배당
    for page in all_pages:
        if outlinks(page) == 0:    # 막다른 길 처리
            leak = d * r[page] / N
            r_new = [x + leak for x in r_new]
        else:
            share = d * r[page] / len(outlinks(page))
            for target in outlinks(page):
                r_new[target] += share
    if L1_distance(r, r_new) < 1e-8:
        break
    r = r_new

놀랍지 않아? 세계 최대 기업의 출발점이 고등학교 수준 이중 for문이었어.
물론 이걸 수억 규모로, 분산 클러스터에서, 매일 돌리는 엔지니어링이 진짜 어려운 부분이었지만, 수학 코어는 정말 이게 다야.

참고로 이 분산 계산 문제를 풀려고 구글이 만든 도구가 MapReduce였고, 그걸 오픈소스로 베낀 게 Hadoop이고, 그게 '빅데이터' 시대를 열었어.
고유벡터 하나 구하려다가 산업 하나가 생긴 거야.

9. 오해 정리: 요즘 구글은 PageRank로 돌아가지 않는다

이 부분은 팩트 체크가 중요해. 흔한 오해들을 정리해볼게.

오해사실
구글 순위 = PageRankPageRank는 수백 개 신호 중 하나. 지금은 쿼리 의도, 콘텐츠 품질, BERT/MUM 계열 언어모델, 사용자 경험 지표 등이 함께 작동
툴바 PageRank 점수를 볼 수 있다0~10 공개 점수는 2016년에 완전 폐기. 지금 "PR 점수" 파는 업체는 신뢰 불가
PageRank는 검색어를 본다아니야. 순수하게 링크 구조만 본다. 쿼리와 무관한 '정적 점수'야
PageRank는 폐기됐다공개가 중단된 것. 구글은 내부적으로 링크 기반 신호를 계속 쓴다고 여러 차례 확인
페이지 이름은 '웹 페이지'에서공동창업자 래리 페이지(Larry Page)의 이름에서 온 중의적 작명

또 하나 짚자면, PageRank 특허는 실제로 스탠퍼드 대학 소유였어. 구글은 스탠퍼드에 주식으로 라이선스 비용을 지불했고, 스탠퍼드는 나중에 그 주식을 약 3억 달러 이상에 매각했지.
대학 기술이전 역사상 최고의 딜 중 하나로 남았어.

그리고 잊혀진 라이벌도 있어. 같은 시기 IBM의 존 클라인버그가 HITS 알고리즘을 발표했어. 페이지를 '허브(좋은 링크 모음)'와 '오소리티(권위 있는 원본)'로 나눠서 두 개의 고유벡터를 구하는 방식이야.
수학적으로 더 우아하다는 평도 있었지만, 쿼리마다 계산을 다시 해야 해서 실시간 검색에는 무거웠어. PageRank가 이긴 건 미리 계산해둘 수 있다는 점이었지.

10. 고유벡터는 웹 밖에서도 일한다

"구글 얘기는 알겠는데, 다른 데도 쓰나?" 쓰다 못해 넘쳐.

① 다리가 무너지는 이유 (고유진동수)

구조물은 각자 고유진동수를 갖고 있어. 이게 진동 방정식의 고유값이야.
외부 힘의 주기가 고유진동수와 맞으면 공명(resonance)이 일어나 진폭이 폭주해.
1940년 타코마 해협 다리 붕괴, 2000년 런던 밀레니엄 브리지의 출렁임 사태 모두 고유값 분석의 교과서 사례야. (타코마의 경우 단순 공명보다 에어로일래스틱 플러터가 주 원인이라는 게 현대 해석이지만, 고유모드 분석이 핵심 도구인 건 같아.)

② 양자역학: 에너지가 뚝뚝 끊어지는 까닭

슈뢰딩거 방정식은 Ĥψ = Eψ 형태야. 보이지? 완벽하게 Ax = λx 꼴이야.
Ĥ는 해밀토니안 연산자, ψ는 고유함수, E가 고유값(에너지)이지.
"전자의 에너지는 아무 값이나 못 갖고 특정 값만 갖는다"는 양자화는, 수학적으로는 연산자의 고유값이 이산적이다라는 말이야. 원자의 안정성, 스펙트럼 선, 반도체 밴드 구조가 전부 여기서 나와.

③ PCA: 데이터의 주축 찾기

주성분분석(PCA)은 데이터의 공분산행렬의 고유벡터를 구하는 일이야.
가장 큰 고유값의 고유벡터 = 데이터가 가장 많이 퍼진 방향 = 가장 정보량이 많은 축.
100차원 데이터를 2차원으로 줄여 그림 그릴 수 있는 이유가 이거야.

④ 얼굴 인식의 조상, 아이겐페이스

1991년 MIT의 터크와 펜트랜드가 발표한 Eigenfaces. 수천 장 얼굴 사진을 벡터로 보고 PCA를 돌려서 '평균 얼굴 + 특징 얼굴들'의 조합으로 표현했어.
지금은 딥러닝이 대체했지만, 컴퓨터 비전의 출발점에 고유벡터가 있었다는 건 변하지 않아.

⑤ 추천 시스템과 그래프 분석

넷플릭스 추천에 쓰인 행렬 분해(SVD 계열)는 고유값 분해의 사촌이야.
스펙트럼 클러스터링은 그래프 라플라시안의 고유벡터로 커뮤니티를 찾고, 소셜 네트워크의 '영향력 있는 사람'은 고유벡터 중심성(eigenvector centrality)으로 측정해. PageRank가 바로 이것의 변형이지.

하나의 방정식 Ax = λx, 여섯 개의 세계 Ax = λx 고유구조 웹 검색 PageRank 양자역학 Ĥψ = Eψ 구조 진동 고유진동수 데이터 축약 PCA / SVD 얼굴 인식 Eigenfaces 네트워크 분석 중심성 · 클러스터링 전공이 달라도 사람들은 결국 같은 방정식을 푼다

재능넷 '지식인의 숲'에 올라오는 데이터 분석·머신러닝 관련 글들을 읽다 보면 이 개념이 얼마나 자주 재등장하는지 알 수 있어. 결국 선형대수 한 장이 여러 분야의 공통 언어인 셈이야.

11. 직접 손으로 PageRank 굴려보기 (완주 예제)

말로만 하면 안 남아. 3개 페이지로 damping까지 넣어서 끝까지 해보자.

문제 설정

페이지 1 → 2, 3
페이지 2 → 3
페이지 3 → 1

N = 3, d = 0.85

전이행렬 M:
        1     2     3
   1 [  0     0     1  ]
   2 [ 1/2    0     0  ]
   3 [ 1/2    1     0  ]

반복식: r_new = 0.85 · M r + 0.05    (0.15/3 = 0.05)

초기: r = (0.3333, 0.3333, 0.3333)

1회
 r1 = 0.85(0.3333) + 0.05 = 0.3333
 r2 = 0.85(0.1667) + 0.05 = 0.1917
 r3 = 0.85(0.1667+0.3333) + 0.05 = 0.4750
 → (0.3333, 0.1917, 0.4750)

2회
 r1 = 0.85(0.4750) + 0.05 = 0.4538
 r2 = 0.85(0.1667) + 0.05 = 0.1917
 r3 = 0.85(0.1667+0.1917) + 0.05 = 0.3546
 → (0.4538, 0.1917, 0.3546)

3회
 r1 = 0.85(0.3546) + 0.05 = 0.3514
 r2 = 0.85(0.2269) + 0.05 = 0.2429
 r3 = 0.85(0.2269+0.1917) + 0.05 = 0.4058
 → (0.3514, 0.2429, 0.4058)

... 계속 굴리면

수렴값 ≈ (0.3878, 0.2148, 0.3974)

결과 해석이 재밌어.

페이지 3이 1위. 왜? 1과 2 둘 다에게 링크를 받았으니까.
페이지 1이 2위. 링크를 하나(3에서)만 받았는데도 높아. 왜? 그 하나가 1위 페이지에서 왔고, 게다가 3은 링크를 하나만 갖고 있어서 점수를 안 쪼갰기 때문이야.
페이지 2가 3위. 링크 하나를 받았지만, 그게 자기 점수를 둘로 쪼개 준 페이지 1에서 왔어.

여기서 SEO 세계의 유명한 교훈이 나와.
"링크는 개수가 아니라, 누가 얼마나 집중해서 주는지가 중요하다."
링크 1000개 뿌리는 페이지의 링크 하나는 거의 아무 가치가 없어. 수학적으로 1/1000이니까.

또 하나 눈여겨봐. 수렴값의 합이 1에 가깝게 유지되고 있지? (0.3878+0.2148+0.3974 = 1.0000)
확률의 총량은 보존돼. 이게 고유값이 정확히 1인 이유이기도 해.

12. 조금 더 깊이: 두 번째 고유값의 역할

여기까지 왔으면 한 걸음 더 나가볼 자격이 있어. 이 부분이 '어려운 수학'다운 맛이야.

거듭제곱법의 수렴 속도는 |λ₂| / |λ₁| 비율이 결정해. 이걸 스펙트럼 갭(spectral gap)이라고 불러.

PageRank 행렬에서는 λ₁ = 1이고, 놀랍게도 |λ₂| ≤ d = 0.85 라는 게 증명돼 있어(하비랜드-윌리엄스, 랭빌-메이어 등의 결과).
그래서 오차가 매 반복마다 최소 0.85배로 줄어. 로그를 씌우면:

필요 반복 횟수 k ≈ log(ε) / log(d)

ε = 10⁻⁶,  d = 0.85  →  k ≈ 85회
ε = 10⁻⁶,  d = 0.5   →  k ≈ 20회

그리고 두 번째 고유벡터에도 의미가 있어. 그래프 이론에서 두 번째 고유값과 고유벡터는 그래프를 어떻게 잘 두 덩어리로 자를 수 있는가를 알려줘. 이게 피들러 벡터(Fiedler vector)이고, 스펙트럼 클러스터링의 핵심이야.

즉 첫 번째 고유벡터는 "누가 중요한가", 두 번째 고유벡터는 "누가 누구와 한 패인가"를 말해줘.
같은 행렬에서 전혀 다른 질문에 답이 나오는 거야. 이래서 사람들이 스펙트럼(spectrum)이라는 단어를 쓰는 거지. 행렬의 고유값 집합은 그 행렬의 지문이자 빛의 스펙트럼 같은 거야.

용어 정리 카드

고유값 λ 고유벡터 방향으로의 늘어남 배율
고유벡터 x 행렬이 적용돼도 방향이 유지되는 벡터
특성방정식 det(A − λI) = 0
대각화 A = PDP⁻¹, 계산을 스칼라로 붕괴
스펙트럼 고유값 전체 집합
스펙트럼 반경 고유값 절댓값의 최댓값
거듭제곱법 반복 곱으로 지배 고유벡터 찾기
정상분포 π = Mπ, 변하지 않는 확률 분포
페론–프로베니우스 양수 행렬의 유일 양수 고유벡터 보장

13. 자주 나오는 질문들

Q. 고유값이 복소수면 뭘 의미해?

회전이 섞여 있다는 뜻이야. 실수부는 확대/축소, 허수부는 회전 성분에 대응해.
제어공학에서는 시스템의 고유값이 복소평면 왼쪽(실수부 < 0)에 있으면 안정, 오른쪽이면 발산이라고 판정해. 진동하면서 수렴하느냐, 진동하면서 폭발하느냐가 여기서 갈려.

Q. 고유값이 0이면?

그 방향은 행렬이 완전히 납작하게 눌러버린다는 뜻이야. 정보가 사라져. 그래서 고유값 0이 하나라도 있으면 역행렬이 없고, 행렬식도 0이야.

Q. 고유벡터는 왜 유일하지 않아?

Ax = λx라면 A(2x) = λ(2x)도 성립하지. 그래서 고유벡터는 항상 방향으로만 결정돼. 보통 길이 1로 정규화해서 하나 골라 쓰는 거야.
PageRank에서는 성분의 합이 1이 되게 정규화해. 확률로 읽고 싶으니까.

Q. 모든 행렬이 대각화 가능해?

아니야. [[1,1],[0,1]] 같은 전단 행렬은 λ=1이 두 번 나오는데 독립적인 고유벡터는 하나뿐이야. 이런 걸 '결함 있는(defective) 행렬'이라고 하고, 조르당 표준형으로 처리해.
다만 실대칭 행렬은 항상 대각화 가능하고 고유벡터가 직교해(스펙트럼 정리). 그래서 통계·물리에서 대칭 행렬을 사랑하는 거야.

Q. PageRank를 지금 배워도 쓸모 있어?

있어. 형태만 바꿔서 계속 살아 있어.
논문 인용 네트워크 분석, 생물학의 단백질 상호작용 네트워크(ProteinRank), 도로망 교통량 예측, 스포츠 팀 랭킹, 암호화폐 네트워크 분석, 그래프 신경망(GNN)의 확산 항까지. 이름이 다를 뿐 같은 고유벡터 문제야.

14. 정리: 한 장으로 압축

1. 행렬은 벡터를 반죽하는 기계다.

2. 반죽해도 방향이 안 바뀌는 특별한 벡터가 고유벡터, 그 배율이 고유값이다. → Ax = λx

3. 고유벡터를 쓰면 행렬 거듭제곱이 숫자 거듭제곱으로 붕괴한다. → Akx = λkx

4. 오래 반복하면 가장 큰 고유값의 방향만 남는다. (거듭제곱법)

5. "중요한 페이지가 링크한 페이지가 중요하다"는 순환 논리는 r = Mr, 즉 고유값 1의 고유벡터 문제다.

6. 막다른 길과 스파이더 트랩을 막으려면 15% 순간이동(d=0.85)을 넣는다.

7. 그러면 페론–프로베니우스 정리가 유일한 양수 해의 존재를 보장한다.

8. 희소행렬 + 거듭제곱법이면 수억 페이지도 수십 회 반복으로 계산 가능하다.

9. 같은 방정식이 양자역학, 구조공학, PCA, 추천 시스템, 네트워크 분석에서 반복 등장한다.

마지막으로

고유값과 고유벡터가 어렵게 느껴지는 건, 우리가 그걸 "det(A − λI)=0 풀기"라는 계산 절차로 먼저 배웠기 때문이야.
순서가 거꾸로였어. 원래는 이렇게 배워야 했어.

"복잡한 변화를 아무리 오래 반복해도, 결국 남는 방향이 하나 있다.
그 방향을 찾는 게 고유벡터다."

웹이라는 수억 노드의 난장판에서도, 링크를 따라 점수를 계속 흘려보내면 결국 딱 하나의 안정된 분포에 도달해.
1998년 대학원생 두 명이 본 건 그거였어. 새로운 수학을 발명한 게 아니라, 100년 된 수학이 웹에도 적용된다는 걸 알아본 것.

그게 진짜 무서운 능력이야. 그리고 이런 식의 연결을 해내려면, 결국 개념의 의미를 손에 쥐고 있어야 해. 공식만 외우면 절대 안 보이는 것들이 있어.

재능넷 지식인의 숲에서 다음에는 SVD, 조르당 표준형, 스펙트럼 클러스터링 같은 사촌들도 같이 파보자.
지금은 이 한 줄만 챙겨가도 충분해.

Ax = λx

다섯 글자 안에 세상의 절반이 들어 있다.

댓글 작성

이 글에 대한 여러분의 생각을 들려주세요

댓글 0