Evalueren van AI-oplossingen
Evaluatie gaat verder dan alleen kijken of een metric "hoog genoeg" is. Een goede evaluatie vereist dat je begrijpt wat je meet, wat die waarde betekent, en hoe dit zich vertaalt naar bruikbaarheid in de praktijk. Daarnaast moet je verder kijken dan pure performance — aspecten als fairness, uitlegbaarheid en duurzaamheid zijn minstens zo belangrijk.
Verder denken dan de metric
De valkuil van hoge getallen
Een accuracy van 95% klinkt indrukwekkend, maar zegt op zichzelf weinig. Stel jezelf altijd de volgende vragen:
| Vraag |
Waarom belangrijk |
| Wat meet deze metric precies? |
Accuracy meet iets anders dan precision, recall of F1 |
| Is dit de juiste metric voor mijn probleem? |
Bij ongebalanceerde data kan accuracy misleidend zijn |
| Wat betekent deze waarde in de praktijk? |
95% accuracy = 5% fouten. Bij 10.000 voorspellingen zijn dat 500 fouten |
| Wie wordt geraakt door de fouten? |
False positives en false negatives hebben verschillende gevolgen |
| Hoe presteert de huidige oplossing (baseline)? |
95% is slecht als een simpele regel 93% haalt |
Van metric naar praktijk
| Metric-waarde |
Technische interpretatie |
Praktische vraag |
| Precision = 0.90 |
90% van de positieve voorspellingen is correct |
Hoeveel tijd verspillen gebruikers aan false positives? |
| Recall = 0.85 |
85% van de werkelijke positieven wordt gevonden |
Welke 15% missen we, en wat zijn de gevolgen? |
| Latency = 200ms |
Gemiddelde responstijd |
Is dit snel genoeg voor real-time gebruik? |
| F1 = 0.87 |
Harmonisch gemiddelde van precision en recall |
Maar is de balans tussen precision/recall juist voor deze use case? |
!!! warning "Hoge metric ≠ goed model"
Een model dat altijd "negatief" voorspelt in een dataset met 99% negatieve cases heeft 99% accuracy — maar is compleet nutteloos voor het vinden van de positieve cases.
CRISP-ML(Q) kwaliteitsdimensies
Het CRISP-ML(Q) framework gaat verder dan alleen modelperformance en definieert bredere kwaliteitsaspecten voor ML-systemen.
Overzicht dimensies
| Dimensie |
Kernvraag |
| Performance |
Hoe goed presteert het model op de taak? |
| Robustness |
Hoe stabiel is het model bij afwijkende input? |
| Fairness |
Behandelt het model alle groepen eerlijk? |
| Explainability |
Kunnen we begrijpen waarom het model iets voorspelt? |
| Sustainability |
Wat is de milieu- en resource-impact? |
| Security |
Is het model bestand tegen aanvallen? |
| Privacy |
Worden persoonsgegevens adequaat beschermd? |
Performance blijft belangrijk, maar kies de juiste metric voor je probleem.
Classificatie
| Metric |
Formule |
Wanneer gebruiken |
| Accuracy |
(TP + TN) / Totaal |
Gebalanceerde datasets |
| Precision |
TP / (TP + FP) |
Als false positives kostbaar zijn |
| Recall |
TP / (TP + FN) |
Als false negatives kostbaar zijn |
| F1-score |
2 × (Precision × Recall) / (Precision + Recall) |
Balans tussen precision en recall |
| AUC-ROC |
Area under ROC curve |
Vergelijken van modellen, threshold-onafhankelijk |
Regressie
| Metric |
Wat het meet |
| MAE (Mean Absolute Error) |
Gemiddelde absolute afwijking |
| MSE (Mean Squared Error) |
Gemiddelde kwadratische afwijking (straft grote fouten zwaarder) |
| RMSE |
Wortel van MSE (zelfde eenheid als target) |
| R² |
Proportie verklaarde variantie |
Fairness
Fairness gaat over de vraag of het model bepaalde groepen systematisch benadeelt.
Waarom fairness meten?
- Modellen kunnen bestaande maatschappelijke biases versterken
- Wettelijke eisen (bijv. non-discriminatie in kredietbeslissingen)
- Ethische verantwoordelijkheid
- Reputatierisico's
Fairness metrics
| Metric |
Definitie |
Voorbeeld |
| Demographic Parity |
Gelijke positieve voorspellingen per groep |
Evenveel goedgekeurde leningen voor alle demografische groepen |
| Equal Opportunity |
Gelijke true positive rate per groep |
Als je ziek bent, wordt dit even vaak gedetecteerd ongeacht je achtergrond |
| Equalized Odds |
Gelijke TPR én FPR per groep |
Zowel detectie als false alarms zijn gelijk verdeeld |
| Predictive Parity |
Gelijke precision per groep |
Een positieve voorspelling is even betrouwbaar voor alle groepen |
Fairness evalueren
| from fairlearn.metrics import demographic_parity_difference, equalized_odds_difference
# Demographic parity
dp_diff = demographic_parity_difference(y_true, y_pred, sensitive_features=gender)
# Equalized odds
eo_diff = equalized_odds_difference(y_true, y_pred, sensitive_features=gender)
|
!!! note "Trade-offs"
Verschillende fairness-definities kunnen niet altijd tegelijk worden vervuld. Kies bewust welke definitie past bij jouw context en documenteer deze keuze.
Explainability
Explainability (uitlegbaarheid) gaat over de vraag of we kunnen begrijpen waarom een model een bepaalde voorspelling doet.
Waarom uitlegbaarheid?
| Reden |
Toelichting |
| Vertrouwen |
Gebruikers vertrouwen een systeem meer als ze het begrijpen |
| Debugging |
Inzicht helpt bij het vinden van fouten |
| Compliance |
Wettelijke eisen (bijv. GDPR: recht op uitleg) |
| Verantwoording |
Bij belangrijke beslissingen moet je kunnen uitleggen waarom |
Methoden
| Methode |
Type |
Wat het doet |
| Feature Importance |
Globaal |
Welke features zijn over het algemeen belangrijk? |
| SHAP |
Lokaal/Globaal |
Bijdrage van elke feature aan individuele voorspellingen |
| LIME |
Lokaal |
Lokale benadering met interpreteerbaar model |
| Partial Dependence Plots |
Globaal |
Effect van één feature op de voorspelling |
| Counterfactual Explanations |
Lokaal |
"Wat had anders moeten zijn voor een andere uitkomst?" |
| import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)
# Visualiseer feature importance
shap.summary_plot(shap_values, X_test)
|
Robustness
Robustness meet hoe goed een model omgaat met afwijkende of onverwachte input.
Aspecten van robustness
| Aspect |
Vraag |
| Out-of-distribution |
Hoe presteert het model op data die afwijkt van de training? |
| Noise sensitivity |
Hoe gevoelig is het model voor ruis in de input? |
| Adversarial robustness |
Is het model bestand tegen opzettelijke manipulatie? |
| Edge cases |
Hoe gedraagt het model zich bij extreme waarden? |
Testen op robustness
- Test op data van andere tijdsperiodes
- Voeg synthetische ruis toe aan input
- Test met incomplete of corrupte data
- Gebruik adversarial examples
Sustainability
Sustainability kijkt naar de milieu- en resource-impact van AI-systemen.
Waarom duurzaamheid meenemen?
- Training van grote modellen verbruikt enorme hoeveelheden energie
- CO2-uitstoot van datacenters
- Maatschappelijke verantwoordelijkheid
- Kosten correleren vaak met energieverbruik
Wat te meten?
| Aspect |
Metrics |
| Training |
Energieverbruik (kWh), CO2-uitstoot, trainingstijd |
| Inference |
Latency, throughput, energie per voorspelling |
| Model size |
Aantal parameters, geheugengebruik |
Duurzamere keuzes
| Keuze |
Effect |
| Kleinere modellen gebruiken |
Minder compute, snellere inference |
| Transfer learning |
Minder training nodig |
| Model pruning/quantization |
Kleiner model, lagere energie |
| Efficiënte architecturen |
Betere performance-per-watt |
| Groene datacenter-locaties |
Lagere CO2-uitstoot |
Security
Security betreft de beveiliging van het model tegen aanvallen.
Aanvalstypen
| Type |
Beschrijving |
| Data poisoning |
Aanvaller manipuleert trainingsdata |
| Model stealing |
Reverse-engineering van het model via queries |
| Adversarial attacks |
Input manipuleren om verkeerde voorspelling uit te lokken |
| Model inversion |
Trainingsdata reconstrueren uit het model |
Privacy
Privacy gaat over de bescherming van persoonsgegevens in het ML-proces.
Aandachtspunten
- Bevat de trainingsdata persoonlijke informatie?
- Kan het model individuen onthullen (memorization)?
- Voldoet het systeem aan GDPR/AVG?
- Is er toestemming voor het gebruik van de data?
Privacy-bevorderende technieken
| Techniek |
Beschrijving |
| Differential Privacy |
Ruis toevoegen zodat individuele datapunten niet te achterhalen zijn |
| Federated Learning |
Model trainen zonder data te centraliseren |
| Data anonymization |
Identificerende kenmerken verwijderen |
| Synthetic data |
Trainingsdata genereren die origineel niet bevat |
Holistische evaluatie
Breng alle dimensies samen in een complete evaluatie:
Evaluatie-checklist
| Dimensie |
Vragen om te stellen |
| Performance |
Zijn de metrics geschikt voor de use case? Hoe verhoudt het zich tot de baseline? |
| Robustness |
Werkt het ook bij afwijkende input? Wat zijn de edge cases? |
| Fairness |
Zijn er dispariteiten tussen groepen? Welke fairness-definitie is relevant? |
| Explainability |
Kunnen we uitleggen waarom het model iets voorspelt? Is dit nodig voor deze use case? |
| Sustainability |
Wat is de carbon footprint? Zijn er efficiëntere alternatieven? |
| Security |
Welke aanvallen zijn relevant? Hoe beschermen we ons? |
| Privacy |
Welke data gebruiken we? Voldoen we aan wetgeving? |
Van evaluatie naar conclusie
- Verzamel resultaten voor alle relevante dimensies
- Weeg de dimensies — wat is belangrijkst voor deze toepassing?
- Identificeer trade-offs — waar moeten we kiezen?
- Formuleer aanbevelingen — go/no-go, verbeterpunten
- Documenteer — leg vast wat je hebt gemeten en waarom
!!! tip "Denk vanuit de gebruiker"
Vertaal je evaluatie altijd terug naar de praktijk. Een model met 92% accuracy en goede uitlegbaarheid kan beter zijn dan een model met 95% accuracy dat niemand begrijpt of vertrouwt.