This is version . It is not the current version, and thus it cannot be edited.
[Back to current version]   [Restore this version]

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). 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.

-- 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

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

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

Add new attachment

Only authorized users are allowed to upload new attachments.
« This particular version was published on 26-Apr-2004 12:34 by 192.100.124.218.