Zwitsers Systeem ???

User avatar
Henk de Witt
Posts: 1190
Joined: Sun Dec 14, 2003 22:45

Post by Henk de Witt » Sat Aug 04, 2007 12:46

Jan Pieter wrote:Dat Toernooimanager het niet aan kan, is een ander verhaal, maar in principe is het simpel te programmeren: vervang de behaalde punten door het puntgemiddelde (behaalde punten gedeeld door het aantal partijen) en vervang de weerstandspunten door het weerstandsgemiddelde (het gemiddelde van de puntgemiddeldes van de tegenstanders). Als alle deelnemers evenveel partijen gespeeld hebben, verandert er niets in de stand, maar is dat niet het geval, dan heb je een klassering op basis van gemiddelde.
Jan Pieter wrote:....en uit sportief oogpunt vind ik het in elk geval onaanvaardbaar dat degene met de meeste punten niet het toernooi wint.
Het principe dat iemand met minder punten toch hoger kan eindigen dan iemand met meer punten bestaat al in het moyenne-systeem, wanneer ook het gemiddelde tegenstandersmoyenne wordt meegewogen. Uiteraard doel ik niet op het aantal punten in absolute zin, maar op het aantal punten per partij, het moyenne dus. Ik meen dat vaak de formule wordt gehanteerd 2x eigen moyenne + 1x tegenstandersmoyenne : 3.

Is dit niet in wezen hetzelfde principe (afgezien van de wijze van berekenen) als waar Wouter het over heeft?

User avatar
Jan Pieter
Posts: 2430
Joined: Sat Sep 27, 2003 05:37
Real name: Jan Pieter Drost

Post by Jan Pieter » Sat Aug 04, 2007 14:13

Henk de Witt wrote:Het principe dat iemand met minder punten toch hoger kan eindigen dan iemand met meer punten bestaat al in het moyenne-systeem, wanneer ook het gemiddelde tegenstandersmoyenne wordt meegewogen. Uiteraard doel ik niet op het aantal punten in absolute zin, maar op het aantal punten per partij, het moyenne dus. Ik meen dat vaak de formule wordt gehanteerd 2x eigen moyenne + 1x tegenstandersmoyenne : 3.

Is dit niet in wezen hetzelfde principe (afgezien van de wijze van berekenen) als waar Wouter het over heeft?
Het gaat aardig in de richting. Een nadeeltje van het moyenne-systeem is dat een hoog tegenstandersgemiddelde niet alles zegt, omdat je tegenstanders een licht programma gehad kunnen hebben. TPR* heeft dat probleem niet, maar ik vermoed dat een eindstand volgens moyenne en tegenstandersmoyenne heel sterk overeenkomt met een eindstand volgens TPR*

Voor onderlinge competities vind ik dit een prima systeem. Omdat iedereen daar een verschillend aantal partijen speelt, ontkom je toch niet aan gemiddeldes en omdat er in onderlinge competities doorgaans meer rondes worden gespeeld dan in een toernooi zit het ook met de betrouwbaarheid wel goed. Tenslotte is het zo dat onderlinge competities voor buitenstaanders sowieso niet interessant zijn, dus de gebrekkige transparantie van het systeem is ook geen probleem.
Giwdul wrote:We nemen het NK junioren en het NK senioren (na 11 ronden) van dit jaar. Zie voor beide toernooitabellen toernooibase. We voegen deze twee tabellen samen en hebben een Zwitsers systeem waarin iedereen 11 partijen gespeeld hebben.

Jouw ideale ranglijst:

Steijlen, Meurs 16
Stapper, Thijssen 15
Palmans, vd Akker, Baljakin, Jansen 13
Timmer , Scholma, Meijer 12
Vogelaar, Derkx, Winkel, Kroesbergen 11
Rentmeester, Koopmanschap, Heusdens 10
Palmans, Berkel, Sekongo 9
Provoost 8
Schuitema, Stolwijk, Hezemans 7
Bos 6
Je doet wel erg je best om mijn kritiek op Zwitsers volgens TPR* niet te begrijpen. Uiteraard is dit hierboven niet mijn ideale ranglijst, net zomin als een rangschikking op TPR* in dit geval jouw ideale lijst is.

Waar het om gaat is dat jij steeds stelt dat een ranglijst volgens TPR* volstrekt eerlijk is. Ik stel daar tegenover dat zo'n ranglijst, net als een ranglijst op behaalde punten, tekortkomingen vertoont. Dat komt vooral doordat een toernooi te weinig partijen telt voor een betrouwbare TPR*. Het is niet voor niets dat je pas in de KNDB-ratinglijst wordt opgenomen na 25 partijen. In een toernooi worden er slechts 7 a 10 gespeeld, en feitelijk is de TPR* op nog minder partijen gebaseerd, omdat er sprake is van 'clustervorming': A speelt tegen B en C, en B speelt tegen C. Om aan te geven wat daar het gevolg van is, heb ik het extreme voorbeeld aangehaald van 6 spelers die in de eerste ronde wat middenmoters verslaan en vervolgens onderling remise spelen. Dat Zwitsers op punten dan eveneens ontspoort, spreekt voor zich.

En omdat Zwitsers op TPR* toch ook tekortkomingen vertoont en daarnaast enkele eigenschappen heeft die het onaantrekkelijk maken (ondoorzichtigheid, het feit dat je sterk afhankelijk bent van de resultaten van je ex-tegenstanders) zie ik er voor toernooien niets in. Maar ik denk dat ik maar ophoud met deze discussie. We vallen in herhaling. Ter afsluiting een telefoongesprek zoals dat zich voor zou kunnen doen wanneer TPR* in de damwereld wordt ingevoerd:

- Goedemiddag, Open NK dammen
- Goedemiddag, redactie Studio Sport. Wij denken erover om langs te komen nu Kees Thijssen zo lekker op dreef is. Liefst 13 punten uit 8 partijen en dus als koploper de slotronde ingegaan.
- Nou, nee. Hij heeft inderdaad 13 uit 8, meer dan enig ander, maar Valneris is koploper.
- Huh?
- Ja, we hebben hier een klassering volgens TPR*.
- Oh, nou, dat zal dan wel. En wat is er vandaag gebeurd?
- Valneris en Thijssen hebben beiden gewonnen.
- Dus Valneris is kampioen?
- Nee, dat is nog niet zeker. Dat hangt af van Jan Pieter Drost.
- Jan Pieter Drost, wie is dat, ook een grootmeester?
- Nee zeg, dat is een modale schuiver.
- En wat heeft die er mee te maken. Moet hij nog tegen Valneris en Thijssen?
- Nee, want dit is de slotronde. Maar eerder in het toernooi heeft hij tegen Thijssen gespeeld, en als Drost vandaag wint, gaat Thijssen Valneris alsnog voorbij.
- En gaat dat lukken?
- Onduidelijk. Er staat een theoretische remise op het bord, een zogeheten anti-Scouppe, maar we weten niet of zijn tegenstander het goed gaat doen.
- Met andere woorden, Thijssen heeft een punt meer dan Valneris, maar de vraag of een tegenstander van een ex-tegenstander een standaardremise beheerst, bepaalt of Thijssen het toernooi wint?
- U heeft het uitstekend begrepen. Hoe laat kunnen we u verwachten?
- Laat maar. We hebben besloten de cameraploeg naar het NK paalzitten te sturen.

User avatar
Arjen de Mooij
Posts: 976
Joined: Mon Sep 29, 2003 11:23
Location: Rijnsburg
Contact:

Post by Arjen de Mooij » Sat Aug 04, 2007 21:39

Ik kijk naar deze discussie met een geheel ander oog. Ik vind vooral het snel berekenen van de TPR* interessant. Van de week vroeg ik me al af of er niet een snel lineair (of niet exponentieel iig) algoritme voor te vinden was, maar ik ben maar snel gestopt met zoeken (ongetwijfeld is het er wel).

Vandaag bedacht ik dat de logische oplossing is om een evolutionair algoritme te gebruiken. Voor de leken onder ons zal ik even kort uitleggen wat dit is:

Het probleem is: vind voor een groep spelers ratings zodanig dat het verwachte aantal punten gelijk is aan het behaalde aantal punten.

De oplossing met een evolutionair algoritme.

Je genereert een x aantal willekeurige oplossingen voor het probleem. (genereer bijvoorbeeld 1000 ranglijsten waarin iedereen een willekeurige rating tussen 0 en 2000 heeft, zorg dat het gemiddelde op 1000 ligt).

Bepaal voor iedere oplossing hoe goed de oplossing is (in dit geval zou ik het het totale verschil tussen de behaalde score en de verwachte score, op basis van deze ratings nemen, dwz de som van de absolute waarden van deze verschillen per speler).

Neem nu de k beste oplossingen (dus bv de 50 oplossingen waarbij het totale verschil het kleinste is). Gooi de rest weg.

Laat deze oplossingen met elkaar voortplanten (voortplanten betekent: voeg de twee oplossingen samen zodanig dat er een nieuwe oplossing uitvloeit die een 'gemiddelde' is van deze twee ouders. In dit geval is een goede manier: neem het gemiddelde van de twee ratings in de ouderoplossingen).

Doe kleine willekeurige mutaties in de kinderen (bijvoorbeeld een kleine hoeveelheid rating erbij of eraf bij een aantal deelnemers, zorg dat de gemiddelde rating op duizend blijft).

Herhaal tot de beste oplossing goed genoeg.

De truuk zit hem bij deze algoritmen in twee dingen.

De beste oplossingen gekozen om voort te planten. Dit zorgt ervoor dat de hele groep met snel beter wordt.

De groep met oplossingen zal al snel op elkaar gaan lijken, maar daarom passen we de mutatie toe: wanneer een goede mutatie optreed (die dus een beter oplossing geeft) dan zal deze oplossing ook kinderen krijgen die betere oplossingen geven en zo gaat binnen een paar stappen de hele oplossingsgroep weer de betere kant op.

Ik heb het nu even heel debiel uitgelegd, maar waarschijnlijk is het wel enigszins begrijpelijk. Ik zal kijken of ik de komende dagen even iets kan programmeren om uit te testen of het ook echt werkt.

Piet Bouma
Posts: 3546
Joined: Sun Nov 02, 2003 13:05
Location: Harlingen

Post by Piet Bouma » Sat Aug 04, 2007 21:46

Arjen de Mooij wrote:Ik kijk naar deze discussie met een geheel ander oog. Ik vind vooral het snel berekenen van de TPR* interessant. Van de week vroeg ik me al af of er niet een snel lineair (of niet exponentieel iig) algoritme voor te vinden was, maar ik ben maar snel gestopt met zoeken (ongetwijfeld is het er wel).

Vandaag bedacht ik dat de logische oplossing is om een evolutionair algoritme te gebruiken. Voor de leken onder ons zal ik even kort uitleggen wat dit is:

Het probleem is: vind voor een groep spelers ratings zodanig dat het verwachte aantal punten gelijk is aan het behaalde aantal punten.

De oplossing met een evolutionair algoritme.

Je genereert een x aantal willekeurige oplossingen voor het probleem. (genereer bijvoorbeeld 1000 ranglijsten waarin iedereen een willekeurige rating tussen 0 en 2000 heeft, zorg dat het gemiddelde op 1000 light).

Bepaal voor iedere oplossing hoe goed de oplossing is (in dit geval zou ik het het totale verschil tussen de behaalde score en de verwachte score, op basis van deze ratings nemen, dwz de som van de absolute waarden van deze verschillen per speler).

Neem nu de k beste oplossingen (dus bv de 50 oplossingen waarbij het totale verschil het kleinste is).

Laat deze oplossingen met elkaar voortplanten (voortplanten betekent: voeg de oplossingen samen zodanig dat er een nieuwe oplossing uitvloeit die een 'gemiddelde' is van deze twee ouders. In dit geval is een goede manier: neem het gemiddelde van de twee ratings in de ouderoplossingen).

Doe kleine willekeurige mutaties in de kinderen (bijvoorbeeld een kleine hoeveelheid rating erbij in een aantal willekeurige kinderen).

Herhaal tot de beste oplossing goed genoeg.

De truuk zit hem bij deze algoritmen in twee dingen.

De beste oplossingen gekozen om voort te planten. Dit zorgt ervoor dat gemiddelde oplossing snel beter wordt.

De groep met oplossingen zal al snel op elkaar gaan lijken, maar daarom passen we de mutatie toe: wanneer een goede mutatie optreed (die dus een beter oplossing geeft) dan zal deze oplossing ook kinderen krijgen die betere oplossingen geven en zo gaat binnen een paar stappen de hele oplossingsgroep weer de betere kant op.

Ik heb het nu even heel debiel uitgelegd, maar waarschijnlijk is het wel enigszins begrijpelijk. Ik zal kijken of ik de komende dagen even iets kan programmeren om uit te testen of het ook echt werkt.
Kun je dat in php programmeren Arjen?
Het is de startbasis van elk ratingsysteem, en daarmee zou ik heel wat leuke dingen kunnen doen m.b.t. Toernooibase. (clubratingen, landenratingen etc. etc.).
Dat snelle berekenen leek mij ook het grote probleem. Via iteratie moet het volgens mij zo een 22 keer achter elkaar (heb ik ergens op een schaaksite ooit gelezen).

User avatar
Arjen de Mooij
Posts: 976
Joined: Mon Sep 29, 2003 11:23
Location: Rijnsburg
Contact:

Post by Arjen de Mooij » Sun Aug 05, 2007 11:14

Ik weet niet of ik je helemaal begrijp. Ik ga er even van uit dat je een tpr* wil berekenen voor alle mensen in je database op basis van alle uitslagen in de database.

Als ik het goed begrijp gebruik je:

1. Kies als tpr willekeurige rating voor iedereen

herhaal 2. Bereken op basis van de huidige tpr rating de nieuwe tpr voor iedereeen.

Ik begrijp eigenlijk nu pas dat Wouter dit bedoelde in een eerdere post.


bij het evolutionaire algoritme genereer ik dus al 1000 mogelijke oplossingen die allemaal geevalueerd moeten worden (dus 1000 keer alle uitslagen aflopen). Als het iteratief in 22 slagen kan, dan is dat, zeker voor een grotere groep, een veel betere oplossing. Zeker een kleine toernooisetting van 100 man die 9 ronden spelen, kost dat geen tot nauwelijks tijd. Voor toernooibase wordt het idd wat tricky om deze berekening na elke ingevoerde uitslagen uit te voeren. Ik zal nog eens verder denken.

Piet Bouma
Posts: 3546
Joined: Sun Nov 02, 2003 13:05
Location: Harlingen

Post by Piet Bouma » Sun Aug 05, 2007 12:13

Arjen de Mooij wrote:Ik weet niet of ik je helemaal begrijp. Ik ga er even van uit dat je een tpr* wil berekenen voor alle mensen in je database op basis van alle uitslagen in de database.

Als ik het goed begrijp gebruik je:

1. Kies als tpr willekeurige rating voor iedereen

herhaal 2. Bereken op basis van de huidige tpr rating de nieuwe tpr voor iedereeen.

Ik begrijp eigenlijk nu pas dat Wouter dit bedoelde in een eerdere post.


bij het evolutionaire algoritme genereer ik dus al 1000 mogelijke oplossingen die allemaal geevalueerd moeten worden (dus 1000 keer alle uitslagen aflopen). Als het iteratief in 22 slagen kan, dan is dat, zeker voor een grotere groep, een veel betere oplossing. Zeker een kleine toernooisetting van 100 man die 9 ronden spelen, kost dat geen tot nauwelijks tijd. Voor toernooibase wordt het idd wat tricky om deze berekening na elke ingevoerde uitslagen uit te voeren. Ik zal nog eens verder denken.
Het is niet zo dat ik na elke ingevoerde uitslag gelijk de gehele virtuele ratinglijst herbereken Arjen. (Overigens zou dat - besef ik nu ik dit schrijf - wel kunnen, maar dan via een andere programmatische opzet).
Dit gebeurt 1x per dag (nu ook weer handmatig, nadat een cron job soms voor problemen zorgde).
Wel worden de detailberekeningen per speler 'on the fly' gegenereerd.
Het berekenen van de gehele virtuele ratinglijst gaat nu nog razendsnel, maar aan het eind van het seizoen geeft dat toch meer 'server performance' c.q. wachttijd voor de gebruiker.
Is ook een kwestie van adequaat programmeren. Ik ben maar een amateur en zal soms omslachtige query's gemaakt hebben en onnodig gebruik van database forceren.

De TPR* kun je inderdaad voor alle wedstrijden gebruiken, maar het gaat natuurlijk ook om selecties (bijv. alle wedstrijden, die je in een aantal jaren in een onderlinge competitie bij een club hebt gespeeld).
Ik heb iets vergelijkbaars (de ranking) opgezet in Toernooibase. Die berekent per maandperiode een (gewogen) normale TPR. Momenteel zo'n 25 periodes. Daarvoor heb ik een programmaatje (meerdere query's) geschreven dat nu 1x per maand zo'n twintig minuten bezig is om alles uit te rekenen en op te slaan in de database.
Uitgangspunt voor die ranking is tot dusver de KNDB-rating per 1-7-2005. Maar eigenlijk moet het uitgangspunt de TPR* zijn (als er voldoende datapunten zijn).
En die TPR* moet in een basiscontrolegroep ook nog eens gekalibreerd worden per maandperiode.
Dus daarom ben ik ook zeer benieuwd naar een 'snelle' berekening van die TPR*.

Giwdul
Posts: 98
Joined: Sun May 01, 2005 15:43

Post by Giwdul » Mon Aug 06, 2007 10:50

Dat de ratingfunctie geen betrouwbare rating geeft over de ware speelkracht van een speler is wat mij betreft niet relevant. Dat is ook niet het primaire doel van de ratingfunctie. Het gaat mij om de verhouding punten/speelkracht. De rating geeft ongeveer aan hoe de speler tijdens het betreffende toernooi heeft gespeeld. (dat deze persoon in het verleden wereldkampioen geweest is interesseert me niet, hij moet tijdens dit toernooi presteren)

Dat de KNDB-rating pas opgemaakt kan worden na 25 partijen ligt er juist aan dat spelers tijdens het ene toernooi beter spelen dan tijdens het andere toernooi, dat ze soms geluk hebben en soms pech. Dat middelt zich na 25 partijen genoeg uit om een 'betrouwbare' speelkracht van de speler te kunnen bepalen.
Jan Pieter wrote: En omdat Zwitsers op TPR* toch ook tekortkomingen vertoont en daarnaast enkele eigenschappen heeft die het onaantrekkelijk maken (ondoorzichtigheid, het feit dat je sterk afhankelijk bent van de resultaten van je ex-tegenstanders) zie ik er voor toernooien niets in. Maar ik denk dat ik maar ophoud met deze discussie. We vallen in herhaling.
We verschillen duidelijk van mening. Hier gaan we ook niet meer van veranderen denk ik...

Volgens mij zit dat in de volgende dingen:

Jij vindt dat score altijd boven de tegenstanders moet gaan.
Ik vind dat wanneer iemand 'veel' sterkere tegenstanders gehad heeft, maar een lagere score heeft boven een speler met meer punten mag eindigen. (De ratingfunctie bepaalt de verhouding hiertussen, daar rangschikken we op)

Jij vindt dat het systeem niet doorzichtig is.
Ik ben het ermee eens dat het niet helemaal duidelijk is wat de invloeden van uitslagen zijn op de eindstand, maar ik vraag me af of dit een probleem is. We kunnen controleren of de oplossing klopt met een controleberekening.

Jij vindt dat je sterk afhankelijk bent van je tegenstanders.
Ik denk dat het in een niet-rond toernooi juist heel belangrijk is om alle uitslagen mee te nemen in de ranglijst, om een zo goed mogelijke ranglijst op te stellen. Over het aantal partijen dat je tegenstanders spelen in een toernooi middelt dat wel uit. In het Zwitsers systeem kan het er ook om hangen wat twee spelers onderin het uitslagenveld doen.
(remise van Valneris tegen Keurentjes en de uitslagen van de ex-tegenstanders van Valneris en Winkel bepalen de uitslag)

Jij vindt het niet te verkopen aan de derden. Leuk telefoongesprek trouwens...
Ik vind het niet te verkopen dat spelers met een goed toernooieinde sterke spelers voorbij schieten die voortdurend tegen elkaar hebben moeten spelen en minder kans hadden om te winnen.

Ik zou willen afronden met het volgende.

Het zwitsers op rating kan eenvoudig verbeterd worden. Bij gelijk eindigen moeten we kijken naar TPR ipv AOR. Ik zou zelf nog liever kijken naar TPR2 of TPR*. (dan zit je niet met de problemen van hoogvliegers, laagvliegers en mensen zonder rating)

Bij zwitserse toernooien met alternatieve tellingen (10-0, 9-1 5-5 etc of 1.5-0.5 etc) moet je TPR en nog liever TPR2 of TPR* voor laten gaan op aantal punten. (anders is het bijv. mogelijk om in de eennalaatste ronde uit te rekenen tegen wie je moet als je in de laatste ronde moet met 10-0 en 9-1 etc en kun je met de uitslag in een gewonnen stand je tegenstander uitkiezen) Je speelt de laatste ronde immers liever tegen een hoogvlieger dan tegen een grootmeester omdat je dan in de laatste ronde veel meer punten kunt verdienen dan dat je mist in de partij met het gewonnen eindspel.
Piet Bouma wrote:
Uitgangspunt voor die ranking is tot dusver de KNDB-rating per 1-7-2005. Maar eigenlijk moet het uitgangspunt de TPR* zijn (als er voldoende datapunten zijn).
Ik weet niet goed wat je van plan bent, het is me niet duidelijk wat je met de TPR* van plan bent. De TPR* maakt immers geen enkel onderscheid tussen partijen die 3 jaar gespeeld zijn en partijen die nu gespeeld worden. De TPR* houdt geen mutatie bij. De TPR* heeft volgens mij weinig met de hoeveelheid datapunten te maken...

User avatar
Arjen de Mooij
Posts: 976
Joined: Mon Sep 29, 2003 11:23
Location: Rijnsburg
Contact:

Post by Arjen de Mooij » Mon Aug 06, 2007 12:29

Piet Bouma wrote:
Arjen de Mooij wrote:Ik weet niet of ik je helemaal begrijp. Ik ga er even van uit dat je een tpr* wil berekenen voor alle mensen in je database op basis van alle uitslagen in de database.

Als ik het goed begrijp gebruik je:

1. Kies als tpr willekeurige rating voor iedereen

herhaal 2. Bereken op basis van de huidige tpr rating de nieuwe tpr voor iedereeen.

Ik begrijp eigenlijk nu pas dat Wouter dit bedoelde in een eerdere post.


bij het evolutionaire algoritme genereer ik dus al 1000 mogelijke oplossingen die allemaal geevalueerd moeten worden (dus 1000 keer alle uitslagen aflopen). Als het iteratief in 22 slagen kan, dan is dat, zeker voor een grotere groep, een veel betere oplossing. Zeker een kleine toernooisetting van 100 man die 9 ronden spelen, kost dat geen tot nauwelijks tijd. Voor toernooibase wordt het idd wat tricky om deze berekening na elke ingevoerde uitslagen uit te voeren. Ik zal nog eens verder denken.
Het is niet zo dat ik na elke ingevoerde uitslag gelijk de gehele virtuele ratinglijst herbereken Arjen. (Overigens zou dat - besef ik nu ik dit schrijf - wel kunnen, maar dan via een andere programmatische opzet).
Dit gebeurt 1x per dag (nu ook weer handmatig, nadat een cron job soms voor problemen zorgde).
Wel worden de detailberekeningen per speler 'on the fly' gegenereerd.
Het berekenen van de gehele virtuele ratinglijst gaat nu nog razendsnel, maar aan het eind van het seizoen geeft dat toch meer 'server performance' c.q. wachttijd voor de gebruiker.
Is ook een kwestie van adequaat programmeren. Ik ben maar een amateur en zal soms omslachtige query's gemaakt hebben en onnodig gebruik van database forceren.

De TPR* kun je inderdaad voor alle wedstrijden gebruiken, maar het gaat natuurlijk ook om selecties (bijv. alle wedstrijden, die je in een aantal jaren in een onderlinge competitie bij een club hebt gespeeld).
Ik heb iets vergelijkbaars (de ranking) opgezet in Toernooibase. Die berekent per maandperiode een (gewogen) normale TPR. Momenteel zo'n 25 periodes. Daarvoor heb ik een programmaatje (meerdere query's) geschreven dat nu 1x per maand zo'n twintig minuten bezig is om alles uit te rekenen en op te slaan in de database.
Uitgangspunt voor die ranking is tot dusver de KNDB-rating per 1-7-2005. Maar eigenlijk moet het uitgangspunt de TPR* zijn (als er voldoende datapunten zijn).
En die TPR* moet in een basiscontrolegroep ook nog eens gekalibreerd worden per maandperiode.
Dus daarom ben ik ook zeer benieuwd naar een 'snelle' berekening van die TPR*.
Euhmm laten we het nou even duidelijk krijgen:

1. De TPR* is de rating voor een groep spelers, waarbij de rating zo is dat de behaalde score voor elke speler gelijk is aan de verwachte score.
2. Wil je de TPR* voor kleine toernooien of voor de gehele database bereken of allebei. (voor de ranking heb je neem ik aan de gehele TPR* nodig, of alleen van de periode waarover de ranking wordt berekend?).
3. Convergeert het simpele algoritme hierboven (itereer ratingprestatie berekenen op basis van huidige rating)?
4. Indien ja, begrijp ik het goed dat het ongeveer 22 stappen vergt om op een bijna-optimale oplossing te belanden?

Indien 4 zo is, kan ik met niet voorstellen dat er een sneller algoritme is. Overigens gebruik jij bij toernooibase volgens mij de TPR zoals Jan Masselink die ook gebruikt (dus bereken gemiddelde rating, bereken gemiddelde score, zoek het ratingverschil bij deze score op in de tabel en tel op bij de gemiddelde rating). Deze manier voldoet niet aan de logsche definitie van prestatierating, dwz:

de rating waarbij de verwachte score gelijk is aan de nu behaalde score.

Dit, natuurlijk, omdat de ratingfunctie niet lineair is. De ratingfunctie is zelfs zo complex dat er geen inverse van bestaat en dat je zelfs deze TPR eigenlijk moet benaderen (maar dat hoeft ook niet meer 10 stappen te duren).

Bert Zwart
Posts: 2199
Joined: Tue Sep 30, 2003 01:52

Post by Bert Zwart » Mon Aug 06, 2007 14:44

Wouter,

Heb je aangetoond dat TPR* uniek is? Het lijkt me een vast punt van een niet-lineair stelsel vergelijkingen...

Het is natuurlijk duidelijk dat TPR* niet uniek is, omdat in ratings alleen verschillen van belang zijn. Dus laten we zeggen uniek op een constante na.

User avatar
Henk de Witt
Posts: 1190
Joined: Sun Dec 14, 2003 22:45

Post by Henk de Witt » Mon Aug 06, 2007 15:13

Jan Pieter wrote:
- Goedemiddag, Open NK dammen
- Goedemiddag, redactie Studio Sport. Wij denken erover om langs te komen nu Kees Thijssen zo lekker op dreef is. Liefst 13 punten uit 8 partijen en dus als koploper de slotronde ingegaan.
- Nou, nee. Hij heeft inderdaad 13 uit 8, meer dan enig ander, maar Valneris is koploper.
- Huh?
- Ja, we hebben hier een klassering volgens TPR*.
- Oh, nou, dat zal dan wel. En wat is er vandaag gebeurd?
- Valneris en Thijssen hebben beiden gewonnen.
- Dus Valneris is kampioen?
- Nee, dat is nog niet zeker. Dat hangt af van Jan Pieter Drost.
- Jan Pieter Drost, wie is dat, ook een grootmeester? (...enz.)
Als je de TPR* werkelijk gaat gebruiken dan presenteer je natuurlijk niet eerst de wedstrijdpunten. Daarmee zou je Studio Sport op het verkeerde been zetten. Nee, duidelijk wordt dat de TPR* de bepalende factor is. Dat zou je wel anders moeten noemen, bijvoorbeeld 'score' en die vet afdrukken in tegenstelling tot de wedstrijdpunten (als je die laatste nog zou willen vermelden). Dan nog zal de wijze van berekenen het publiek een zorg zijn. De scores van sporten als bridge en golf ontgaan mij volledig. Als niet-bridger en niet-golfer ben ik er eigenlijk ook niet zo in geïnteresseerd. Wel lees ik af en toe artikelen over bridgekampioenschappen, vooral als Nederlandse teams het goed doen. Als er intelligent geboden is, vind ik dat mooi, hoe dat ‘intelligent bieden’ gaat, daar weet ik niets van af. Golf zie ik af en toe op TV en als er een shot is van de kampioen die het balletje in een hole laat rollen, geloof ik graag dat deze de beste is. De puntenberekening bij een tienkamp in de atletiek gaat al helemaal boven mijn pet. Hoe vergelijk je hoogspringen met de 1500 meter. Daar komt ook enige hogere wiskunde aan te pas lijkt me. Toch mag ik graag naar deze superatleten kijken.

Ik ben het met je eens dat hoe doorzichtiger de score, hoe beter het is. Een rondtoernooi heeft die doorzichtigheid. Maar het spelen van een groot toernooi, waar alle deelnemers in één grote groep spelen, zonder alle andere tegenstanders te kunnen ontmoeten, heeft andere charmes en is zeer populair zoals blijkt. Het Zwitsers systeem is ook redelijk ondoorzichtig, gezien het feit dat spelers vaak ex aequo eindigen en weerstandspunten dan de doorslag geven. Maar dat nadeel wordt graag voor lief genomen. Dus als Thijssen in het Open NK met Zwitsers in de voorlaatste ronde in wedstrijdpunten gelijk zou staan met Valneris maar een voorsprong heeft van vijf weerstandspunten dan kun je in jouw stijl het volgende telefoongesprek met Studio Sport ensceneren:

‘Thijssen staat op kop, dus als hij vandaag wint is hij kampioen?’
‘Nou, dan maakt hij een goede kans, maar het is nog niet zeker’.
‘Niet zeker!? hij staat toch op kop?’
‘Jawel, maar als Valneris wint blijven ze gelijk in wedstrijdpunten en dan geven de weerstandspunten de doorslag’.
‘Weerstandspunten?’
‘Ja. Trouwens, even ter zijde, Thijssen moet vandaag tegen Baljakin, Valneris tegen Schwarzman. 90% kans dat beide partijen in remise eindigen. Dus grote kans dat het toernooi beslist wordt door weerstandspunten.’
‘Wat zijn dat voor dingen, die weerstandspunten?’
‘Nou, om het simpel te houden, als je hebt gespeeld tegen tegenstanders die goed scoren krijg je meer weerstandspunten dan als je wat mindere tegenstanders hebt gehad. Voor de rest rekent de computer alles netjes en eerlijk uit’.
‘Duidelijk. Maar hoe kan Valneris onze Kees dan nog voorbijgaan in weerstandspunten?’
‘Als de tegenstanders die Kees heeft gehad vandaag minder presteren dan die van Valneris. We maken ons vooral zorgen over Pieter-Jan Drost’.
‘Drost?’
‘Ja, een redelijke schuiver, maar niet echt een topper. Hij heeft echter het toernooi van zijn leven gespeeld, ook wat geluk gehad hier en daar, en gisteren stond hij nog derde, met evenveel wedstrijdpunten als Thijssen en Valneris, wel een stuk minder weerstandspunten’.
‘Okee, gisteren stond die Drost dus nog derde, en toen?’
‘Hij verloor van Kees. Hij is dertien plaatsen gezakt’.
‘Dertien punten gezakt door één verliespartij?’
‘Ja meneer, zo gaat dat soms, het leven is hard. Door tegen Kees te spelen heeft hij er flink wat weerstandspunten bij gekregen, maar omdat hij er zo weinig had, is hij toch gekelderd, want hij is op wedstrijdpunten ingehaald door een flink pelotonnetje met meer weerstandspunten. Alles nog duidelijk hoop ik?’
‘Volkomen helder, ik denk voor de luisteraars ook. Maar misschien moet u nog even uitleggen waarom u zich zorgen maakt over Drost in relatie tot de kampioenskansen van Kees’.
‘Simpel. Drost deed tot gisteren mee voor de eindzege. Stel dat Kees had geblunderd, Kees blundert soms wel eens moet u weten, dan had Drost nu aan de kop gestaan’.
‘Maar hij had toch veel minder weerstandspunten?’
‘Jawel, maar dan had hij een wedstrijdpunt meer gehad dan De Val’.
‘De Val, wie is dat nu weer?’
‘Oh sorry, zo noemen wij Valneris wel eens’.
‘Juist, maar u maakte zich zorgen over Drost...’
‘Oh ja. Door zijn vrije val van gisteren valt Drost nu waarschijnlijk helemaal uit de prijzen. De hele week als een monnik geleefd, voor niets meneer. Meteen na de partij begon hij al te zuipen, hij ging hier stomdronken weg. En nu hoor ik dat ie de hele nacht is doorgegaan. Hij kan geen witte van een zwarte schijf meer onderscheiden’.
‘En?’
‘Nou ja, die gaat verliezen natuurlijk! Dat kost Kees twee weerstandspunten, want De Val heeft niet tegen Drost gespeeld. Dan is het verschil nog maar drie piepkleine weerstandspuntjes. En DeVal heeft tegen Heusdens gespeeld, Kees niet, Heusdens staat erg laag voor zijn doen en heeft vandaag tegen De Witt geloot, een eitje. En...’
‘Het ziet er dus eigenlijk heel somber uit voor Kees?’
‘Heel somber meneer, eigenlijk is de kans dat Kees kampioen wordt minimaal. Tenzij hij vandaag van De Bal weet te winnen, maar die kans is minder dan 10%. Dan is de kans dat De Val van Schwarzman wint nog groter, die kans wordt door deskundigen op 11½% geschat’.
‘Nou luisteraars, u hoort het, onze Kees gaat op de valreep nog naast het kampioenschap grijpen. Helaas, maar er komen nog meer toernooien zullen we maar zeggen. En u, meneer de toernooi-directeur, hartelijk dank voor uw verhelderende toelichting’.

Dit soort interviews zijn dus niet aan TPR* gebonden, maar zouden al decennialang kunnen plaatsvinden. ‘Zouden kunnen’. Als ervaringsdeskundige kan ik melden dat het in werkelijkheid heel anders gaat. Gewoonlijk is er een informatief voorgesprek met een redacteur. Vaak is overigens de presentator al redelijk ingevoerd. Verder is de presentator een vakman die de spanning van het toernooi probeert over te brengen. Niet een Jan Doedel die het publiek gaat vermoeien met onbegrijpelijke (technische) details.

Dus Jan-Pieter, als spitsvondigheidje is jouw telefoongesprek leuk bedacht. Met de werkelijkheid van de sportjournalistiek heeft het niets te maken.

User avatar
Arjen de Mooij
Posts: 976
Joined: Mon Sep 29, 2003 11:23
Location: Rijnsburg
Contact:

Post by Arjen de Mooij » Mon Aug 06, 2007 15:39

Bert Zwart wrote:Wouter,

Heb je aangetoond dat TPR* uniek is? Het lijkt me een vast punt van een niet-lineair stelsel vergelijkingen...

Het is natuurlijk duidelijk dat TPR* niet uniek is, omdat in ratings alleen verschillen van belang zijn. Dus laten we zeggen uniek op een constante na.
Volgens mij noemt hij wel ergens dat het gemiddelde 1000 moet zijn ofzo. Dan is hij wel uniek lijkt me.

    User avatar
    Jan Pieter
    Posts: 2430
    Joined: Sat Sep 27, 2003 05:37
    Real name: Jan Pieter Drost

    Post by Jan Pieter » Mon Aug 06, 2007 15:50

    Henk de Witt wrote:Dit soort interviews zijn dus niet aan TPR* gebonden, maar zouden al decennialang kunnen plaatsvinden.
    Er is een belangrijk verschil: weerstandspunten spelen momenteel slechts een rol wanneer 2 spelers evenveel punten hebben. En dat er iets moet gebeuren wanneer 2 spelers gelijk eindigen, snapt iedereen: strafschoppen, doelsaldo, tie-break, jury-beslissing, neo-SB, noem maar op. We zijn er in de sport wel aan gewend.

    Maar dat zo'n tamelijk gezocht criterium belangrijker is dan de behaalde punten, is een onverkoopbaar novum. Jij stelt dat de punten dan maar niet meer vermeld moeten worden, maar hoe stel je je dat voor? Op teletekst staan de uitslagen en iedereen kan tellen dat Thijssen 5 overwinningen en 3 remises heeft, en dat Valneris een zege minder en een remise meer heeft. Aan de werkelijk geinteresseerden valt het natuurlijk wel uit te leggen (waarmee je overigens nog maar halfweg bent: ook al snap je het, dan hoef je het nog geen aantrekkelijk idee te vinden), maar als sport hoop je toch dusdanig pakkend nieuws te kunnen brengen dat je juist de niet geinteresseerden bereikt. Daarvan is bij TPR* geen sprake (net zomin als bij de Delftse telling; en nu val ik opnieuw in herhaling dus dit is dan echt mijn laatste bijdrage in deze discussie.)

    Casper van der Tak
    Posts: 734
    Joined: Fri Dec 19, 2003 02:05
    Location: Beijing / Laveno-Mombello

    Post by Casper van der Tak » Mon Aug 06, 2007 16:57

    Jan Pieter wrote: Maar dat zo'n tamelijk gezocht criterium belangrijker is dan de behaalde punten, is een onverkoopbaar novum.
    Precies. Het systeem is leuk, en op zich prima uit te leggen, maar te moeilijk voor matig geinteresseerden en/of matige intellecten.

    ildjarn
    Posts: 1529
    Joined: Tue Aug 22, 2006 15:38
    Real name: Joost de Heer

    Post by ildjarn » Mon Aug 06, 2007 19:03

    Casper van der Tak wrote:Precies. Het systeem is leuk, en op zich prima uit te leggen, maar te moeilijk voor matig geinteresseerden en/of matige intellecten.
    En dat is het voordeel van Delfts. Daar wordt ook een remise met een schijfje meer als 'winst' bestempeld. Je kan dan de ranglijst op TPR* baseren, en de punten als 'doelsaldo'. Dat zullen buitenstaanders (zelfs de voetbalfans!) best begrijpen. "A heeft de beste prestatie neergezet, maar B heeft meer doelpunten gescoord".
      Lasst die Maschinen verhungern, Ihr Narren...
      Lasst sie verrecken!
      Schlagt sie tot -- die Maschinen!

      Piet Bouma
      Posts: 3546
      Joined: Sun Nov 02, 2003 13:05
      Location: Harlingen

      Post by Piet Bouma » Mon Aug 06, 2007 19:09

      Arjen de Mooij wrote:
      Euhmm laten we het nou even duidelijk krijgen:

      1. De TPR* is de rating voor een groep spelers, waarbij de rating zo is dat de behaalde score voor elke speler gelijk is aan de verwachte score.
      2. Wil je de TPR* voor kleine toernooien of voor de gehele database bereken of allebei. (voor de ranking heb je neem ik aan de gehele TPR* nodig, of alleen van de periode waarover de ranking wordt berekend?).
      3. Convergeert het simpele algoritme hierboven (itereer ratingprestatie berekenen op basis van huidige rating)?
      4. Indien ja, begrijp ik het goed dat het ongeveer 22 stappen vergt om op een bijna-optimale oplossing te belanden?

      Indien 4 zo is, kan ik met niet voorstellen dat er een sneller algoritme is. Overigens gebruik jij bij toernooibase volgens mij de TPR zoals Jan Masselink die ook gebruikt (dus bereken gemiddelde rating, bereken gemiddelde score, zoek het ratingverschil bij deze score op in de tabel en tel op bij de gemiddelde rating). Deze manier voldoet niet aan de logsche definitie van prestatierating, dwz:

      de rating waarbij de verwachte score gelijk is aan de nu behaalde score.

      Dit, natuurlijk, omdat de ratingfunctie niet lineair is. De ratingfunctie is zelfs zo complex dat er geen inverse van bestaat en dat je zelfs deze TPR eigenlijk moet benaderen (maar dat hoeft ook niet meer 10 stappen te duren).
      Arjen,

      Ik weet niet of je de link <a href=http://toernooibase.kndb.nl/rating/ranking.php target=blank>Uitleg</a> bij het onderdeel ranking van Toernooibase al eens hebt gelezen.
      Daar staat het idee enigszins uitgelegd.
      De exact goede uitleg en formules vind je op de site van Jeff Sonas: <a href=http://db.chessmetrics.com/CM2/Formulas.asp target=blank>Chessmetrics</a>.
      Dan kun je concluderen dat Jeff Sonas voor zijn "weighted and padded simultaneous performance rating" de TPR* voor een periodieke berekening gebruikt.

      Zelf heb ik dit idee dus gekunsteld vervangen. Ik heb als startpunt de KNDB-rating per 1-7-2005 (ipv een 1e TPR*) gebruikt en gebruik de - inderdaad - andere manier van TPR berekenen, zoals Jan Masselink die ook hanteert.
      Wie de laatste rankinglijst per 31-7-2007 bekijkt, ziet ook gelijk de terkortkoming(en). S. Nasevich heeft een stijging gemaakt van plek 19 naar 2 op basis van zijn prestatie in Minsk 2007.
      En dat is dus op m.i. te weinig datapunten gebeurt, vanwege het uitgangspunt: KNDB-rating per 1-7-2005.
      Last edited by Piet Bouma on Mon Aug 06, 2007 19:47, edited 1 time in total.

      Post Reply