Ensemble¶
Het ensemble combineert de voorspellingen van SARIMA, XGBoost en het ratio-model tot één eindvoorspelling. Dit is alleen beschikbaar in de -d b (both) modus.
Waarom een ensemble?¶
Geen enkel model presteert in alle situaties het beste. SARIMA is sterk bij stabiele seizoenspatronen; XGBoost vangt individuele kenmerken beter op; het ratio-model is robuust bij weinig data. Door modellen te combineren wordt de variantie in de eindvoorspelling verlaagd — mits de modellen niet allemaal op dezelfde manier fout gaan.
Hoe worden de gewichten bepaald?¶
De ensemble-gewichten worden bepaald via een grid search over gewichtscombinaties (percentageparen). Voor elke combinatie van gewichten wordt de historische fout (MAE en MAPE) berekend over meerdere voorgaande jaren. De combinatie met de laagste historische fout wordt gekozen als optimale weging.
Dit is bewust anders dan een eenvoudige inverse-MAE weging: de grid search optimaliseert de gewichten direct op de ensemble-uitkomst, niet op de individuele modelfouten. Hierdoor wordt rekening gehouden met correlatie tussen modellen.
De optimale gewichten worden opgeslagen in ensemble_weights.xlsx en worden per opleiding, examentype en herkomst bepaald.
Gewichten zijn datumgevoelig
De gewichten zijn gebaseerd op historische prestaties. Als de situatie verandert (bijv. na een beleidsingreep of een uitzonderlijk jaar), kunnen verouderde gewichten een slecht presterend model te veel vertrouwen geven. Herbereken de gewichten na elk studiejaar via archive/calculate_ensemble_weights.py.
Bij een eerste run¶
Als ensemble_weights.xlsx nog niet bestaat, gebruikt het model gelijke gewichten voor alle modellen. Dit is een redelijke standaard, maar niet optimaal. Draai de ensemble-optimalisatie pas nadat je één volledig studiejaar aan output hebt.
Ensemble vs. individuele modellen¶
In de output staan zowel de individuele modelvoorspellingen (SARIMA_individual, SARIMA_cumulative, Prognose_ratio) als de ensemble-voorspelling (Ensemble_prediction). Dit stelt je in staat om:
- Te controleren of de modellen het eens zijn — hoge overeenkomst geeft meer vertrouwen in de uitkomst
- Afwijkende modellen te signaleren als early warning
- De toegevoegde waarde van het ensemble te beoordelen t.o.v. het ratio-model als simpele baseline
Zie Output begrijpen voor uitleg over de outputkolommen.
Configureerbare ensemble-gewichten¶
De gewichten die bepalen hoe zwaar SARIMA-individueel en SARIMA-cumulatief meewegen zijn instelbaar via configuration.json:
{
"ensemble_weights": {
"master_week_17_23": {"individual": 0.2, "cumulative": 0.8},
"week_30_34": {"individual": 0.6, "cumulative": 0.4},
"week_35_37": {"individual": 0.7, "cumulative": 0.3},
"default": {"individual": 0.5, "cumulative": 0.5}
}
}
De gewichten gelden voor specifieke weekperiodes en examentypes:
| Sleutel | Situatie |
|---|---|
master_week_17_23 |
Master-opleidingen in weken 17–23 (vlak voor HBO-inschrijfdeadline) |
week_30_34 |
Weken 30–34 (zomerperiode, cumulatief minder betrouwbaar) |
week_35_37 |
Weken 35–37 (vlak voor einddeadline) |
default |
Alle overige situaties |
Week 38 (einddeadline) gebruikt altijd 100% het individuele SARIMA-model en is niet configureerbaar.
Pas de gewichten aan op basis van validatieresultaten voor jouw instelling. Zie Configuratie voor de volledige optiedocumentatie.