Een model kan uitstekend lijken wanneer het rechtstreeks of indirect gegevens ontvangt die op het voorspeltijdstip nog niet bekend waren. Tijdvalidatie bootst een realistischer situatie na: leren uit het verleden, instellingen kiezen op een aparte periode en de kwaliteit meten op latere wedstrijden. Het protocol moet vastliggen voordat je de definitieve prestaties bekijkt.
Bepalen wanneer een voorspelling werkelijk bestaat
Een analyse van de avond vóór een wedstrijd gebruikt niet dezelfde informatie als een analyse na de bekendmaking van de opstellingen. Kies een vast referentiemoment en bewaar dat bij iedere rij. Een afwezigheid, sanctie of nieuw aanvangsuur is pas beschikbaar vanaf de publicatie. Alleen de wedstrijddatum volstaat niet. Als je geen historische beschikbaarheid van gegevens bezit, vermeld die beperking. Doe dan niet alsof je exact hebt gereconstrueerd welke voorspelling op dat moment in het verleden mogelijk was.
Drie verschillende toepassingen van gegevens scheiden
De training schat de parameters. De validatie helpt om kenmerken, historielengte en regularisatie te kiezen. De eindtest meet de kwaliteit nadat die keuzes vaststaan. Bekijk je de test om vervolgens het model te verbeteren, dan is dezelfde test niet langer onafhankelijk. Respecteer voor voetbal de chronologische volgorde en groepeer waarnemingen uit dezelfde wedstrijd. Twee rijen die de twee ploegen van één ontmoeting vertegenwoordigen, mogen niet over training en test verdeeld worden. Anders wordt informatie over hetzelfde resultaat gedeeld.
Een voorbeeld met opeenvolgende periodes maken
In een fictief protocol dient een eerste periode voor training, de volgende drie maanden voor validatie en de laatste drie voor de test. De tabel toont een mogelijke indeling, geen universeel advies over hoeveel gegevens ieder model nodig heeft. Bij een voortschrijdend schema herhaal je de procedure terwijl het knippunt opschuift. Sorteer uitgestelde wedstrijden op de werkelijk gespeelde datum en de beschikbaarheid van informatie. Het oorspronkelijke speeldagnummer kan een onjuiste tijdsvolgorde geven wanneer een wedstrijd veel later wordt ingehaald.
| Fictieve fase | Illustratieve periode | Toegelaten gebruik |
|---|---|---|
| Training | Januari tot december, jaar N | Parameters schatten |
| Validatie | Januari tot maart, jaar N+1 | Instellingen kiezen |
| Eindtest | April tot juni, jaar N+1 | Meten na vastleggen model |
| Volgende update | Na afsluiten van de test | Nieuwe gedocumenteerde versie maken |
Kenmerken opnieuw binnen iedere scheiding berekenen
Vormgemiddelden, vervanging van ontbrekende waarden en schaaltransformaties mogen uitsluitend worden geschat met toegelaten eerdere gegevens. Een gemiddelde over het volledige seizoen berekenen voordat je splitst, onthult indirect toekomstige wedstrijden. Hetzelfde gebeurt wanneer later gepubliceerde correcties worden behandeld alsof ze eerder al bekend waren. Bewaar daarom een invoerversie per rekendatum. Bij voortschrijdende kenmerken helpt een verschuiving met één wedstrijd om de doelwedstrijd uit te sluiten. Controleer die grens expliciet, ook wanneer een bibliotheek de berekening automatisch uitvoert.
Ongelijke tussenpozen en wedstrijdgroepen behandelen
Wedstrijden staan niet op gelijke tijdsafstand van elkaar. Pauzes, uitstel en verschillende competities maken de intervallen onregelmatig. Een hulpmiddel dat telkens hetzelfde aantal rijen afsplitst, maakt daardoor niet noodzakelijk periodes van gelijke duur. Documentatie over tijdvalidatie benoemt zulke voorwaarden. Een indeling op echte datums kan beter passen, eventueel met een marge voor publicatievertraging. Controleer ook of wedstrijden van dezelfde avond elkaar onterecht informeren wanneer alle voorspellingen volgens de opzet op hetzelfde tijdstip beschikbaar moesten zijn.
Een volledig en reproduceerbaar resultaat publiceren
Vermeld periodes, aantallen wedstrijden, foutmaat en de eenvoudige referentie waarmee je vergelijkt. Laat naast het gemiddelde ook variatie tussen tijdsblokken en seizoenen zien. Bewaar de kansvector per wedstrijd, zodat Brier of log loss opnieuw kan worden uitgerekend. Verwijder niet achteraf promovendi of verrassende uitslagen. Als een categorie problemen geeft, toon die apart. Beschrijf vervolgens hoe een verbetering op een werkelijk nieuwe toekomstige periode zal worden onderzocht, in plaats van steeds dezelfde test opnieuw als onafhankelijk bewijs te gebruiken.
Praktische controlelijst
Neem één voorspelling uit de testperiode en reconstrueer de invoer met publicatiedatums. Die concrete controle ontdekt lekkage beter dan alleen labels training en test. Kijk vooral naar seizoensgemiddelden, achteraf gecorrigeerde afwezigheden en vertraagde gebeurtenisstatistieken. Lukt reconstructie niet, vermeld dan welke historische informatie niet meer terug te halen is. Een onvolledige tijdlijn mag niet ongemerkt worden aangevuld met de huidige eindversie.
- Leg het publicatiemoment van de kansen vast.
- Sorteer op echte speeldatums en groepeer gekoppelde wedstrijdrijen.
- Bereken ieder kenmerk met uitsluitend toegelaten eerdere informatie.
- Leg instellingen vast voordat je de eindtest bekijkt.
- Bewaar kansen per wedstrijd en datums van alle modelversies.
Een tweede lezer moet met dezelfde invoer dezelfde uitkomsten kunnen terugvinden, zonder jouw conclusie vooraf te kennen. Bewaar ook de uitgesloten rijen en de reden voor iedere uitsluiting. Zo blijft duidelijk waarom het aantal daadwerkelijk onderzochte wedstrijden kleiner kan zijn dan het aantal wedstrijden op de kalender.
Het protocol net als het model van versies voorzien
Bewaar per proef de onderzochte kenmerken, periodes, instellingen en bekeken scores. Het protocol hoort bij het experiment. Twintig varianten proberen en alleen de beste tonen verbergt een selectie die de gegevens al heeft gebruikt. De eindtest blijft gesloten totdat de keuzes vaststaan. Levert die test later een verbeteridee op, dan mag je dat onderzoeken, maar onafhankelijke beoordeling vraagt een andere periode. Bewaar het oorspronkelijke resultaat bij de oorspronkelijke modelversie. Herschrijf dat resultaat niet achteraf alsof de verbetering vooraf al was gekozen.
In een voortschrijdende simulatie heeft iedere ontmoeting een rekentijdstip en een grens voor toegelaten gegevens. Een update na een afgelopen wedstrijd kan bruikbaar zijn voor een latere aftrap. Dezelfde update mag niet bij een gelijktijdige ontmoeting terechtkomen wanneer beide kansvectoren samen werden gepubliceerd. Een tabel met publicatiegroepen maakt dat verschil controleerbaar. Voor gebeurtenissen die dagen later worden gecorrigeerd, is een kopie nodig van wat toen bekend was. Een uiteindelijk perfect opgeschoonde databank is op zichzelf onvoldoende om automatisch een eerlijke historische simulatie te reconstrueren.
Veelgestelde vragen
Waarom wedstrijden niet willekeurig mengen?
Dan kunnen latere wedstrijden in de training en oudere ontmoetingen in de test terechtkomen. De gemeten kwaliteit bootst niet goed na hoe een model werkt dat alleen het verleden mag gebruiken.
Moet er een lege periode tussen training en test liggen?
Soms, wanneer gegevens vertraagd verschijnen of vensters elkaar overlappen. De marge moet een concrete reden hebben en vooraf gekozen worden, niet achteraf om een gunstiger testresultaat te bereiken.
Mag het model tijdens de test opnieuw worden getraind?
Ja, bij een vooraf beschreven voortschrijdend protocol dat telkens alleen al bekende resultaten gebruikt. Bewaar iedere versie en werk de vergelijkingsreferentie volgens dezelfde afspraken bij.
Bronnen en controle
- TimeSeriesSplit — scikit-learn — 2026-10-23
- Metrics and scoring — scikit-learn — 2026-10-23
- StatsBomb Open Data: structuur en gebruiksvoorwaarden — Hudl StatsBomb — 2026-10-23