Hyperparameter Optimalisatie
Hyperparameters zijn de instellingen die je kiest voordat je een model traint. In tegenstelling tot gewone parameters (die het model zelf leert), moet je hyperparameters handmatig of via zoekstrategieën bepalen.
Hyperparameters vs. Parameters
| Type | Beschrijving | Voorbeeld |
|---|---|---|
| Parameters | Geleerd door het model tijdens training | Gewichten in een neuraal netwerk |
| Hyperparameters | Ingesteld door de ontwikkelaar vóór training | Learning rate, aantal bomen, max depth |
Voorbeelden per model
| Model | Hyperparameters |
|---|---|
| Random Forest | n_estimators, max_depth, min_samples_split |
| Neural Network | learning_rate, batch_size, epochs, hidden_layers |
| SVM | C, kernel, gamma |
| KNN | n_neighbors, weights, metric |
| XGBoost | learning_rate, max_depth, n_estimators, subsample |
K-Fold Cross-Validatie
K-fold cross-validatie is een techniek om de performance van een model betrouwbaarder te schatten dan met een enkele train/test split.
Hoe werkt het?
- Verdeel de data in K gelijke delen (folds)
- Train K keer:
- Gebruik K-1 folds voor training
- Gebruik 1 fold voor validatie
- Elke fold is precies één keer de validatieset
- Bereken het gemiddelde van alle K scores
Visueel (5-fold)
1 2 3 4 5 | |
Implementatie
1 2 3 4 5 6 7 8 9 10 | |
Varianten
| Variant | Beschrijving | Wanneer gebruiken |
|---|---|---|
| K-Fold | Standaard verdeling in K delen | Algemeen gebruik |
| Stratified K-Fold | Behoudt klasseverdeling per fold | Classificatie met ongebalanceerde klassen |
| Leave-One-Out (LOO) | K = aantal datapunten | Zeer kleine datasets |
| Repeated K-Fold | K-fold meerdere keren herhalen | Stabielere schattingen |
1 2 3 4 5 6 7 | |
Hoeveel folds?
- 5 of 10 folds is gebruikelijk
- Meer folds = minder bias, meer variantie, langere trainingstijd
- Bij kleine datasets: meer folds of LOO
Grid Search
Grid search is een systematische manier om de beste combinatie van hyperparameters te vinden door alle mogelijke combinaties te proberen.
Hoe werkt het?
- Definieer een grid van hyperparameterwaarden
- Probeer elke combinatie
- Evalueer met cross-validatie
- Selecteer de beste combinatie
Implementatie
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | |
Aantal combinaties
Bij grid search groeit het aantal combinaties snel:
1 2 3 4 | |
Alternatieven voor grid search
| Methode | Beschrijving | Wanneer gebruiken |
|---|---|---|
| Grid Search | Alle combinaties proberen | Klein zoekgebied, voldoende tijd |
| Random Search | Willekeurige combinaties | Groot zoekgebied, beperkte tijd |
| Bayesian Optimization | Slim zoeken op basis van eerdere resultaten | Dure evaluaties (deep learning) |
| Halving Grid Search | Snel slechte opties elimineren | Veel combinaties, beperkte resources |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
Overfitting op validatieset
Als je te veel hyperparametercombinaties probeert, kun je "overfitten" op je validatieset. Houd altijd een aparte testset achter de hand voor finale evaluatie.
Ensemble Methoden
Ensemble methoden combineren meerdere modellen om betere voorspellingen te maken. De twee hoofdstrategieën zijn bagging en boosting.
Bagging
Bagging (Bootstrap Aggregating) traint meerdere modellen parallel op verschillende subsets van de data en combineert hun voorspellingen.
Hoe werkt het?
- Maak N bootstrap samples (random sampling met teruglegging)
- Train een model op elke sample
- Combineer voorspellingen:
- Classificatie: meerderheid stemming
- Regressie: gemiddelde
Visueel
1 2 3 4 5 6 7 | |
Kenmerken
| Aspect | Beschrijving |
|---|---|
| Doel | Variantie verminderen |
| Base model | Vaak decision trees |
| Training | Parallel (onafhankelijk) |
| Voorspelling | Gemiddelde of stemming |
| Bekendste voorbeeld | Random Forest |
Random Forest als bagging
Random Forest is bagging met decision trees, plus een extra twist: bij elke split worden slechts een subset van features overwogen.
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Boosting
Boosting traint modellen sequentieel, waarbij elk volgend model focust op de fouten van de vorige.
Hoe werkt het?
- Train een eerste (zwak) model
- Identificeer de fouten
- Train een volgend model met meer gewicht op de fouten
- Herhaal tot N modellen
- Combineer alle modellen (gewogen som)
Visueel
1 2 3 4 5 6 7 8 9 | |
Kenmerken
| Aspect | Beschrijving |
|---|---|
| Doel | Bias verminderen |
| Base model | Zwakke learners (vaak shallow trees) |
| Training | Sequentieel (afhankelijk) |
| Voorspelling | Gewogen som |
| Bekendste voorbeelden | AdaBoost, Gradient Boosting, XGBoost, LightGBM |
Boosting algoritmen
| Algoritme | Beschrijving | Kenmerken |
|---|---|---|
| AdaBoost | Past gewichten aan op basis van fouten | Eenvoudig, gevoelig voor outliers |
| Gradient Boosting | Minimaliseert loss via gradient descent | Flexibel, trager |
| XGBoost | Geoptimaliseerde gradient boosting | Snel, regularisatie ingebouwd |
| LightGBM | Leaf-wise tree growth | Zeer snel, goed voor grote data |
| CatBoost | Native support voor categorische features | Minder preprocessing nodig |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | |
Bagging vs. Boosting
| Aspect | Bagging | Boosting |
|---|---|---|
| Training | Parallel | Sequentieel |
| Focus | Variantie verminderen | Bias verminderen |
| Base models | Onafhankelijk | Bouwen op elkaar voort |
| Gevoeligheid outliers | Robuust | Gevoeliger |
| Overfitting risico | Laag | Hoger (maar regularisatie mogelijk) |
| Snelheid | Sneller (paralleliseerbaar) | Trager |
| Voorbeeld | Random Forest | XGBoost, LightGBM |
Wanneer wat gebruiken?
| Situatie | Aanpak |
|---|---|
| Hoge variantie (overfitting) | Bagging / Random Forest |
| Hoge bias (underfitting) | Boosting |
| Veel outliers / ruis | Bagging |
| Maximale performance gewenst | Boosting (XGBoost/LightGBM) |
| Snelle training nodig | Bagging |
| Competities / benchmarks | Boosting wint vaak |
Ensemble combineren
Je kunt bagging en boosting ook combineren, of ensembles van verschillende modeltypes maken (stacking). Dit is vaak de winnende strategie in Kaggle-competities.