How Hacker News ranking works: scoring, controversy, and penalties (2013)
Hacker News 순위는 어떻게 작동하는가 — 점수, 논란, 페널티
Hacker News의 게시물 순위가 추천 수와 게시 후 경과 시간만으로 결정되지 않으며, 도메인·제목·댓글 논란 등에 따른 페널티가 함께 적용된다는 분석입니다. 특히 댓글 수가 추천 수를 앞서고 40개에 도달하면 게시물이 순식간에 하락하거나 첫 페이지에서 사라질 수 있다고 설명합니다.
- 주제
AI 요약
이 글은 2013년 당시 Hacker News의 게시물 순위가 단순히 upvote 수가 많은 순서로 정해지지 않는다고 분석합니다. 기본적으로 순위는 추천 점수와 게시 후 경과 시간, 그리고 여러 페널티를 결합한 점수 함수로 계산됩니다. 따라서 추천을 많이 받은 글도 시간이 지나면서 자연스럽게 내려갈 뿐 아니라, 논란이 많은 글이나 특정 도메인의 글에는 추가 감점이 적용되어 원래의 순위보다 훨씬 빠르게 하락할 수 있습니다.
■ 기본 점수와 실제 첫 순위의 차이
작성자는 11월 11일 하루 동안 Hacker News의 /news와 /news2 페이지를 1분 간격으로 수집하고, 페널티를 제외한 raw score를 계산해 상위 60개 게시물의 움직임을 추적합니다. 분석 결과, raw score가 가장 높은 글이 실제 1위를 차지하지 않는 경우가 자주 나타납니다. 예를 들어 Getting website registration completely wrong는 아침 일찍 1위에 올랐지만 controversy penalty가 적용된 뒤 빠르게 내려갔습니다. 이후 Linux ate my RAM이 잠시 1위를 차지했고, Simpsons in CSS가 그 자리를 이어받았습니다.
Apple Maps도 1위에 오른 직후 controversy penalty가 적용되면서 순위가 급락했습니다. Snapchat 관련 글은 Hacker News 최상단까지 올라왔지만 오전 8시 22분에 매우 큰 페널티를 받아 차트에서 완전히 사라졌습니다. Why you should never use MongoDB는 큰 인기를 얻어 하루 대부분을 1위에서 보낼 만한 점수를 기록했지만, 빠르게 페널티를 받아 7위 부근에 머물렀습니다. Severing ties with the NSA는 처음부터 NSA penalty를 받았음에도 높은 인기로 1위에 올랐지만, 곧 더 큰 페널티가 적용되면서 아래로 밀려났습니다. 작성자는 이런 페널티가 Hacker News 관리자의 조치인지, 사용자 신고로 발생하는지 명확하지 않다고 말합니다.
■ 제목과 도메인에 따른 자동 페널티
일부 게시물은 제목에 포함된 단어나 링크된 도메인에 따라 자동으로 감점되는 것으로 관찰됩니다. 제목에 NSA가 들어간 글에는 .4의 자동 페널티가 적용되는 것으로 보였으며, awesome, bitcoin, bubble 같은 단어에는 같은 현상이 나타나지 않았습니다. 또한 arstechnica.com, businessinsider.com, easypost.com, github.com, imgur.com, medium.com, quora.com, qz.com, reddit.com, rt.com, stackexchange.com, theguardian.com, theregister.com, theverge.com, torrentfreak.com, youtube.com 등 여러 도메인에는 .25에서 .8 사이의 페널티가 관찰됐습니다.
작성자는 이것이 사이트 차단과는 별개의 메커니즘이라고 구분합니다. 인기 있는 매체의 기사는 여러 사람이 동시에 제출하는 경향이 있고, 그 결과 실제 관심도보다 많은 추천을 받을 수 있으므로 인기 도메인에 자동 페널티를 적용하면 이런 효과를 상쇄할 수 있다는 이론을 소개합니다. 다만 해당 도메인 목록이 완전한 것은 아니라고 설명합니다.
■ 페널티가 순위에 미치는 영향
페널티 계수 .4는 단순히 최종 점수를 40%로 만드는 것과 같은 효과가 아닙니다. 이 분석에 따르면 .4의 페널티는 각 투표가 .3표로만 반영되는 것과 같거나, 게시물이 정상적인 속도보다 66% 빠르게 순위에서 내려가는 효과를 냅니다. .1의 페널티는 각 투표가 .05표로 반영되는 것과 같고, 정상보다 3.6배 빠르게 하락하는 수준입니다. 따라서 겉보기에는 작은 계수 차이처럼 보이는 .4도 순위에 상당한 영향을 주며, .1은 매우 강한 제재입니다.
■ 댓글 논란에 따른 급격한 하락
Hacker News는 flamewar를 막기 위해 댓글이 지나치게 많은 게시물을 controversial한 글로 취급하고 강하게 감점하는 것으로 분석됩니다. 공개된 코드에서는 댓글 수가 20개를 넘고 댓글 수가 upvote 수보다 많을 때 controversy factor가 작동하며, 게시물 점수에 (votes/comments)^2를 곱하도록 되어 있습니다. 그러나 작성자가 실제 데이터를 관찰한 결과, 실제 조건은 댓글 수가 추천 수보다 많으면서 댓글이 최소 40개 이상일 때 작동하는 것으로 보였습니다. 또한 지수는 2가 아니라 3일 가능성이 있다고 추정했지만, 이를 증명하지는 못했다고 밝힙니다.
이 규칙은 임계점에 도달하는 순간 매우 급격한 결과를 만들 수 있습니다. Why the Chromebook pundits are out of touch with reality는 댓글이 40개가 되는 순간 5위에서 22위로 떨어졌습니다. Show HN: Get your health records from any doctor는 17위에 있다가 댓글 40개에 도달하자 상위 60위 목록에서 완전히 사라졌습니다. 따라서 인기 글이 별다른 시간 경과 없이 첫 페이지에서 갑자기 사라졌다면 controversy penalty가 원인일 가능성이 있다고 설명합니다.
■ 수집 방법과 관찰된 분포
작성자는 Hacker News의 /news와 /news2 페이지를 1분마다 크롤링했으며, 페이지당 1분에 2회 이하라는 지침을 지켰다고 설명합니다. 다소 복잡한 HTML은 Beautiful Soup으로 파싱했고, 여러 Python 스크립트로 데이터를 처리한 뒤 matplotlib으로 그래프를 만들었습니다. 특정 시점의 상위 게시물에 대해 제공된 순위 공식을 적용해 raw score를 계산하고, 실제 순위와 맞지 않는 이상값을 찾아 페널티를 역추적하는 방식입니다.
예시로 11월 9일 오전 8시 46분의 상위 게시물 점수가 제시됩니다. Pyret: A new programming language from the creators of Racket은 2.802, The Big Data Brain Drain: Why Science is in Trouble은 1.407, The NY Times endorsed a secretive trade agreement that the public can't read은 1.649로 계산됩니다. 이처럼 점수 순서 자체가 페이지상의 위치와 정확히 일치하지 않기 때문에, 작성자는 별도의 감점 요인을 추정했습니다.
하루 동안 적용된 페널티를 추적한 결과 .2와 .4 수준의 페널티가 있었고, .8에서 .9 사이의 감점도 다수 나타났습니다. 오전 9시 무렵에 페널티가 많이 적용되는 패턴도 관찰됐지만, 작성자는 데이터가 noisy해 추가 알고리즘을 실험하고 있다고 설명합니다. 평균적으로 첫 페이지 게시물의 약 20%가 페널티를 받은 상태였고, 두 번째 페이지에서는 그 비율이 38%였습니다. 페널티를 받은 글이 첫 페이지에 남기 어렵다는 점을 고려하면, 두 번째 페이지에서 더 높은 비율이 나타나는 것은 순위 구조 자체와도 연결됩니다.
■ 공개된 순위 코드
글에서 설명한 Hacker News 서버 코드의 핵심 상수는 gravity* = 1.8, timebase* = 120분입니다. frontpage-rank 함수는 realscore로 계산한 추천 기반 점수와 item-age로 계산한 게시물 나이를 사용합니다. 기본적으로 점수는 나이에 따라 감소하며, 시간이 지날수록 같은 추천 수를 가진 게시물이 아래로 내려가도록 설계됩니다.
코드의 페널티 분기는 게시물 유형과 URL 유무, bury 플래그, controversy factor, gag 또는 lightweight factor를 차례로 검사합니다. story나 poll이 아닌 항목에는 .8이 적용되고, URL이 비어 있는 Ask HN 같은 글에는 nourl-factor가 적용됩니다. bury 플래그가 붙은 글에는 .001이 곱해져 사실상 순위에서 제거됩니다. 그 외 일반적인 글에는 controversy factor와 gag 또는 lightweight 계수가 결합됩니다. 이 구조는 Hacker News의 순위가 공개된 추천 수만으로 재현되지 않으며, 게시물 상태와 내부 플래그까지 포함한 여러 조건의 결과임을 보여줍니다.
■ Hacker News 반응
• @VCFundedGenYer — 저처럼 brutalist.report에서 제공하는 목록만 본다면 이 분석은 완전히 무너집니다. 그 목록은 엄격한 시간순이며 알고리즘이 전혀 없습니다.
• @perching_aix — 그렇습니다. 자동 스토리 순위를 일부러 우회하면 자동 스토리 순위의 세부 사항은 더 이상 영향을 주지 않습니다. 그런데 이런 기능은 제3자 사이트를 방문하지 않아도 이용할 수 있습니다: https://news.ycombinator.com/newest 저는 이것이 어떤 식으로든 편향에서 벗어나게 해준다고 생각하지 않기를 바랍니다. 역순 시간 정렬도 여전히 하나의 정렬입니다.
• @Retr0id — 제게는 알고리즘처럼 보입니다. 역순 시간 정렬에 upvote 임계값(?)이 있고, 일반적인 HN에서는 upvote 수가 정렬 순위와 상관관계를 보이는 방식입니다.
• @VCFundedGenYer — 다시 말하지만 제가 언급한 사이트에서는 그런 요소가 없습니다.
• @tptacek — 임계값이 있다면 여전히 HN 알고리즘의 영향을 크게 받습니다. 첫 페이지 노출이 스토리가 얻는 투표 수를 결정하는 가장 중요한 요소이기 때문입니다.
원문: righto.com / 번역·요약: Trawling