Merüljünk el a tartalmak rendezésének matematikai alapjaiban a Wilson-képlet és a Reddit-féle hotness példáján keresztül.
A modern közösségi híraggregátorokban és a felhasználói tartalmakra (UGC) épülő platformokon kritikus fontosságú a tartalmak megfelelő sorrendbe rendezése. Az egyszerű időrendi vagy szavazatszám szerinti rendezés nem működik: az új, jó minőségű anyagok elsüllyednek az áradatban, a régi, megosztó bejegyzések pedig továbbra is a lista élén maradnak.
A közösségi médiaprojektek többsége általában két fejlett rangsorolási algoritmust használ:
- Wilson-konfidenciaintervallum (Wilson Score Interval) – a kommentek intelligens rangsorolásához
- „Forróság” algoritmus (Hotness) – a történetek dinamikus rendezéséhez
Nézzük meg mindkettőt részletesen.
1. rész: Wilson-konfidenciaintervallum a kommentekhez
p + z²/(2n) - z√[p(1-p)/n + z²/(4n²)]
confidence = ─────────────────────────────────────
1 + z²/nA számtani átlag problémája
Képzeljünk el két kommentet:
- A komment: 10 pozitív és 0 negatív szavazat (100% pozitív)
- B komment: 950 pozitív és 50 negatív szavazat (95% pozitív)
Ha az átlagos értékelés alapján rendeznénk, az A komment kerülne előrébb, noha a B komment 95-ször több pozitív szavazatot kapott, és az értékelése statisztikailag sokkal megbízhatóbb.
A megoldás a Wilson-intervallum.
Hogyan működik?
A Wilson-képlet a binomiális eloszlás konfidenciaintervallumának alsó határát számítja ki. Egyszerűbben fogalmazva arra a kérdésre válaszol, hogy „mekkora az a legkisebb értékelés, amelyet adott bizonyossággal garantálni tudunk?”
function wilson_score(int $score, int $flags): float
{
$ups = $score + $flags;
$downs = $flags;
$n = $ups + $downs;
if ($n === 0) {
return 0.0;
}
// Z-érték a 80%-os konfidenciaintervallumhoz
$z = 1.281551565545;
$p = $ups / $n; // A pozitív szavazatok aránya
// Wilson-képlet
$zSquared = $z * $z;
$left = $p + (1 / (2 * $n) * $zSquared);
$right = $z * sqrt(($p * ((1 - $p) / $n)) + ($zSquared / (4 * $n * $n)));
$under = 1.0 + ((1.0 / $n) * $zSquared);
$confidence = ($left - $right) / $under;
return max(0.0, min(1.0, $confidence));
}A legfontosabb paraméterek
$z = 1.281551565545– a 80%-os konfidenciaintervallumhoz tartozó Z-érték (a Reddit 1,28-at használ)$p– a pozitív szavazatok aránya (pozitív szavazatok / összes szavazat)$n– az összes szavazat száma
Miért jobb ez?
Példaszámítás:
| Komment | Pozitív szavazatok | Jelentések | Pozitív arány | Wilson-pontszám |
|---|---|---|---|---|
| A | 10 | 0 | 100% | 0,722 |
| B | 950 | 50 | 95% | 0,938 |
| C | 3 | 0 | 100% | 0,463 |
A 100%-os értékelés ellenére az A és C komment kisebb Wilson-pontszámot kap a kevés szavazat miatt. A 95%-os, de sokkal több szavazattal rendelkező B komment kerül előrébb – ez igazságosabb.
A megközelítés előnyei
✅ Védelem a manipuláció ellen: az új, mindössze 1–2 szavazatos kommentek nem kerülnek rögtön az élre
✅ Statisztikai megbízhatóság: figyelembe veszi a minta nagyságát
✅ Automatikus spamszűrés: a jelentések erősen csökkentik a pontszámot
✅ Egyensúly az új és a minőségi között: a jó kommentek a szavazatok gyűjtésével fokozatosan emelkednek fel
2. rész: Hotness algoritmus a történetekhez
hotness = -((sign × log₁₀(max(|score|, 1)) + seconds / 45000) + Σ hotness_mod_tags)Az időrendi rendezés problémája
Az egyszerű időrendi sorrend – vagyis amikor az új bejegyzések vannak felül – figyelmen kívül hagyja a tartalom minőségét. Az összesített pontszám szerinti rendezés ezzel szemben a régi bejegyzéseknek kedvez, amelyeknek egyszerűen több idejük volt szavazatokat gyűjteni.
A megoldás egy összetett „forrósági” mutató.
Hogyan működik?
Az algoritmus a pontszám logaritmusát ötvözi az időbeli lecsengéssel:
function calculate_hotness(int $score, string $createdAt): float
{
// A pontszám logaritmikus skálája
$order = log10(max(abs($score), 1));
// Előjel (pozitív/negatív pontszám)
$sign = $score > 0 ? 1 : ($score < 0 ? -1 : 0);
// Időszámítási alap (2005. december 8. – a Reddit indulása)
$epoch = strtotime('2005-12-08');
$seconds = strtotime($createdAt) - $epoch;
// Végső képlet: (a pontszám logaritmusa) + (idő / lecsengési állandó)
return round(($sign * $order) + ($seconds / 45000), 7);
}A képlet részei
1. Logaritmikus skála (log10)
score = 10 → order = 1
score = 100 → order = 2
score = 1000 → order = 3
score = 10000 → order = 4A logaritmus megakadályozza, hogy a rendkívül népszerű tartalmak mindent uraljanak. A 10 és 100 szavazat közötti különbség fontosabb, mint az 1000 és 1010 közötti.
2. Időkomponens (seconds / 45000)
- 45 000 másodperc ≈ 12,5 óra – a „forróság” felezési ideje
- Minden bejegyzés időbeli bónuszt kap, amely az idő múlásával csökken
- Az új anyagok automatikusan előnyt élveznek
3. Az időszámítási alap (2005. december 8.)
Ez a Reddit indulásának dátuma. Alappontként használják az eredeti képlettel való kompatibilitás érdekében.
Működési példa
Tegyük fel, hogy most 2026. június 22. van:
| Történet | Pontszám | Közzététel | Hotness-pontszám |
|---|---|---|---|
| A | 100 | 2 órája | 4,8921234 |
| B | 500 | 1 napja | 4,6987654 |
| C | 1000 | 3 napja | 4,3010299 |
Annak ellenére, hogy a C történet tízszer több szavazatot kapott, mint az A, az életkora miatt hátrébb kerül. Az A történet „forróbb”: új, és máris jó értékelést gyűjtött.
Miért éppen 45 000 másodperc?
Ez egy empirikus állandó, amelyet a Reddit tapasztalati úton választott ki. A következőket jelenti:
- 12,5 óra elteltével egy történet körülbelül egy nagyságrendet veszít a logaritmikus skálán
- 24 óra elteltével még egy nagyon népszerű történet (score=1000) is egy új, 10 pontos történet mögé kerül
- Ez egy gyorsan frissülő hírfolyamot hoz létre, amelyben mindig jut hely az új tartalmaknak
A megközelítés előnyei
✅ Egyensúly a régi és az új között: a népszerű anyagok nem uralják örökké a listát
✅ Védelem az „örök toplista” ellen: a régi történetek fokozatosan lejjebb csúsznak
✅ Aktivitás ösztönzése: az új bejegyzések is lehetőséget kapnak
✅ Logaritmikus igazságosság: a 10→100 közötti növekedés fontosabb, mint az 1000→1010
3. rész: Összehasonlítás más platformokkal
- Hotness: hasonló képletet használ 45 000-es állandóval
- Kommentek: Wilson-pontszám
Z=1,28értékkel (80%-os bizonyosság) - W3A: teljesen kompatibilis a Reddit megközelítésével
Hacker News
- A következő képletet használja:
(p - 1) / (t + 2)^gravity - Ahol
pa pontszám,taz idő órákban,gravitypedig ≈ 1,8 - Erőteljesebb időbeli lecsengést alkalmaz
Lobsters
- A szavazatok, a kommentek és az idő kombinációját használja
- Képlete:
votes + comments * 0.5, időbeli szorzóval - Enyhébb rangsorolást alkalmaz
4. rész: Gyakorlati ajánlások
Mikor érdemes Wilson-pontszámot használni?
✅ Pozitív és negatív szavazatokkal működő értékeléseknél
✅ Kommenteknél és véleményeknél
✅ Moderált felhasználói tartalmaknál
✅ Minden olyan helyzetben, ahol kevés szavazat is előfordulhat
Mikor érdemes Hotness algoritmust használni?
✅ Hírfolyamoknál
✅ Közösségi aggregátoroknál
✅ Gyakori publikálásra épülő platformoknál
✅ Amikor fontos a friss, jó minőségű tartalmak bemutatása
Hangolás a saját projekthez
A Wilson-pontszámnál:
Más konfidenciaszinthez módosítsd a $z értékét:
1.28– 80% (Reddit, W3A)1.64– 90%1.96– 95% (konzervatívabb)
A Hotness algoritmusnál:
Módosítsd a 45000 osztót:
25000– gyorsabb frissülés (6 órás felezési idő)75000– lassabb frissülés (24 órás felezési idő)100000– nagyon lassú frissülés (36 óra)
Összegzés
Mindkét algoritmus a felhasználói tartalmakra épülő platformok egyik alapvető problémáját igyekszik megoldani: hogyan lehet igazságosan rangsorolni az eltérő számú szavazattal és eltérő életkorral rendelkező tartalmakat?
A Wilson-intervallum védelmet nyújt a statisztikai zajjal és a manipulációval szemben, miközben előnyben részesíti a bizonyítottan jó minőségű tartalmakat.
A Hotness algoritmus dinamikus hírfolyamot hoz létre, amelyben mindig jut hely az újdonságoknak, a minőségi tartalmak pedig lehetőséget kapnak arra, hogy közönséget gyűjtsenek.
Együtt egy kiegyensúlyozott rangsorolási rendszert alkotnak, amely:
- releváns tartalmakat mutat;
- küzd a spam és a manipuláció ellen;
- folyamatos aktivitásra ösztönöz;
- igazságos az új felhasználókkal.
Ezeket a képleteket a Reddit, a Hacker News és más nagy platformok többéves működése tette próbára. A megvalósításuk jó példája annak, hogyan válthatják fel a matematikailag megalapozott módszerek a pusztán megérzésre épülő döntéseket.





