Train-test split
Wat is een train-test split?
Een train-test split verdeelt je dataset in minstens twee delen: een trainingsset en een testset. Het model leert op de trainingsset. Daarna beoordeel je het op de testset, die het niet tijdens training zag.
Dat is nodig omdat een model op zijn eigen trainingsdata te rooskleurig scoort. Je wil weten hoe het presteert op nieuwe voorbeelden.
In Python ziet de basis er vaak zo uit:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)De exacte verhouding is minder belangrijk dan de vraag of de split past bij je productiegebruik.
Train, validation en test
Vaak gebruik je drie delen. De trainingsset leert het model. De validatieset helpt kiezen tussen instellingen of modellen. De testset blijft apart tot de eindbeoordeling.
Als je de testset telkens gebruikt om keuzes te maken, wordt ze zelf onderdeel van het ontwikkelproces. Dan meet ze niet meer eerlijk hoe het model op nieuwe data werkt.
Random split, tijdsplit of groepssplit?
Een random split werkt goed wanneer rijen onafhankelijk zijn en de toekomst lijkt op het verleden. Bij tijdsgebonden problemen is dat vaak niet zo.
Voor forecasting, churn en risico-inschatting gebruik je meestal een tijdsplit: trainen op het verleden, testen op latere data. Bij klanten, toestellen of patiënten gebruik je vaak een groepssplit, zodat records van dezelfde entiteit niet aan beide kanten zitten.
Train-test split en data leakage
Veel leakage ontstaat doordat preprocessing vóór de split gebeurt. Als je gemiddelden, encodings of featureselectie berekent op de volledige dataset, gebruikt training indirect informatie uit de testset.
De veilige volgorde is: split maken, preprocessing leren op training, preprocessing toepassen op validatie en test.
Train-test split versus cross-validation
Een train-test split gebruikt één verdeling. Cross-validation herhaalt het proces over meerdere folds en geeft een stabieler beeld van modelprestatie.
Toch blijft een aparte testset nuttig voor de eindcheck, zeker wanneer je veel modellen probeerde.
Waar moet je op letten bij train-test split
Splits zoals productie werkt. Een model dat toekomstige orders voorspelt, test je op latere orders.
Hou zeldzame klassen zichtbaar. Gebruik stratification wanneer klassen ongelijk verdeeld zijn.
Bewaar de split. Anders vergelijk je experimenten op andere testdata.
Raak de testset zo weinig mogelijk aan. Ze is je laatste eerlijke meetpunt.