WLoH-rating

Dette er et hobbyprosjekt fra tredjepart, og ikke en offisiell del av Wordfeud Leage of Honour.

Dette er et forsøk på å forklare hvordan ratingene som brukes på denne siden regnes ut. Forklaringen er ment å være ikke-teknisk; det hjelper å ha en viss sans for matematikk, men den er med vilje skrevet uten for mange greske bokstaver og lignende.

Modell

Det heter seg at «alle modeller er gale, men noen er nyttige». Modellen her er basert på at alle spillere har en spillestyrke, som er et helt vanlig tall, og det er denne vi prøver å måle ut fra resultatene vi ser. (Vi prøver altså eksplisitt ikke å dele ut «poeng» for å gjøre det bra, kun å estimere den ekte spillestyrken din; selv et tap kan øke ratingen din.) Vi sier at hvis Anne har spillestyrke (rating) 550 og Bjørn har 500, vil Anne i gjennomsnitt slå Bjørn med 50 poeng hvis de spiller.

Imidlertid er Wordfeud er et spill der tilfeldigheter spiller en viktig rolle, så det vil svinge mye fra kamp til kamp. Hvor mye er det sannsynlig at det svinger? Her kommer normalfordelingen inn; de fleste har nok sett kurven for den før:

Normalfordelingskurve med forventningsverdi 50

Kurven her sier rett og slett at hvis Anne og Bjørn spiller, er det mest sannsynlige at Anne vinner med 50, siden dette er ratingforskjellen deres. Men det er heller ikke helt usannsynlig at de spiller likt eller at Bjørn vinner med 100 (de to er like sannsynlige). Det er imidlertid lite trolig at Anne vinner med 300. Hvor mye det svinger kan beskrives ved standardavviket, og det er på ca. 80 poeng for Wordfeud.

Ratingen din betyr altså bare noe i forhold til andre spillere, så det absolutte tallet er ikke så viktig i seg selv. Gjennomsnittlig spillestyrke settes i utgangspunktet til 500 poeng; dette er et helt vilkårlig tall, men er valgt delvis ut fra tradisjon i andre ratingsystemer. Det kunne like gjerne vært 0 eller 100000 (selv om det kanskje virker litt dust at en dårlig spiller har rating 99800 og en veldig god 100200).

Rimelighet

Målet til ratingsystemet blir altså å prøve å måle folks spillestyrke på en global skala, til tross for tilfeldighetene. Målet vårt blir å finne den kombinasjonen av ratinger som er rimeligst mulig, altså stemmer best med de observasjonene vi har gjort. På engelsk kalles dette maximum likelihood estimation, eller MLE.

Så, hva er rimeligst vi ser at Anne har slått Bjørn med 50 poeng og ikke har noe annen informasjon? Her er åpenbart det mest rimelige at Anne har en rating på 50 poeng over Bjørn. Når det er flere enn én kamp inne i bildet, blir det imidlertid vanskeligere å bare se ting inutitivt, og vi trenger litt mer systematikk. Matematisk kan vi bruke normalfordelingsfunksjonen igjen, men her blir bruken invertert – i stedet for at vi har en ratingforskjell og skal prøve å finne et resultat, har vi et resultat og skal finne en ratingforskjell. Vi kaller da tallet vi får ut for rimelighet (eng. «likelihood») og ikke sannsynlighet, selv om det er akkurat den samme formelen.

Når vi da har to eller flere kamper å basere oss på, gjør vi som man ofte gjør når man jobber med sannsynlighet: Vi antar at alle kamper er uavhengige (det du gjør på ett brett endrer ikke det som skjer på et annet), og da vil sannsynligheten for «både A og B skjedde» være lik de to sannsynlighetene ganget sammen. (Rimelighet fungerer på samme måte.) Under ser du for eksempel rimelighetskurven om man tar med at Anne ikke bare har slått Bjørn med 50 poeng, men at hun en annen gang har tapt med 80 for ham:

Normalfordelingskurve med forventningsverdi ca. -18

Her blir det rimeligste resultatet at Bjørn er litt bedre (ca. 18 poeng).

Modellen utvides til flere spillere ganske naturlig: Om Anne er 50 poeng bedre enn Bjørn, og Carl har slått Anne med 30 poeng én gang, er det rimeligste at Carl er 80 poeng bedre enn Bjørn, og så videre. På denne måten kan vi si noe om antatt styrkeforhold mellom Anne og Ymgve, selv om de aldri har spilt mot hverandre unntatt svært indirekte gjennom mange andre spillere.

Utgangsantagelse

Et vedvarende problem i løselig sammensatte miljøer som WLoH (som man typisk ikke har i sjakk o.l.) er at ikke alle spiller mot alle i noen særlig grad; folk innenfor en divisjon/avdeling blir godt kalibrert i forhold til hverandre, men det er vanskeligere å vite hvordan divisjonene ligger an i forhold til hverandre. Man får stort sett informasjon fra å observere folk som har vært i flere divisjoner (om du f.eks. gjør det knall i 8. men blir banket i 7., er det sannsynlig at gjennomsnittsnivået i 7. er ganske mye høyere), og særlig lenger ned kan det være få av dem, ettersom disse divisjonene er befolket med for det meste nye spillere.

Dette fører til et problem med at det kan være vanskelig å finne ekte spillestyrke til relativt nye spillere. Hvis for eksempel David har banket Emma, Fredrik og Gunnar med 200 poeng nedi sin avdeling i 8. divisjon, og man antar i utgangspunktet at en gjennomsnittlig spiller er 500 poeng, er det da rimelig at David skal ha rating 700 (som er helt mot toppen av lista)?

De fleste vil si nei; det er ikke rimelig. Vi uttrykker dette med en utgangsantagelse (eller engelsk «prior») om ratingen hos folk generelt, og igjen kommer normalfordelingen inn:

Normalfordelingskurve med forventningsverdi 500

Kurven her sier rett og slett at det er få av de aller beste og dårligste spillerne; de fleste ligger rundt 500 noe sted. Det er rett og slett ikke veldig rimelig at en spiller ligger rundt 700 i seg selv, og inntil det finnes data som sier noe annet (i praksis et relativt stort antall kamper med godt resultat) vil dette trekke spilleren nærmere 500. I stor grad løser dette problemet – det er dog ingen fullstendig fiks.

Minorization-maximization

Målet vårt blir med andre ord å å finne den kombinasjonen av ratinger som gir størst total rimelighet for alle resultatene samt utgangsantagelsen. (Egentlig maksimaliserer man ikke total rimelighet, men logaritmen av total rimelighet, men det er bare et regnetriks, og ikke noe man trenger å tenke på; det endrer ikke resultatene på noe vis.) WLoH har i skrivende stund rundt 2000 aktive spillere og over 20000 registrerte spill, så her er det ganske så mye å holde orden på, og det er vanskelig å løse dette som én stor ligning.

I stedet bruker vi en metode som på fint kalles cyclic minorization-maximization (syklisk MM, nært beslektet med EM-algoritmene som er i vid bruk). Den er dog ikke så fryktelig komplisert for vårt tilfelle: Først antar vi alle har rating på 500. Så tar vi Annes rating og setter henne riktig (dvs., med maksimal rimelighet) i forhold til alle andre (for eksempel 50 poeng over Bjørns rating på 500 hvis det er all informasjonen vi har). Så setter vi Bjørn riktig i forhold til alle andre, og så videre for alle spillere. Nå er antageligvis Anne plassert litt feil (siden Bjørn har flyttet på seg), så vi oppdaterer henne igjen, og så videre, inntil alle står på riktig plass.

Man skulle kanskje tro at man endte opp i løkker hvor man flyttet folk fram og tilbake mellom ratinger og aldri ble ferdig, men det er faktisk ikke tilfelle; siden rimeligheten alltid går opp for hvert flytt, er vi nødt til før eller siden å ende opp i en stabil situasjon. Dette går overraskende fort; vi trenger bare 60-70 runder gjennom alle spillerne (ca. 150 ms beregningstid) før vi er inne i en stabil situasjon. (Om vi har nådd et globalt maksimum er en annen sak, men det skal vi ikke beskjeftige oss med her.)

(Vi har enda noen parametre å optimalisere, nemlig standardavviket til hver kamp og standardavviket til utgangsantagelsen. Vi optimaliserer disse som del av MM-algoritmen, akkurat som ratingene.)

Forbedringer og diverse

Dette var faktisk alt. Det skal sies at det sikkert er nok å ta tak i som ikke er blitt dekket her – for eksempel er det ikke beskrevet hvordan man regner ut usikkerheten i de estimerte ratingene (hvilket er passe komplekst, og basert på å invertere Hess-matrisen til rimelighetsfunksjonen), eller hvordan modellen vekter kamper eldre kamper gis mindre betydning).

Hva gjelder forbedringer av selve modellen, kan det nevnes at det ikke egentlig tatt hensyn til variabilitet i folks prestasjoner (modellen antar at folk presterer på samme nivå hele tiden). Det er også som alltid litt tvilsomt om normalfordelingen er det aller beste valget; den er relativt enkel å regne med, hvilket har en ikke ubetydelig verdi i seg selv, men mange andre systemer har etter hvert valgt å basere seg på logistisk fordeling i stedet.

Helt til slutt må det nevnes at ratingsystemet her trekker inspirasjon fra mange lignende systemer, som Glicko, Bayeselo, NSFs ratingsystem og ikke minst det udødelige Elo-systemet.