Methodologie¶
Deze sectie legt per model uit hoe het werkt, waarom deze keuze is gemaakt en wanneer je de output kritisch moet beoordelen.
In het kort
- Wat je hier vindt: per model hoe het werkt, waarom die keuze is gemaakt, en wanneer je de output kritisch moet beoordelen.
- Twee sporen: de pipeline draait een cumulatief spoor (telbestanden) en een individueel spoor (per-student data) en combineert ze in het ensemble.
- Nieuw hier? Begin bij de modellenkaart hieronder en klik door naar het model dat je gebruikt.
Modellen in het ensemble¶
| Model | Pagina | Rol in de pipeline |
|---|---|---|
| Individueel model (classifier + SARIMA) | Individueel model | End-to-end spoor: kans per student → geaggregeerde curve → extrapolatie naar week 38 |
| SARIMA / ETS / Theta / AutoARIMA | Tijdreeksmodellen | Tijdreeksextrapolatie op basis van historische aanmeldpatronen |
| XGBoost classifier | XGBoost | Kans per individuele student dat deze zich inschrijft |
| XGBoost / Ridge / Random Forest | Regressiemodellen | Vertaling van vooraanmelders naar verwachte inschrijvingen |
| Ratio-model | Ratio-model | Eenvoudige historische ratio als referentiemodel |
| Ensemble | Ensemble | Gewogen combinatie van bovenstaande modellen |
| Benchmarks | Benchmarks | Vergelijking van alternatieve modellen |
Twee termen die in de tabel terugkomen: een geaggregeerde curve ontstaat door de losse voorspellingen op te tellen tot één wekelijkse lijn per opleiding, en extrapolatie is het doortrekken van die lijn naar het einde van het jaar (week 38).
Het cumulatieve spoor is configureerbaar: via model_config.cumulative_timeseries en model_config.cumulative_regressor in de configuratie kies je welk tijdreeksmodel en welk regressiemodel wordt gebruikt.
Datasporen¶
flowchart LR
SL["Studielink\ntelbestanden"] --> CUM["Cumulatief spoor\n(-d c)"]
SIS["Osiris / Usis\nper-student"] --> IND["Individueel spoor\n(-d i)"]
CUM & IND --> ENS["Ensemble\n(-d b)"]
De twee sporen zijn bewust onafhankelijk van elkaar ontworpen zodat instellingen die geen toegang hebben tot individuele aanmelddata toch een voorspelling kunnen maken via het cumulatieve spoor. Een end-to-end uitleg van het individueel spoor staat op Individueel model.
Welk model draait per modus?¶
| Modus | SARIMA | XGBoost regr. | Ratio | Ensemble-samenvoeging |
|---|---|---|---|---|
-d c |
✅ | ✅ | ✅ | ❌ (twee losse kolommen) |
-d i |
✅ | ✅ (classifier) | ❌ | ❌ |
-d b |
✅ | ✅ | ✅ | ✅ |
Alleen in -d b worden SARIMA_individual en SARIMA_cumulative samengevoegd tot één Ensemble_prediction; in -d c blijven het twee losse outputkolommen en in -d i is er maar één spoor en dus niets om te combineren. Zie Ensemble voor de gewichtenlogica.
Cumulatief spoor: wekelijkse telbestanden → SARIMA-extrapolatie → XGBoost regressor → voorspelde studenten (demodata)
Individueel spoor: per-student records → XGBoost classifier → ΣP = verwacht cohort (demodata)
Verhouding tot de Radboud-implementatie¶
De methodologie op deze pagina's komt voort uit het model dat oorspronkelijk bij Radboud is ontwikkeld; zie In de praktijk op de homepagina voor de achtergrond. Voor de methodologie is één ding van belang: modelkeuzes (features, parameters, gewichten) zijn dezelfde als in de Radboud-implementatie en worden hier per pagina onderbouwd, terwijl Radboud-specifieke configuratie (faculteitsnamen, programma-lijsten) uit de gedeelde code is gehaald en per instelling wordt ingevuld via configuration.json.
Aannames en beperkingen¶
- Het model extrapoleert op basis van historische patronen. Structurele breuken (bijv. nieuwe opleiding, COVID-jaar) worden niet automatisch gedetecteerd.
- Ensemble-gewichten worden bepaald op historische fouten; een model dat in het verleden goed presteerde krijgt meer gewicht, ook al is de situatie veranderd.
- De SARIMA-parameters zijn per opleiding gefixed. Bij opleidingen met weinig historische data is de modelfit minder betrouwbaar.
Dashboard-visualisatie¶
Na het opslaan van de resultaten genereert de pipeline een interactief Plotly-dashboard per modus. Het dashboard biedt grafieken per opleiding (voorspellingen, foutmaten, feature importance) en wordt opgeslagen als zelfstandig HTML-bestand onder data/output/visualisaties/. Zie Output lezen voor details.