Vedonlyöntimallin aikasarjatestaus – miksi satunnainen jako vääristää tuloksia?

Vedonlyöntimallin testiaineiston pitää kuvata tietoa, joka olisi ollut käytettävissä juuri ennen ennustettavaa ottelua. Jos mallia opetetaan satunnaisesti valituilla tulevaisuuden peleillä ja testataan aikaisempien pelien ennusteilla, tulos voi näyttää liian hyvältä. Aikasarjatestauksessa oppimiseen käytetään mennyttä ja arviointiin ajallisesti myöhempää aineistoa. Tämä on olennaista erityisesti silloin, kun joukkueiden voimasuhteet, pelaajat ja kilpailuympäristö muuttuvat kauden aikana.

Otteludata on aikajärjestyksessä syntyvää tietoa. Siinä voi esiintyä myös riippuvuuksia: saman joukkueen lähekkäiset ottelut, tiivis otteluohjelma ja loukkaantumistilanteet eivät ole toisistaan irrallisia tapahtumia. Hyvin toteutettu testi pyrkii jäljittelemään ennusteen todellista tekohetkeä eikä hyödyntämään myöhemmin saatua tietoa.

Mitä aikasarjatestaus tarkoittaa?

Aikasarjatestauksessa aineisto jaetaan aikajärjestykseen niin, että mallin koulutusjakso päättyy ennen testijaksoa. Scikit-learnin TimeSeriesSplit-dokumentaatio määrittelee menetelmän tilanteisiin, joissa tavallinen satunnainen ristiinvalidointi ei sovellu aikaan sidottuun aineistoon. Perusmallissa koulutusjakso kasvaa vaiheittain ja kukin testijakso sijaitsee sitä myöhemmässä ajassa.

Esimerkiksi kauden ensimmäisestä osasta voidaan rakentaa malli ja seuraavista otteluista muodostaa testi. Seuraavassa vaiheessa aiemmin testattu, jo päättynyt jakso voidaan lisätä koulutusaineistoon ja arvioida uutta myöhempää jaksoa. Menettelyä kutsutaan myös eteneväksi tai laajenevan ikkunan testaukseksi. Se muistuttaa käytännön ennustustyötä paremmin kuin koko otteluhistorian sekoittaminen yhteen.

Aikasarja ei kuitenkaan automaattisesti tee testistä oikeaa. Jos muuttujat on laskettu koko kauden lopullisista keskiarvoista, tulevien otteluiden tieto voi vuotaa ennusteeseen, vaikka varsinainen testijako olisi tehty ajallisesti.

Miksi satunnainen aineiston jako voi johtaa liian hyvään tulokseen?

Satunnaisessa jaossa saman joukkueen myöhempiä otteluita voi päätyä koulutusaineistoon samalla, kun mallin laatua arvioidaan aikaisemmista otteluista. Näin mallilla on epäsuorasti käytössään tietoa, joka ei olisi ollut olemassa ennakkohetkellä. Scikit-learnin ristiinvalidointioppaassa huomautetaan, että aikasarjojen lähekkäiset havainnot voivat korreloida eikä tavanomainen satunnaisjako siksi anna realistista kuvaa yleistymiskyvystä.

Ongelma näkyy esimerkiksi pelaajakokoonpanon muutoksissa. Jos joukkue vahvistuu merkittävästi kesken kauden, myöhemmistä otteluista laskettu joukkueen keskiarvo ei kuvaa sen alkuvuoden tilannetta. Silti tällainen keskiarvo saattaa päätyä mallin taustamuuttujaksi, jos kaikkien otteluiden tilastoja käytetään huolimattomasti.

Vaaraa kasvattaa se, jos samaa ottelua kuvataan aineistossa useilla riveillä. Kotijoukkueen ja vierasjoukkueen näkökulmasta muodostetut rivit eivät saa päätyä eri puolille koulutus- ja testijakoa niin, että testattavan ottelun lopputuloksesta muodostettu ominaisuus vuotaa koulutukseen.

Miten data vuotaa ennustemalliin?

Aineistovuoto tarkoittaa sitä, että koulutus- tai ennustusprosessissa käytetään tietoa, jota ei olisi oikeasti pitänyt olla saatavilla. Vuoto ei edellytä tahallista virhettä. Se voi syntyä esimerkiksi silloin, kun kaikkiin otteluihin liitetään kauden lopullinen sarjasijoitus, koko kauden maaliodottama tai jälkikäteen korjatut kokoonpanotiedot.

Toinen vuodon lähde on tilastomuuttujien normalisointi koko aineistolla ennen jakoa. Jos keskiarvo ja keskihajonta lasketaan myös tulevasta testijaksosta, testitieto vaikuttaa jo mallin esikäsittelyyn. Sama koskee muuttujien valintaa: jos hyödyllisimmät ominaisuudet etsitään koko aineiston tuloksia vertaamalla, riippumaton testi ei enää ole riippumaton.

Ratkaisu on rakentaa jokainen vaihe niin, että testijakso pysyy erillään. Ottelun tietorivi on koostettava sen aikaleiman mukaan, jolloin arvio olisi käytännössä tehty. Kaikki myöhemmin päivittyvät lähteet täytyy tallentaa ennustehetken arvoineen, jos niitä halutaan käyttää historiallisessa testissä.

Kasvava ikkuna vai liukuva ikkuna?

Kasvava koulutusikkuna

Kasvavassa ikkunassa malliin lisätään uusia jo pelattuja otteluita vaihe vaiheelta. Etuna on kasvava havaintomäärä. Haittana on se, että vanhimmat ottelut saattavat kuvata kokonaan eri valmennusta, pelaajistoa tai pelitapaa. Pitkä historia voi vähentää satunnaisvaihtelua, mutta se ei välttämättä kerro parhaiten juuri nykyisistä voimasuhteista.

Liukuva koulutusikkuna

Liukuvassa ikkunassa käytetään vain rajattua edeltävää ajanjaksoa tai ottelumäärää. Menetelmä voi reagoida muutoksiin nopeammin, mutta otoskoko jää pienemmäksi. Varsinkin harvoin pelattavissa turnauksissa lyhyt ikkuna voi sisältää hyvin vähän vertailukelpoisia kohtaamisia.

Ikkunan pituutta ei pitäisi valita testijakson lopputulosten perusteella ilman erillistä ulkoista testausta. Muuten malli on jälleen mukautettu dataan, jolla sen onnistuminen raportoidaan.

Mikä on testijaksojen välinen väli eli gap?

Joissakin aineistoissa viimeiset koulutushavainnot ja ensimmäiset testihavainnot ovat niin lähekkäin, että niiden välillä on tietovuodon tai riippuvuuden vaara. TimeSeriesSplit tukee gap-parametria, jolla koulutusjakson lopusta jätetään osa havainnoista pois ennen testijaksoa.

Tämä voi auttaa, jos ominaisuuksia lasketaan esimerkiksi usean ottelun liukuvista tilastoista ja aineiston muodostamisessa on viiveitä. Gap ei silti korjaa väärin aikaleimattuja muuttujia. Ensin on varmistettava, että jokainen käytetty tilasto olisi ollut ennustehetkellä tiedossa.

Mitä mittareita testissä kannattaa käyttää?

Ennustettuja todennäköisyyksiä voidaan arvioida esimerkiksi Brier scorella tai log lossilla. Ne mittaavat todennäköisyysennusteen virhettä, eivät vedonlyöntitilin kehitystä. Sivuston ennusteiden kalibrointia käsittelevässä oppaassa selitetään, miksi osumatarkkuus ja todennäköisyyksien luotettavuus eivät ole sama asia.

Testijakson yhteydessä pitäisi raportoida myös havaintojen määrä, ennustettavien tapahtumien jakauma ja vertailumallin tulos. Jos mallia verrataan toiseen, molempien ennusteet on arvioitava täsmälleen samoilla otteluilla. Muuten parannus saattaa johtua vain siitä, että toinen menetelmä testattiin helpommassa aineistossa.

NISTin autokorrelaatiota käsittelevä tilasto-ohje näyttää, miksi ajalliset riippuvuudet on syytä tutkia erikseen. Peräkkäiset havainnot voivat muistuttaa toisiaan, jolloin niiden käsittely täysin riippumattomina yliarvioi käytettävissä olevan informaation määrää.

Näin toteutat rehellisen vedonlyöntimallin testin

  1. Tallenna ennustehetki. Selvitä, mitä tietoja oli käytettävissä ennen ottelua.
  2. Järjestä ottelut aikajärjestykseen. Käytä yhtenäisiä aikavyöhykkeitä ja tapahtuma-aikaleimoja.
  3. Erota koulutus ja myöhempi testi. Älä käytä tulevia pelejä mallin rakentamiseen.
  4. Laske tilastomuuttujat menneestä. Älä liitä varhaisiin otteluihin koko kauden lopullisia keskiarvoja.
  5. Pidä testitulokset tallessa. Älä valikoi vain onnistuneita jaksoja.
  6. Kokeile vaihtoehtoisia ikkunoita erillisessä kehitysvaiheessa. Jätä lopullinen testi koskemattomaksi.
  7. Raportoi epävarmuus. Lyhyt tulossarja voi poiketa mallin pitkäaikaisesta suorituskyvystä paljon.

Vedonlyöntijärjestelmän testaamisen opas täydentää käytännön seurantaa. Myös otoskokoa ja varianssia käsittelevässä artikkelissa selitetään, miksi edes hyvin rakennettu testimenettely ei poista satunnaisvaihtelua.

Yhteenveto

Aikasarjatestaus pyrkii vastaamaan siihen, olisiko vedonlyöntimalli toiminut myös silloin, kun tulevia otteluita ei vielä tunnettu. Satunnainen jako voi päästää tulevaisuuden tietoa ennusteeseen ja kasvattaa mitattua onnistumista. Luotettavampi menettely erottaa koulutuksen myöhemmästä testistä, estää aineistovuodon ja raportoi testijaksojen epävarmuuden. Tämä 10.10.2026 laadittu opas ei sisällä ajankohtaisia vetoja tai kertoimia.