From 148c3248a3a3fdc5b948663ec70b5e0a66ad9566 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sun, 18 Mar 2012 20:08:37 +0100 Subject: [PATCH] Add a "ratings explained" page. --- www/norm1.png | Bin 0 -> 3511 bytes www/norm2.png | Bin 0 -> 3506 bytes www/norm3.png | Bin 0 -> 3006 bytes www/rating.pl | 3 +- www/ratings-explained.html | 179 +++++++++++++++++++++++++++++++++++++ 5 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 www/norm1.png create mode 100644 www/norm2.png create mode 100644 www/norm3.png create mode 100755 www/ratings-explained.html diff --git a/www/norm1.png b/www/norm1.png new file mode 100644 index 0000000000000000000000000000000000000000..75c091a057ef74b4a9afeb75de2ed6eac24fd0d3 GIT binary patch literal 3511 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 S)jaqMg<(4EwlCb~&HF#uAv=)( literal 0 HcmV?d00001 diff --git a/www/norm2.png b/www/norm2.png new file mode 100644 index 0000000000000000000000000000000000000000..91d9232fe03c8fa9070ed9db62e1dd59802c25c8 GIT binary patch literal 3506 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 literal 0 HcmV?d00001 diff --git a/www/norm3.png b/www/norm3.png new file mode 100644 index 0000000000000000000000000000000000000000..105537b104c661a012e3572502b56ef6fcff8a83 GIT binary patch literal 3006 zcmai$30RVO9>-szpit47P&75m*)6YZj`AQ+ys}1gtWDcg>>6v!BYDd!P$N2Y%xTj! z(*Vn{Q*!jt0nbUzY+8K7tTj@zNudRK~ zWQ1FR0|3A%c(Z>v0H8qlO<9V8TP~g$DTY5#wD2G@P$jf_1OLG6*&5^zXpk4DsqzBc zvMg!yP8tB<+mSb_&=GG5H)6rykO1rp^rxS?uMU2e_7HBe00SaHzr^_X{Rtr8m%M*B zxPRZOl!M@bRYAcaVG-GQA^;dz1pE7LPkk=y7l;4qW*+#B{|7a7C+&Q2(X#5zR%LUC z?%d={@kWMgs4i;4^WK_Di-c|&KHYWHzRN7)1(;d zFzNBu!g8OZIQkGdrNYh*JYh)Uz@4+maNlTLKkc!R_IK;oEQ+gG_IQH~@9*sKc4f

k z-~t+Ij$;6dRRtYdc|0QL1bJ;c2ThEYF->~n5TNE@?3#Z~voJUNtU+$p8dky+;yRFM z_CJ?LHxtX4>|^=2`AOfOqspaqaiPJ=@5~}=Aw`Sbb4;y;vOvT`F!t)a=LTO7+y!-Y^BdAQ^NOxz0WHNsi5 zU`-6%9WKostbM^&c%}1e>QT6|90YJ@%lf*Et<%~s02N++|=KRUH%VZe=LnwaY*CWJEV-03Co?G7L^bL zJ5=a(HOLoquAhE5y4n82$XZyE^0#P=`pCZgzrArbOJ>YXTIK%O55<+`iaKoX4YM%mNeA#VV_aFT z@oddDhx=9pQXa-ra(u?>of;^LsRAuw#YRebjGiAiJmG!!6Bo;(Y;sm(O9`TaeNLh9B8Q&``&mu=iHySrP2KaK9@6lCR zH!#MU6T=YW6ysy*SMy;OjhFb}w zLW3q*HvP^FiY0u_oOc^gWv?$QK~*&f?;rmzVUW;7HTqla?z~Q5kum8mp0yH$Ox^83 z0=%BIwyD$@mDK)JMbV}VOOtx2zZYwmesG_Srg_7C?a)VIM{KayF5bP1$3eqd`i5Ey zsd1#pMo7K1-;IfHcZC1GyGI)zu-OqxW?N;;M{ny9w;tXdnhDF0ARzP7#-k$_3cd#6s;2~qYqJCGGK`LZFL@WZ3A3)5Tk>c(}Dzg{uDkm35;glU6# z`|v$mILs{H2N?9T0yvOH?U$V*)2lanXm8|dRb^79*sc+tc! zWlct5((NnYgvdWnpPPIh$Ik`=1!>V~H<@eYi-@5V(D z|CkSV@``hJ@{s|nr;gwvyxGF)C0dSBT|2iR5bi=|p%A8>Ogq z{(Z=!h=i{O?taT{7@d|B7$C}QJ;Lo_Q+=_zy{k+?4wRCQu~i6k+#p+?chtV@_=S8p zzMw5VN;~DwpTY@YQe4x>&)U<7yzl@bP`v{d6xnLIHEK1_n_ad5)^esK=Wey_h zGadbDLw|7nzxm)mL2u#3NN)ZRYz85@g}TmRn)er}v(t&x>hALYR^hT8b>gcBpIe`a zN`2zV;J3sCZRz@IXDpYTl4A3@G~X{{LnD&MEbze&Tx!hrYtEd7&$})4s6%D~3-iyV6)47> zN))Eq_$qKEffVnKNLqO_A5VFRSd`cPk*-q#t(RBrps32lI-xx>QzJt2&Sb6pGs4k` zboc%{7q=mq)q;Y~l5N`H)Bgh5^(`E;h^t$aTRH~k^xlAIM=k05#|#p5Og>+Zgb8wg zKs>)AM0)C$_%`HuwE6)nKpzb7E#x^7a3bmM4{`7K6R#YQ5K%sh;RhKq@k*5~fDBfc z0A&}6_-!dp@pp8?70V2=o%2^T6J~z?C}y}@T~Y+>qlY#WdJXE`vqKVX07ung2e2~Q zkmR&&q--<_PApEx%@L2+Cy!0L-Vhm)Os>Nh0jq95?26mc*2)sYjGpd5I=Ax0HIMOS zFP-fcxuqXY&n&6GG%!>k>d~CN+A^IuGVki;a_(~GHqBsx+iCpEf?xRC94lN?Mn1VQ zrE;GQGPynfMUr77-G(`-XnU$ED;YvB;Xszgf@-W=w>tFhnTCN)YSCm?Mx%F4v-%4A!Z}}c{bZ^bK0szi#`?rw*0rI7^|$DTfsJZW z?*q>P_N74vue+-^-}hGih&wSD-|ccr7|-n3JoCcRB0R!lI| z?=^$J(%zNrgNz^x}4#~Cdt}C7Cw9cKQ_+7Jq zkAHn|{a!gOnbqC(l&29}$K9FzlH;|OPPy;-^ztUk;ClOBd#|cp1bYDS~X`^NPLUm8XAYv7wS N5F9}9uOi2u_zeXWZHfQ@ literal 0 HcmV?d00001 diff --git a/www/rating.pl b/www/rating.pl index fe97fd6..7d0a2e2 100755 --- a/www/rating.pl +++ b/www/rating.pl @@ -60,7 +60,8 @@ printf <<"EOF", $params{-3}, $match_stddev;

Modellparametre

-

For de som vet litt om slikt. Mer utførlig forklaring for begynnere kommer seinere.

+

For de som vet litt om slikt. Det finnes også en lengre, mer detaljert + forklaring beregnet på ikke-matematikere.

  • MLE-basert modell med én skalar (styrke) per spiller og to globale skalarer (begge standardavvik, se under), løst med syklisk MM (minorization-maximization). Antall iterasjoner før konvergens: $params{-1}.
  • diff --git a/www/ratings-explained.html b/www/ratings-explained.html new file mode 100755 index 0000000..4da3954 --- /dev/null +++ b/www/ratings-explained.html @@ -0,0 +1,179 @@ + + + WLoH-rating + + + +

    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) 1550 og Bjørn har 1500, + 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:

    + +

    + +

    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 1500 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 likelihool 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:

    + +

    + +

    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 1500 poeng, er det da rimelig + at David skal ha rating 1700 (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:

    + +

    + +

    Kurven her sier rett og slett at det er fÃ¥ av de aller beste og dÃ¥rligste spillerne; + de fleste ligger rundt 1500 noe sted. Det er rett og slett ikke veldig + rimelig at en spiller ligger rundt 1700 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 1500. 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å 1500. 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å 1500 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. tre sekunders + 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 kunne det være ønskelig + Ã¥ vite noe om usikkerheten i de estimerte ratingene, og dette + er ikke pÃ¥ plass ennÃ¥. Ei heller er det egentlig tatt hensyn til variabilitet + i folks prestasjoner (modellen antar at folk presterer pÃ¥ samme nivÃ¥ hele tiden), + og vi har ikke sagt noe om vekting av kamper (eldre kamper gis mindre betydning). + 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.

    + + -- 2.39.2