Tässä oma pieni ehdotukseni pelaajien vahvuusjärjestyksen ratkaisemiseksi. Tälle sivulle saa laittaa muitakin ehdotuksia luokitusjärjestelmän parantamiseksi. Sivulla [Luokitusten Parantelua] on esitetty vaatimuksia/toiveita, jotka hyvän luokitusjärjestelmän tulisi täyttää.

-- [Antti Tarvainen]

----

Mielestäni Elo-pisteiden (gorrien ja muiden siis) laskeminen turnauspelien perusteella pikkukyuita heikommille on turhaa. Suurin osa heikoista pelaajista kehittyy niin nopeasti, että pisteet laahaavat pahasti perässä. (Resetit tai toisaalta KGS:n algoritmi ratkaisevat tämän ongelman osittain, mutta niistä aiheutuu muita ongelmia.) Sen sijaan vahvoille, tasaisemmille pelaajille Elo-pisteet sopivat yhtä hyvin kuin shakkiin.

Oma ehdotukseni on siis, että vain tietyn tason saavuttaneet otettaisiin mukaan pistejärjestelmään. Raja voisi olla esimerkiksi 3 kyu. Mitään resettejä ei olisi. Pelaajan aloituspisteet määräytyisivät muutaman ensimmäisen pelin perusteella. Kuten Kari ja Paavokin sivulla [Luokitusten Parantelua] huomauttivat, tasoituspelejä ei saa kauniisti yhdistettyä Elo-järjestelmään. Niinpä mielestäni järjestelmään pitäisi ottaa mukaan vain tasa-avauspelit.

Joku, jolla on viitseliäisyyttä, voisi tehdä kikkareen, joka laskee tällaiset ratingit Suomessa pelatuista tasa-avausturnauksista. Jos aikaa joskus löytyy, saatan tehdä itsekin.

Ongelmia:
* Koska pelaajat kehittyvät, eikä uusia pisteitä tule järjestelmään, pisteet deflatoituisivat ajan myötä. Se ei ole ongelma, jos pelaajapopulaatio ei ole pahasti taskuuntunut ja pisteitä käytetään vain rankingissa mukana olevien keskinäiseen vertailuun. Ja olisihan sen deflaation estämiseen tietenkin keinoja, esim. pitämällä järjestelmän pisteiden keskiarvo vakiona.
* Niiden pelaajien valinta, jotka pääsevät järjestelmään (ts. korotus 3 kyuhun), jäisi edelleen ihmisten tehtäväksi.
* Nopeasti kehittyvien pelaajien pisteet laahaisivat edelleen perässä. Tälle on hankala tehdä mitään, koska ei voi tietää, johtuuko poikkeuksellisen hyvä menestys tuurista vai aidosta kehittymisestä. Järjestelmän pelaajista vain hyvin pieni osa olisi nopeasti kehittyviä.

-- [Antti Tarvainen]

Mielestäni rajan voisi laittaa korkeammallekin kuin 3 kyuhun. Ehkä 1 kyu tai 2 kyu sopisivat. GoR ei muuten ole enää dan- ja ylemmillä kyu-tasoilla niin kauhean hidas kuin voisi näiden keskustelujen perusteella ajatella. Esimerkiksi minä menetin yhteensä 70 pistettä Kanikuutosessa ja Takapotkussa, koska pelasin niin huonosti. 70 pistettä on reilusti yli puoli kiveä. Dan-tasolla se ainakin näyttäisi toimivan ihan hyvin ilman mitään resettejäkin. Ongelmaksi silloin tulee tietysti kansainvälinen vertailtavuus mutta sepä oli Antin ideasta tarkoituksellisesti ulos rajattukin.

-- Markku
 

Tein itse pikaisesti ohjelmanpätkän, joka laskee vahvuudet yllä kuvatulla tavalla. Sain tällaisen listan (mukana vain ne, joilla on vähintään 25 peliä ja ovat pelanneet 1.1.2003 jälkeen):

|| pelaaja || pisteet || pelit || voitot || tappiot 
| Laatikainen, Vesa | 1273 | 134 | 106 | 28
| Siivola, Matti | 1153 | 145 | 99 | 46
| Törmänen, Antti | 1092 | 31 | 23 | 8
| Paatero, Lauri | 1068 | 111 | 59 | 52
| Lounela, Olli | 1064 | 94 | 55 | 39
| Visala, Kari | 1048 | 55 | 33 | 22
| Jantunen, Kare | 1043 | 54 | 29 | 25
| Holappa, Antti | 1015 | 51 | 27 | 24
| Niskanen, Einari | 998 | 33 | 17 | 16
| Salo, Tuomo | 992 | 41 | 22 | 19
| Brockman, Marko | 988 | 29 | 13 | 16
| Puha, Timo | 987 | 71 | 43 | 28
| Alanko, Otso | 986 | 62 | 31 | 31
| Viljanen, Joose | 972 | 45 | 22 | 23
| Hirsimäki, Teemu | 968 | 61 | 30 | 31
| Virtanen, Jaakko | 956 | 38 | 18 | 20
| Jantunen, Markku | 944 | 136 | 69 | 67
| Suorsa, Seppo | 942 | 42 | 21 | 21
| Kauppi, Ari | 934 | 34 | 12 | 22
| Hippeläinen, Eero | 931 | 26 | 9 | 17
| Rovio, Teemu | 921 | 65 | 27 | 38
| Aapola, Lauri | 896 | 63 | 25 | 38
| Reijola, Timo | 893 | 67 | 28 | 39
| Karppinen, Ari | 871 | 91 | 32 | 59
| Pietarila, Paavo | 852 | 75 | 25 | 50
| Kohonen, Sari | 847 | 41 | 12 | 29

Käytin datana 64 Suomessa pelattua tasa-avausturnausta (otin ne [Paavon pullauttimesta|http://www.ee.oulu.fi/~paavo/go/voittotilastot/voittotilastot.cgi]). Vain sellaiset pelit huomioitiin, joissa molemmat pelaajat olivat tasoltaan vähintään 3 kyu. Aloituspistemäärä uusille pelaajille oli 1000, mutta niin että 25 ensimmäistä peliä eivät vaikuttaneet vastustajan pistemäärään lainkaan (paitsi jos vastustajallakaan ei ollut 25 peliä). Pelaajien pistemäärä ja uuden pelaajan status päivitettiin vain turnausten välissä, ei niiden aikana.

Pelit-sarake kertoo 3 kyuita tai vahvempia vastaan pelattujen pelien määrän (mukaanlukien ne pelit, jotka eivät vaikuttaneet pelaajan pistemäärään, koska vastustajalla ei ollut 25 peliä).

Pisteitä päivitettiin seuraavalla funktiolla:

{{{
def laskePistemuutos(pelaajanPisteet, vastustajanPisteet, tulos):
    ennuste = 1. / (1. + 10 **((vastustajanPisteet - pelaajanPisteet) / 400.))
    muutos = 0
    if tulos == "+":
        muutos = ELO_K_ARVO * (1. - ennuste)
    elif tulos == "-":
        muutos = - ELO_K_ARVO * ennuste
    else:
        muutos = ELO_K_ARVO * (.5 - ennuste)
    return muutos
}}}

Laitoin ELO_K_ARVOksi 20. Sen muuttaminen muuttaa listaa radikaalisti. Mitä suurempi arvo, sen herkempi pistemäärä on.

Lähdekoodi on saatavilla [täältä|http://www.cs.tut.fi/~tarvaina/elogo.zip]. Se ei ole erityisen luettavaa.

-- [Antti Tarvainen]

Miksi tuossa listassa on noin vähän pelaajia? Siksikö, että muilla yli 3 kyun pelaajilla ei ole vähintään 25 peliä? 

-- Markku

Siksi (tai tarkemmin sanottuna siksi, ettei muilla yli 3 kyun pelaajilla ole vähintään 25 peliä 3 kyuna tai parempana muita 3 kyuita tai parempia vastaan). Kaiken kaikkiaan listalla olisi noin 120 nimeä. Ohjelmani myös jäsenteli muutaman turnauksen väärin aiemmin. Korjasin yllä olevan listan niin, että nekin turnaukset tulivat nyt kunnolla mukaan. Ei kannata kuitenkaan luottaa siihen, että nykyinenkään lista olisi ihan oikein.

-- [Antti Tarvainen]

Vihdoinkin vahvuuslukulista, jossa kaikki ovat lähdössä samalla viivalla ja vahvuusluku määräytyy pelisuoritusten, eikä esimerkiksi korotushistorian (kuten gorrissa), mukaan. Vahvuusluvun määräytymiskriteereissä yms. lienee vielä, kuten aina, optimoinnin varaa. Tätä voi kuitenkin jo kutsua vahvuuslukulistaksi vakavalla naamalla. En väitä, että tämän listan antama ennuste on tarkempi kuin GoRin antama, sanon vain, että tämä lista täyttää joitain vahvuuslukulistan perusvaatimuksia, joita GoR ei mielestäni täytä.

-- Jaakko Virtanen

Vähän hassulta tuo lista vaikuttaa. Esim. en saa lasketuksi Matille 46 tappiota suomalaisia vastaan.

-- [Antti|Antti Holappa]

14 Matin tappioista onkin ulkomaalaisia vastaan. Otin siis listaan mukaan Suomessa pelatut turnaukset, enkä ruvennut lajittelemaan ketkä pelaajista ovat suomalaisia ja ketkä ulkomaalaisia. Useimmat ulkomaalaiset ovat pelanneet alle 25 peliä eivätkä ole siten vaikuttaneet Matin pisteisiin suoraan. Poikkeus on Viktor Bogdanov, joka ei listalla ole sen takia, ettei ole pelannut vuoden 2003 alun jälkeen. Hän olisi listalla toisena Vesan ja Matin välissä.

Olisiko parempi, ettei ulkomaalaisia vastaan pelattuja pelejä huomioida lainkaan?

-- [Antti Tarvainen]

Olisi. Ulkomaalaisten kanssa pelatut pelit eivät saa vaikuttaa suomalaisten keskinäiseen järjestykseen millään lailla. Kuinka radikaalisti vakioparametrin muuttaminen muuttaa listaa? Jos esimerkiksi parametri on 30, niin millainen listasta tulee?

Toiseksi, entä jos 25 pelin rajaksi laitetaan 15? Samalla tietysti pelaajia tulee lisää ja häntäpäässä ratingin tarkkuus kärsii, jolloin sieltä voisi poistaa ainakin 3 kyut.

-- Markku

Tässä on lista kokeiltuna k-parametrin eri arvoilla.

|| 5 || || 10 || || 20 || || 40 || || 80 || || 160 ||
| Laatikainen, Vesa | 1103 | Laatikainen, Vesa | 1175 | Laatikainen, Vesa | 1273 | Laatikainen, Vesa | 1397 | Laatikainen, Vesa | 1557 | Laatikainen, Vesa | 1767
| Siivola, Matti | 1059 | Siivola, Matti | 1101 | Siivola, Matti | 1153 | Siivola, Matti | 1199 | Paatero, Lauri | 1292 | Paatero, Lauri | 1450
| Törmänen, Antti | 1031 | Törmänen, Antti | 1055 | Törmänen, Antti | 1092 | Paatero, Lauri | 1163 | Siivola, Matti | 1223 | Lounela, Olli | 1406
| Lounela, Olli | 1016 | Lounela, Olli | 1032 | Paatero, Lauri | 1068 | Törmänen, Antti | 1139 | Lounela, Olli | 1206 | Törmänen, Antti | 1285
| Visala, Kari | 1014 | Visala, Kari | 1026 | Lounela, Olli | 1064 | Lounela, Olli | 1117 | Törmänen, Antti | 1199 | Jantunen, Kare | 1259
| Puha, Timo | 1007 | Paatero, Lauri | 1018 | Visala, Kari | 1048 | Jantunen, Kare | 1098 | Jantunen, Kare | 1174 | Visala, Kari | 1251
| Jantunen, Kare | 1007 | Jantunen, Kare | 1017 | Jantunen, Kare | 1043 | Visala, Kari | 1084 | Visala, Kari | 1145 | Siivola, Matti | 1238
| Niskanen, Einari | 1003 | Holappa, Antti | 1004 | Holappa, Antti | 1015 | Holappa, Antti | 1038 | Holappa, Antti | 1069 | Holappa, Antti | 1078
| Holappa, Antti | 1001 | Puha, Timo | 1004 | Niskanen, Einari | 998 | Alanko, Otso | 1004 | Alanko, Otso | 1039 | Brockman, Marko | 1076
| Paatero, Lauri | 1001 | Niskanen, Einari | 1003 | Salo, Tuomo | 992 | Brockman, Marko | 989 | Brockman, Marko | 1013 | Alanko, Otso | 1062
| Salo, Tuomo | 1000 | Salo, Tuomo | 999 | Brockman, Marko | 988 | Niskanen, Einari | 981 | Salo, Tuomo | 958 | Salo, Tuomo | 943
| Viljanen, Joose | 995 | Brockman, Marko | 992 | Puha, Timo | 987 | Salo, Tuomo | 977 | Niskanen, Einari | 947 | Puha, Timo | 904
| Brockman, Marko | 995 | Viljanen, Joose | 989 | Alanko, Otso | 986 | Puha, Timo | 953 | Hirsimäki, Teemu | 924 | Hirsimäki, Teemu | 875
| Hirsimäki, Teemu | 993 | Hirsimäki, Teemu | 985 | Viljanen, Joose | 972 | Hirsimäki, Teemu | 943 | Puha, Timo | 917 | Niskanen, Einari | 865
| Suorsa, Seppo | 991 | Alanko, Otso | 984 | Hirsimäki, Teemu | 968 | Viljanen, Joose | 939 | Viljanen, Joose | 891 | Viljanen, Joose | 848
| Virtanen, Jaakko | 989 | Virtanen, Jaakko | 978 | Virtanen, Jaakko | 956 | Jantunen, Markku | 929 | Jantunen, Markku | 887 | Virtanen, Jaakko | 843
| Alanko, Otso | 989 | Suorsa, Seppo | 978 | Jantunen, Markku | 944 | Virtanen, Jaakko | 921 | Virtanen, Jaakko | 883 | Aapola, Lauri | 829
| Kauppi, Ari | 982 | Kauppi, Ari | 965 | Suorsa, Seppo | 942 | Hippeläinen, Eero | 889 | Aapola, Lauri | 849 | Rovio, Teemu | 824
| Hippeläinen, Eero | 980 | Hippeläinen, Eero | 962 | Kauppi, Ari | 934 | Kauppi, Ari | 886 | Hippeläinen, Eero | 848 | Hippeläinen, Eero | 757
| Rovio, Teemu | 976 | Jantunen, Markku | 958 | Hippeläinen, Eero | 931 | Rovio, Teemu | 879 | Rovio, Teemu | 845 | Jantunen, Markku | 754
| Jantunen, Markku | 973 | Rovio, Teemu | 955 | Rovio, Teemu | 921 | Suorsa, Seppo | 863 | Kauppi, Ari | 823 | Reijola, Timo | 752
| Reijola, Timo | 967 | Reijola, Timo | 938 | Aapola, Lauri | 896 | Aapola, Lauri | 863 | Reijola, Timo | 779 | Kauppi, Ari | 723
| Aapola, Lauri | 962 | Aapola, Lauri | 934 | Reijola, Timo | 893 | Reijola, Timo | 834 | Suorsa, Seppo | 749 | Suorsa, Seppo | 625
| Karppinen, Ari | 958 | Karppinen, Ari | 924 | Karppinen, Ari | 871 | Karppinen, Ari | 799 | Pietarila, Paavo | 709 | Pietarila, Paavo | 610
| Kohonen, Sari | 953 | Kohonen, Sari | 913 | Pietarila, Paavo | 852 | Pietarila, Paavo | 783 | Karppinen, Ari | 709 | Karppinen, Ari | 585
| Pietarila, Paavo | 949 | Pietarila, Paavo | 909 | Kohonen, Sari | 847 | Kohonen, Sari | 757 | Kohonen, Sari | 654 | Kohonen, Sari | 551 

-- [Antti Tarvainen]

Olisiko parempi, jos alle 25 peliä pelanneen pelaajan vaikutus muiden pelaajien luokituksiin kasvaisi vähitellen, 0 peliä pelanneen vaikutus olisi 0%, 1 peliä pelanneella 4%, 2 peliä pelanneella 8% (siitä mitä se on 25 peliä pelanneella)? Näin pelaajan merkitys kasvaisi 25 pelin aikana vähitellen täyteen voimaansa. Nyt vaikkapa 23 peliä pelanneen pelaajan vaikutus muiden (yli 25 peliä pelanneiden) luokituksiin on 0, vaikka selvää on, että hänen lukunsa on lähes yhtä varmasti "oikea" kuin 25 peliä pelanneella pelaajalla...

Ihan mielenkiinnosta, vaikkapa yli 15 peliä pelanneet voisivat näkyä listalla ?-merkki vahvuuslukunsa perässä goservereiden tyyliin, ihan vaan mielenkiinnosta... 

Ja aiheen sivusta, pullauttimesta puuttuvat ainakin 2001 ja 2002 Turunmestaruuskisat ja karsinnat (hyi Paavoa! :). Jos ne laskettaisiin, saisikohan Aapo tai Jan-Krister 25 peliä täyteen ja nousisi listalle...?

-- Jaakko

No hyi minua. Nytpäs kuitenkin ovat Turunmestaruudet + karsinnat myös vuodesta 2001 etiäppäin pullauttimessa. Auttaako?

--paavo

Minusta 25 peliä on ehkä liian korkea raja. 15 näyttäisi olevan sikäli sopivampi, että kärkipelaajien joukossa ei ole juuri ketään, jolla olisi vähemmän kuin 15 peliä mutta alle 25 peliä pelanneita on paljon. Millä tavoin systeemi käyttäytyisi, jos raja laskettaisiin 15 peliin?

-- Markku

Kun tämä Antin systeemi kohtelee mua näin kaltoin (tosin viimeisen vuoden ajalta hyvinkin oikeutetusti), niin kaipa asiaan pitää jotain kommentoida ;-) Älkää uskoko kaikkea seuraavasta ihan purematta, siitä on muutama vuosi kun olen näitä optimointijuttuja ajatellut tarkemmin ja en lukenut koko koodia.

Käsittääkseni toi ELO-tyyppinen vahvuusluvun laskentamenetelmä on joka tapauksessa gradient descent-tyyppinen optimointialgoritmi, jolle data annetaan tasan kerran aikajärjestyksessä. Näinhän saadaan lukuja, jotka ovat todennäköisesti liikuneet oikeaan suuntaan lähtötilanteesta, mutta mitään muita takeita ei ole. Nämä luvut ovat kuitenkin optimoinin kannalta aika epäilyttäviä, koska konvergenssiin ei edes pyritä ja saatavilla olevan hyvin pienen datasetin käyttäminen vain kerran tuntuu haaskaukselta. 

Ehdottaisin siis, että samaa algoritmia (tai pikkaisen puukotettuna, niinkuin pienenevä muutoskerroin ja muita normaaleja viilauksia) ajettaisiin konvergenssiin asti. Lisäksi koska kyseessä näyttäisi olevan epälineaarinen virhefunktio, niin globaalia optimia tuskin saavutetaan noista arvatuista (kaikilla 1000) arvoista lähtien, vaan optimointi pitäisi tehdä useita kertoja satunnaisista lähtöarvoista lähtien ja valita näistä se, jossa kokonaisvirhe on pienin. Käsittääkseni näin saataisiin pelaajille vahvuusluvut, joissa virhe on pienin, mitä kykenemme löytämään. Tietysti rankempiakin optimointialgoritmeja voi tuoda pöytään, jos joku jaksaa niitä toteuttaa. Tärkeämpänä pointtina tässä lienee se, että tällainen konvergenssiin ajetun optimoinnin tulos tuntuu paremmalta vahvuusluvulta, kuin kuitenkin aika adhoc ELO-systeemi.

Jos taas palataan matematiikasta takaisin Go:hon, niin eihän tollasetkan luvut ongelmattomia olisi. Toi systeemihän ei ottaisi mitenkään huomioon kehittymistä, vaan sen antama luku olisi vain paras arvio vahvuudesta annetuissa peleissä. Virallisina vahvuuslukuina voisi siis käyttää vaikka edellisen vuoden datan tuottamia vahvuuksia. Tollasen systeemin tulokset olisi kyllä kiva nähdä, jos vaan jollakin on intoa niitä toteuttaa. Matemaattisestihan tollanen systeemi olisi käsittääkseni paremmin perusteltu kuin ELO-tyyli ja kaikenlaisia loppujärjestykseen merkittävästi vaikuttavia hiha-vakioita tarvittaisiin ainakin vähemmän. Tiedän lukijakunnassa olevan alan asiantuntijoita, joten toivottavasti joku kommentoi idean järjellisyyttä.

--Timo Puha