Newsgroup: it.hobby.scacchi
Titolo: Punto di vista sui sistemi di rating

Riflettendo sui sistemi di rating, mi sono venute alcune idee.
Prendiamo un gruppo di N (molto grande) giocatori, facciamoli giocare
tra loro moltissime volte e osserviamo tutti i rispettivi punteggi
percentuali ottenuti. E` corretto, come mi sembra, dire che il
migliore sistema di rating è quello che, dati tre giocatori a caso A,
B e C, prevede meglio il punteggio percentuale di A contro C
conoscendo i punteggi di A contro B e di B contro C?
J.


Per fare un esempio, prendiamo tra gli N giocatori A, B e C. A ha
ottenuto contro B un punteggio di 73% e B contro C ha ottenuto 64%.
Il sistema Elo dice cha A ha circa 175 punti più di B e che B ha circa
100 punti più di C (vedere 
http://www.fide.com/official/handbook.asp?level=B0210
).
Quindi, secondo Elo, A ha 275 punti più di C e quindi dovrebbe aver
ottenuto contro C circa l'83%.
Si facciano queste operazioni per ogni terna di giocatori e si calcoli
la differenza media tra predizione e risultato ottenuto, per
differenti funzioni di rating. La funzione che darà una differenza
quadratica media minore sarà la migliore.
Se qualcuno ha dei dati su un torneo con molti giocatori di forza non
troppo uniforme, che si sono affrontati in mini-match di almeno 10
partite, potrei divertirmi a fare questi calcoli con diverse funzioni,
tra cui quella di Sonas... Brunetti, conto su di te :-)
Ciao,
J.

 tra cui quella di Sonas... Brunetti, conto su di te :-)
Guarda, con mini match di 10 partite non ci fai praticamente niente. C'è  
troppa variabilità e potresti tranquillamente avere la famosa situazione  
delle scale reali :) Te ne servono centinaia e centinaia. Il discorso  
sarebbe applicabile anche a programmi di scacchi secondo te? Perché in  
questo caso se ne possono far svolgere quante ne vuoi e scegliendo fra  
centinaia di motori dalla forza più disparata.
Alex

 Alex
Ottima idea! Non ci avevo pensato. Sì, vale anche per i programmi!
J.

 Ottima idea! Non ci avevo pensato. Sì, vale anche per i programmi!
Benissimo. Se ti serve consulenza per creare dei match sono a  
disposizione. Se lo farai, ti suggerirei di usare programmi italiani  
(perché così rendi un servizio alla nostra comunità): ce ne sono quasi 40  
in grado di giocare partite a 1'+1", fra cui tale GiuChess :)
Alex

 in grado di giocare partite a 1'+1", fra cui tale GiuChess :)
Perfetto. Mi sembra che con Arena sia abbastanza agevole creare dei
match... o conosci di meglio? Quante partite ti sembrerebbero
appropriate per un mini-match? Una cinquantina? Hai una lista di link
di motori italiani?
Ciao,
J.

 Hai una lista di link di motori italiani?
Sì, quelli con la scritta OK: 
http://e4e6.com/c6/engines.php
 (il sito è  
molto in costruzione).
Alex

 molto in costruzione).
Ne ho scaricati una ventina, ma più di qualcuno non gira su Arena. Ho
deciso allora di prendere 20 motori con forza distribuita più o meno
uniformemente tra 1000 e 3000, ma non ho ancora la lista definitiva.
Mi piace l'idea di partire da una posizione a caso per evitare di
ripetere le stesse partite!
Ti/vi terrò aggiornati sullo svolgimento!
Giuliano

 Ti/vi terrò aggiornati sullo svolgimento!
Risultati parziali : 
http://g1ul14n0.free.fr/torn/part1.htm
Naturalmente aggiungerò al torneo altri motori...
Ciao,
J.

 Naturalmente aggiungerò al torneo altri motori...
Bene. Occhio che c'è una Delfi-Fruit di troppo (o forse avevi appena  
iniziato il quinto ciclo.)
Alex

 iniziato il quinto ciclo.)
Non preoccuparti : ho preso la classifica in un momento a caso,
all'inizio del quinto ciclo :)
Avevo dimenticato di specificare la cadenza : 1 5 (con incrementi
miniori, Rybka perde spesso per il tempo...). La posizione di apertura
la faccio caricare a caso dal database pgn che hai postato
recentemente, fino alla settima mossa.
Arena è veramente ottimo : permette di aggiungere motori e turni
quando si vuole, oltre a generare l'html per il tabellone.
Quando non ci saranno più risultati di 100% nel tabello(spero
presto... forza CyberPagno!), inizierò a fare qualche calcolo.
Ciao,
J.

Nuovo aggiornamento : 
http://g1ul14n0.free.fr/torn/part2.htm
Ciao,
J.

 Nuovo aggiornamento :
http://g1ul14n0.free.fr/torn/part2.htm
Il torneo è ora a due terzi e non ci sono più risultati di 100% nel
tabellone (CyberPagno è riuscito a strappare delle patte a Fruit e
Rybka). Ho calcolato l'errore medio nella previsione con la formula di
Elo e con la formula lineare.
Elo -> 9.9%
Lineare -> 11.8%
Tra qualche giorno metterò i dati in ordine su una pagina web...
Ciao,
J.

Classifica provvisoria : 
http://g1ul14n0.free.fr/torn/part3.htm
Ciao,
J.

Classifica finale : 
http://g1ul14n0.free.fr/torn/classifica.htm
Analisi a seguire...
Ciao,
J.

 Analisi a seguire...
Ecco : 
http://g1ul14n0.free.fr/torn/analisi.htm
Ho confrontato la funzione di rating di Elo con una lineare (con
differenza +800 si performa 100%).
Ho preso tutte le terne ordinate secondo la classifica finale.
L'errore medio della previsione con la formula di Elo è 7.059, con la
formula lineare 10.181%.
Se qualcuno ha altre funzioni di rating da proporre, posso testarle
senza problemi!
Ciao,
J.

 formula lineare 10.181%.
Scusate, avevo dimenticato Crafty : 6.894% / 8.899%
J.

 senza problemi!
Spiego un po' meglio come leggere l'analisi : prendiamo la prima terna
FR-RY-DE (Fruit, Rybka, Delfi), nelle prime tre linee della tabella.
Nella colonna "% SCORE" ci sono i punteggi percentuali *reali*
ottenuti negli scontri diretti. Nelle 2 colonne seguenti viene
calcolata la differenza di rating in funzione del punteggio
percentuale ottenuto nello scontro diretto, secondo la formula di Elo
e quella lineare.
Per esempio FR ha 0.44 contro RY, che corrisponde a una differenza
-41.894 Elo e -96 Lineare. Le due colonne successive indicano la
differenza di rating stimata in base alle altre due partite. Per
esempio FR ha, in termini di Elo, 275.452 (0.83) più di DE e RY ha
123.024 (0.67) più di DE, quindi FR dovrebbe avere 152.428 (275.452 -
123.024) più di RY e un punteggio atteso di 0.70629. Facendo lo stesso
calcolo con la formula lineare, la differenza di rating risulta 176 e
il punteggio atteso 0.66. Nelle ultime due colonne calcolo la
differenza tra il punteggio atteso e il risultato reale. Più è
piccola, più la funzione di rating si dimostra appropriata. Nel caso
citato, la funzione lineare fa un po' meglio.
Facendo la media, comunque, la formula di Elo si dimostra più
appropriata. Si vede bene, per esempio, nella terna FR-DE-KI. Il
sistema lineare stima la differenza tra FR e KI a 960 (>800), quindi
KI dovrebbe performare 0% contro FR!
Ciao,
J.

Un'ulteriore osservazione : le costanti che ho scelto per le formule
(400 per quella di Elo e 800 per quella lineare), sono arbitrarie, ma
avrei potuto usare qualsiasi numero > 0 ottenendo le stesse identiche
previsioni. Se qualcuno vuole "divertirsi a riprodurre i calcoli,
potete scaricare qui il programma perl che ho scritto :
http://g1ul14n0.free.fr/torn/analisi.txt
Spero che ad almeno uno qui dentro questo lavoro interessi :-)
Ciao,
J.