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ää.
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ä.
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). 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ä. Se ei ole erityisen luettavaa.
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.
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
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?
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 |
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
En tunne optimointia kovin hyvin, mutta mitä tarkoitat konvergenssiin asti ajamisella? Ihmisten pelitaitohan kuitenkin muuttuu ajan funktiona.
-- Kari Visala
Puolitosissani voisin heittää, että jos laki sallisi, voisi toteuttaa vedonlyöntisysteemin, jossa vahvuusjärjestys veikataan. Vahvuusluvut määräytyisivät vedonlyöntikertoimista jollain tavoin. Toki silloinkin periaatteessa kaveria veikkaamalla voisi vaikuttaa McMahon -ryhmiin tms. mutta siitä ilosta joutuisi pulittamaan rahaa. Uskon sen verran ihmisen ahneuteen, että näkymätön käsi varmaan ohjaisi asiat oikealle mallilleen ihan itsestään. :)
-- Markku
Formuloisin kysymyksen seuraavasti:
- Oletetaan, että pelit pelataan rahasta.
- Oma panoksesi on 100 euroa. Paljonko vastustajan pitäisi panna panokseksi, että peli olisi tasapuolinen?
- Kyseinen kysymys toistetaan jokaisen vastustajan kohdalla.
-- Matti
Konvergenssilla tarkoitan sitä, että ratkaisun kokonaisvirhe ei enää pienene, vaikka iteroimista jatketaan. Yksi iteraatio siis tarkoittaa tässä yhteydessä koko tulosdatan läpikäymistä ja vastaavien muutosten tekemistä vahvuuslukuestimaatteihin. Totta on, että ihmisten pelitaito muuttuu ajan funktiona ja tämä menetelmä tekee nimenomaan päinvastaisen oletuksen. Tämän menetelmän tuloksena olisikin estimaatti keskimääräisistä vahvuuksista annetuissa peleissä eikä estimaatti vahvuuksista pelien jälkeen, mihin ilmeisesti ELO-tyyppinen menetelmä pyrkii.
Nopeasti kehittyvät pelaajat näyttävät olevan ongelma mille tahansa systeemille ja jos välttämättä halutaan "EGF-tesuji":n vastine tähänkin systeemiin, niin voidaan hyväksyä optimointidataksi vain pelejä viimeisellä luokituksella. Itse olen sitä mieltä, että on vain parempi, jos ammoiset turnaukset x-kyuna eivät vaikuta nykyiseen vahvuusestimaattiin mitenkään.
-- Timo