개발··14분 읽기

HN 프론트페이지의 수학: 왜 1등이 모든 걸 먹는가

Hacker News 30만 개 글을 전수조사했다. 프론트페이지 1등은 30등보다 50배 많은 관심을 받는다. 왜? 답은 '점수'가 아니라 '위치'에 있었다.

30만 개를 세어봤다

Hacker News에 하루에 글이 몇 개나 올라오는지 아나? 약 810개. 2024년 한 해 동안 총 295,931개의 글이 올라왔다. 나는 이걸 전부 긁어서 분석해봤다.

궁금했던 건 단순한 질문이었다. 프론트페이지에서 1등인 글은 실제로 얼마나 더 많은 관심을 받을까?

결과는 충격적이었다.

HN 프론트페이지: 순위별 평균 투표 수 (2024)
1등
1,847
2등
1,153
3등
831
5등
502
10등
223
15등
124
20등
75
25등
49
30등
35

1등은 30등의 약 53배. 10등만 돼도 1등의 12%밖에 못 받는다.

1등과 30등의 차이가 53배다. 10등만 돼도 1등의 8분의 1밖에 못 받는다. 이건 "좀 더 잘 보이는" 정도가 아니라, 거의 다른 세계에 사는 수준의 차이다.

Gini 0.836 — 1%가 다 먹는 세상

이 불평등을 숫자 하나로 표현할 수 있다. 지니 계수(Gini coefficient). 0이면 완전 평등(모든 글이 같은 관심을 받음), 1이면 완전 불평등(한 글이 모든 관심을 독점).

HN의 일별 투표 지니 계수: 0.836.

이게 얼마나 높은 건지 감을 잡기 위해 비교해보면:

지니 계수 비교
세계 소득 불평등
0.63
미국 자산 불평등
0.85
HN 프론트페이지 투표
0.836
YouTube 조회수 (추정)
0.90+

HN의 투표 불평등은 미국 자산 불평등과 거의 같은 수준이다.

하루에 810개 글이 올라오는데, 상위 1% — 약 8개 — 가 전체 관심의 대부분을 가져간다. 나머지 800개는 사실상 아무도 안 본다.

여기까지는 "뭐, 당연하지 않아?" 싶을 수 있다. 좋은 글이 더 많은 관심을 받는 건 자연스러운 거 아닌가. 근데 진짜 재미있는 건 다음부터다.

이상한 발견: 점수가 높다고 더 잘 받는 게 아니다

2021년에 Dubach이라는 연구자가 HN 데이터를 분석해서 흥미로운 걸 발견했다. 현재 점수가 높은 글이 앞으로도 더 빨리 성장하느냐? 측정해봤더니:

ρ(점수, 성장률) = -0.04

거의 0이다. 상관관계가 없다는 뜻이다.

이건 직관에 반한다. "부익부 빈익빈"이 작동하고 있다면 — 점수가 높은 글이 더 눈에 띄고, 그래서 더 많은 투표를 받고, 점수가 더 올라가는 양의 피드백 루프가 있다면 — 이 상관관계는 양수여야 한다. 근데 사실상 0이다.

그래서 Dubach은 결론을 내렸다: "HN에는 cumulative advantage(누적 우위)가 없다."

...정말?

Gini 0.836이라는 극단적 불평등이 존재하는데, 부익부가 없다고? 그러면 이 불평등은 대체 어디서 오는 거지?

이게 바로 Dubach puzzle이다. 우리 연구는 여기서 시작됐다.

핵심 통찰: 점수가 아니라 "위치"가 전부다

한 발 물러서서 생각해보자. HN 프론트페이지에서 투표를 결정하는 건 뭘까?

당연히 글의 질이 중요하다. 근데 그 전에, 글이 보여야 투표를 할 수 있다. 아무리 좋은 글이라도 프론트페이지 30등에 있으면 1등에 있는 글보다 압도적으로 적은 사람이 본다. 왜? 사람의 눈은 위에서 아래로 훑기 때문이다.

이건 eye-tracking 연구에서 이미 많이 검증된 사실이다. 웹페이지에서 k번째 위치에 있는 아이템을 클릭할 확률은 대략 k^(-α)에 비례한다. 1등 대비 k등의 주목도가 거듭제곱으로 떨어진다는 거다.

두 가지 모델: 무엇이 투표를 결정하는가?
1
GPC (점수 기반)

점수가 높을수록 투표를 더 많이 받는다. 클래식한 부익부 모델. 점수 x의 투표율 ∝ x^β

2
PMF (위치 기반)

점수가 아니라 순위(위치)가 투표를 결정한다. 순위 k의 투표율 ∝ k^(-α). 이것이 우리의 새로운 모델.

3
핵심 차이

GPC: 점수 100인 글이 점수 10인 글보다 10^β배 유리. PMF: 1등인 글이 10등인 글보다 10^α배 유리. 점수 자체는 무관.

우리가 제안한 건 PMF(Position-Mediated Feedback) 모델이다. 핵심은 간단하다:

투표를 결정하는 건 글의 "점수"가 아니라 글의 "순위"(= 위치, = visibility)다.

1등 글은 1등이기 때문에 투표를 많이 받는다. 점수가 1000이어서가 아니라, 화면 맨 위에 있어서. 만약 그 글이 갑자기 15등으로 밀려나면, 점수가 아무리 높아도 투표율은 뚝 떨어진다.

수학이 말해주는 것: Zipf 분포와 정상 상태

PMF 모델을 오래 돌리면 어떻게 될까? 수학적으로 분석하면, 정상 상태(steady state)에서 각 아이템의 점유율이 Zipf 분포를 따른다는 걸 증명할 수 있다.

k등인 글의 점유율: p(k) = k^(-α) / H(N, α)

여기서 H(N, α)는 일반화된 조화급수(정규화 상수)다.

이게 무슨 뜻이냐면, PMF 세계에서는 1등이 전체 관심의 k^(-α)만큼을 가져가고, 이 분포가 안정적으로 유지된다는 거다. 실제 HN 데이터에서 이 이론과 시뮬레이션의 Gini를 비교하면:

Zipf 이론 vs PMF 시뮬레이션: Gini 비교 (N=100)
α=0.5
288
α=0.8
493
α=1.0
624
α=1.2
737
α=1.5
856
← HN
α=1.8
922
α=2.0
947

값은 Gini × 1000. α=1.5 부근에서 HN의 Gini 0.836과 일치한다. 이론과 시뮬레이션의 차이(gap)은 0.01 이하.

HN의 α ≈ 1.51. Eye-tracking 문헌에서 보고된 범위(0.8~1.5)의 상한과 거의 일치한다. HN 유저들이 목록을 꽤 가파르게 훑는다는 뜻이다 — 1등에서 크게 벗어나면 주목도가 급격히 떨어진다.

Dubach puzzle의 해답

이제 퍼즐을 풀 수 있다. PMF 모델로 "점수 vs 성장률"의 상관관계(ρ)를 측정하면:

Dubach ρ 재현 결과
Dubach 실측 (HN 실데이터)
ρ = -0.04
PMF 시뮬레이션
ρ = -0.002
GPC (부익부 모델) 참고
ρ = +0.66

PMF는 Dubach의 ρ≈0을 거의 정확히 재현한다. GPC(부익부 모델)는 ρ가 양수로 나와서 현실과 맞지 않는다.

PMF에서 ρ가 0에 가까운 이유가 아름답다. 정상 상태에서:

  • 절대 투표 속도: k등이 받는 투표 ∝ k^(-α)
  • 현재 점수: k등의 점수 ∝ k^(-α) (Zipf 분포)
  • 상대 성장률: (투표 속도) / (현재 점수) ∝ k^(-α) / k^(-α) = 1

모든 순위의 상대 성장률이 동일하다. 1등이든 50등이든 같은 비율로 성장한다. 그래서 점수-성장률 상관이 0이 되는 거다.

핵심 인사이트: Dubach이 측정한 ρ ≈ 0은 "부익부가 없다"는 증거가 아니었다. 부익부가 이미 완료되어 균형 상태에 도달했다는 증거였다. 불평등은 초기 과도기에 형성되고, position bias가 그걸 유지하고 있을 뿐이다.

불평등은 언제 만들어지는가

그러면 이 극단적 불평등은 정확히 언제, 어떻게 만들어지는 걸까?

**초기 과도기(transient)**에서다. 모든 글이 score=1로 시작할 때, 작은 확률적 차이 — 누가 먼저 투표 하나를 받느냐 — 가 순위를 만든다. 순위가 한 번 만들어지면 position bias가 즉시 작동한다: 높은 순위 → 더 많은 노출 → 더 많은 투표 → 순위 유지. 이 과정은 매우 빠르게 일어난다.

일단 Zipf 분포에 도달하면, 그때부터는 모든 글의 상대 성장률이 같아진다. 불평등은 더 이상 확대되지 않는다. 다만 유지될 뿐.

비유하자면 이렇다. 마라톤 출발선에서 첫 100미터의 위치 싸움이 전체 레이스를 결정하는 것과 비슷하다. 선두 그룹에 한 번 들어가면 바람막이 효과(=position visibility)로 에너지 소모가 적다. 뒤에서 아무리 실력이 좋아도 앞을 볼 수 없으면(=visibility가 낮으면) 따라잡기가 구조적으로 어렵다.

이게 왜 중요한가

이 발견은 HN만의 이야기가 아니다. 검색 결과, 앱스토어 랭킹, 유튜브 추천, 뉴스 피드 — 순위가 존재하는 모든 플랫폼에서 같은 메커니즘이 작동한다.

Position Bias가 작동하는 곳들
Google 검색
1등 CTR 30%, 10등 CTR 2%
App Store
상위 3개 앱이 다운로드의 47%
YouTube 추천
첫 번째 추천의 클릭률이 나머지 합산보다 높음
HN 프론트페이지
1등이 30등의 53배 투표

플랫폼을 만드는 사람이라면 이걸 알아야 한다: 당신의 랭킹 알고리즘이 곧 불평등의 구조를 결정한다. "좋은 콘텐츠가 자연스럽게 떠오른다"는 건 환상이다. 초기 위치가 모든 걸 결정하고, 나머지는 position bias가 고착시킨다.

그리고 콘텐츠를 만드는 사람이라면: 업로드 타이밍과 초기 모멘텀이 콘텐츠 품질만큼이나 중요하다. 아무리 좋은 글이라도 경쟁이 치열한 시간대에 올리면 첫 몇 분의 운에 의해 묻힐 수 있다. HN의 경우 미국 동부 시간 기준 아침 6-9시가 최적의 윈도우라는 분석도 있다.

요약

이 연구의 핵심 발견
데이터
HN 2024년 295,931개 전수분석
불평등 수준
Gini = 0.836 (미국 자산 불평등과 동급)
원인
Position-Mediated Feedback (위치 기반 피드백)
핵심 파라미터
α ≈ 1.51 (순위별 주목도 감소 지수)
Dubach puzzle
ρ ≈ 0은 부익부 부재가 아닌 균형 도달의 증거
메커니즘
초기 확률적 우위 → position lock-in → Zipf 정상상태

30만 개의 데이터를 세어보니, 결국 하나의 문장으로 귀결됐다:

불평등은 "품질의 차이"가 아니라 "위치의 고착"이 만든다.

이 글에 사용된 데이터와 시뮬레이션 코드는 정리해서 공개할 예정이다. 수학적 유도와 증명 과정이 궁금하다면, 다음 글에서 더 깊이 다뤄보겠다.


다음 글: Reddit으로 교차검증 — 같은 메커니즘이 다른 플랫폼에서도 작동하는지 확인해보려고 한다.

관련 글

개발2026년 4월 1일

Reddit 12억 개를 열려다 네 번 실패한 이야기

HN에서 발견한 Position-Mediated Feedback 모델을 Reddit으로 교차검증하려 했다. Arctic Shift API, PullPush, wget, HF DuckDB — 네 번의 시도와 네 번의 실패. 그리고 아직 안 풀린 수학.

개발2026년 4월 2일

사고 도구에 AI가 꼭 필요한가

모든 프로덕트에 AI를 붙이는 시대. 하지만 Dimension은 AI 없이도 작동하는 사고 도구를 지향한다. 왜 그런 선택을 했는지, 그리고 이건 노트 앱과 어떻게 다른지.

개발2026년 4월 1일

생각에도 높이가 있다

같은 주제를 다뤄도 코드 레벨과 철학 레벨은 완전히 다른 높이다. Z축(추상도)이라는 개념으로 사고의 고도를 분석해본다.