Reddit er bygget oven på ulogisk algoritme

Illustration:
Det populære sociale medie, Reddit, sorterer sine indlæg efter en algoritme med en afgørende fejl. Selvom udviklerne flere gange er blevet gjort opmærksomme på problemet, holder de stædigt fast i, at algoritmen er designet efter hensigten.

Der er rod i matematikken hos det enorme sociale nyheds- og underholdningssite Reddit. Sitet er bygget op omkring, at brugere poster indhold, som vurderes af andre brugere ved simpelthen at stemme indlægget op eller ned.

Men den altafgørende algoritme, som sorterer indlæg efter, hvor populære de er, bygger på en ulogisk matematisk formel, som bloggeren og udvikleren Ian Greenleaf Young har kigget nærmere på.

Den specifikke stump kode, som afgør et indlægs skæbne, vægter hvilke parametre, der er vigtigst ved et ‘hot’ indlæg. Således spiller tid en faktor, samt summen af negative og positive stemmer, et indlæg har fået.

I koden har Reddit-udviklerne valgt at sætte et UNIX-timestamp, som indlæggets ‘tidsscore’, hvilket naturligvis altid vil være højere end ældre indlæg og dermed give nyere indlæg en fordel.

seconds = date - 1134028003

Indlæggets sum af op- og ned-stemmer reduceres til en værdi af enten 1 eller minus 1 alt afhængigt af, om summen er positiv eller ej.

s = score(ups, downs)
order = log10(max(abs(s), 1))
if s > 0:
    sign = 1
elif s < 0:
    sign = -1
else:
    sign = 0

Samtidig vægtes op- og ned-stemmerne ved at tage den numeriske værdi af stemmesummen og finde ti-talslogaritmen af summen og gemmes i variablen ‘order’. Her er det, at Ian Greenleaf Young regner med, at variablen ‘sign’ skal bruges til at sætte korrekt fortegn foran ‘order’, som i kraft af den tidligere logaritmeoperation altid vil være positiv.

Men det har Reddi-folkene valgt ikke at gøre. Ganske ulogisk bliver variablen ‘sign’ ikke ganget sammen med variablen ‘order’, men i stedet med variablen ‘seconds’.

return round(order + sign * seconds / 45000, 7)

Det betyder, at en total negativ score forværres, jo nyere indlægget er, da ‘seconds’-variablen dermed ville have negativt fortegn samt en større værdi i kraft af sin nyere dato. Dermed vil det nyere indlæg rangere lavere end ældre indlæg med samme antal ned-stemmer.

Endnu værre ser det ud for nye indlæg, der som det første får en ned-stemme. Disse indlæg vil i kraft af sin store negative 'seconds'-værdi starte allernederst i hierarkiet og muligvis aldrig få den eksponering, de fortjener.

Alligevel mener folkene bag Reddit, at koden virker efter hensigten, og at det ikke er en fejl, at algoritmen sorterer ulogisk.

Ironisk nok ligger Ian Greenleaf Youngs indlæg om Reddit fejlagtige algoritme i skrivende stund på top tre over ‘hotte’ indlæg.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (16)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Martin Storgaard Dieu

Jeg fulgte kort et introduktionskursus for Recommender Systems, og fandt hurtigt ud af at der er et utal af måder at sorterer på. Så det er selvfølgelig ulogisk, hvis man forventer noget andet.

Men er det ikke logisk? Indlæg som får en umiddelbar negativ respons vil man gerne gemme væk, og når de er gemt godt væk, ja, så er brugeren efterladt med indlæg med umiddelbar positiv respons.

Uden at være erfaren Reddit bruger, så kan det vel sammenlignes med Google resultater. Indlæg mange "sider" (jeg ved ikke om det er det man bruger) væk, ses ikke. Så hvis et indlæg virkelig fortjener at blive stemt op, så skal de ihærdige Reddit brugere nok finde det, og så betyder at blot en positiv stemme vil få den frem igen. Hvis den så igen bliver stemt væk, ja, så er det nok ikke et så godt indlæg. Hvis den bliver stemt længere frem, så får den eksponering. På den måde vil dårlige indlæg bliver gemt væk, middel indlæg vil hoppe frem og tilbage og gode indlæg vil blive fremme. Alt afhængig af tiden selvfølgelig.

Ulogisk ulogisk

  • 1
  • 0
Johnnie Hougaard Nielsen

Indlæg som får en umiddelbar negativ respons vil man gerne gemme væk, og når de er gemt godt væk, ja, så er brugeren efterladt med indlæg med umiddelbar positiv respons.

Det tænkte jeg også først, men så at blot en enkelt negativ stemme som den første kan sende et indlæg helt i bund. Det giver alt for stor magt til reddit-junkies der nemt kan sidde og udradere hvad de ikke synes om.

  • 2
  • 0
Johnnie Hougaard Nielsen

Spekulationen kunne være at den tager højde for antallet.

Jeg gik blot ud fra at artiklens tekst var at tage for gode varer:

Endnu værre ser det ud for nye indlæg, der som det første får en ned-stemme. Disse indlæg vil i kraft af sin store negative 'seconds'-værdi starte allernederst i hierarkiet og muligvis aldrig få den eksponering, de fortjener.

Det lyder som det er oversat fra nogen som har en ide om hvad "score" gør.

Hvis en enkelt thumbs down kan slutte festen, forekommer det mig at være en alt for bred risiko til at regne for "worst case". Dette begreb skulle gerne være usædvanlige cases.

  • 1
  • 0
Peter Stricker

Så den er altså præcist så simpel, som man kunne forvente i og med, at den ikke er vist i artiklen.


Hmm, jeg havde da vist også lavet et link til sourcen for score, men det forsvandt åbenbart da jeg ville tilføje følgende:

Jeg mener naturligvis ikke at du har stillet et overflødigt spørgsmål, men at Martin Bernth havde begået en undladelsessynd, hvis det viste sig at score ikke var simpel.

Men her er linket så til score:
https://github.com/iangreenleaf/reddit/blob/45e8209d8d4236367a6f7247068c...

  • 1
  • 0
Martin Storgaard Dieu

Åh.. Der kom min Reddit kunnen til kort. Men kan den artikel som er lav på hot siden ikke være i øverste halvdel i de andre faner? Hvis de så får mange thumbs ud der, så kommer de frem i hot? Og det giver vel fin mening at en artikel med en til et fåtal thumbs up/down ikke er hot? En hot artikel kan vel være en høj aktuel artikel som har et overvæld af thumbs up?

  • 0
  • 0
Kim Sindalsen

Dermed vil det nyere indlæg rangere lavere end ældre indlæg med samme antal ned-stemmer.

Hvis et nyt indlæg på kort tid indhenter ligeså mange ned-stemmer som et indlæg der har været tilgængelig i længere tid er det vel mindre populært?

  • 1
  • 0
Johnnie Hougaard Nielsen

Hvis et nyt indlæg på kort tid indhenter ligeså mange ned-stemmer som et indlæg der har været tilgængelig i længere tid er det vel mindre populært?

Den logik holder kun når et indlæg har mere end nogle få stemmer. Problematikken her går netop mest på hvordan et meget lille antal stemmer (det vil især sige én stemme) i starten han have en meget afgørende betydning, og med det samme sende et nyt indlæg langt ud i kulden, før det har haft sin chance.

  • 1
  • 0
Martin Storgaard Dieu

Men bliver den sendt langt ud i kulden på de andre sider? Lige meget hvad, så er en post med 1 stemme, god eller dårlig, ikke særlig hot. Jeg kender kun til 9gag,som har lignede system. Der er der en "Hot", "Trending" og "Fresh" side. Og de må immervæk bruge forskellige sorteringsalgoritmer. Her vil et billede/gif ikke komme på hot, medmindre den faktisk har fået et respektabel antal stemmer (observation). Så hvorfor er en Reddit post med få stemmer hot? Den får sin chance på andre sider, og har der mulighed for at blive hot.

  • 0
  • 0
Martin Wolsing

Hvis nye indlæg med positive stemmer vægtes højere end gamle indlæg med lige så mange positive stemmer, må det samme vel være tilfældet for negative bedømmelser (bare med modsat fortegn). Dvs. at nye indlæg med negative stemmer skal vurderes lavere end gamle indlæg med negative stemmer. Ergo er der nødt til at være fortegn på tidsfaktoren. Hvis tidsfaktoren altid var positiv, ville et nye indlæg jo kunne score højere end et ældre indlæg trods færre positive stemmer.

  • 0
  • 0
Johnnie Hougaard Nielsen

Men bliver den sendt langt ud i kulden på de andre sider? Lige meget hvad, så er en post med 1 stemme, god eller dårlig, ikke særlig hot.

Det her handler ikke om en mere samlet vurdering, men jeg vil dog sige at en af de vigtige parametre for hotness er hvor nyt et indlæg er. Og hvis én eneste hurtig stemme, som påpeget i det oprindelige skriv, kan få voldsom betydning for et indlægs skæbne, forekommer det mig at være ganske rimeligt at kalde det for "en ulogisk algoritme". Det er ikke derfor en samlet kritik af reddits ranking system; sådant vil altid være kunne være til uafsluttelig debat.

Da denne snævre diskussion tager afsæt i default-visningen i reddit, har hvad der sker på hot-siden langt større betydning end hvilke argumenter der kan gøres om brugen af de andre sider. Også uden at have statistikker, tør jeg godt gå ud fra at de bliver brugt markant mindre.

Hvis tidsfaktoren altid var positiv, ville et nye indlæg jo kunne score højere end et ældre indlæg trods færre positive stemmer.

Ja, og sådan bør det også, i en eller anden udstrækning, kunne være. Når det gælder ranking og "hotness", må nyere stemmer skulle tælle højere end gamle, da ældre indlæg løbende må skulle køle af. Derfra og til at én eneste stemme på et nyt indlæg kan blive afgørende, er der dog langt et stykke vej.

  • 0
  • 0
Log ind eller Opret konto for at kommentere