Ga naar hoofdinhoud

Een introductie tot SHAP-waarden en de verklaarbaarheid van machine learning

Machinelearningmodellen zijn krachtig maar lastig te interpreteren. SHAP-waarden helpen je begrijpen hoe modelkenmerken voorspellingen beïnvloeden.
Bijgewerkt 1 jun 2026  · 9 min lezen

Machinelearningmodellen worden steeds complexer, krachtiger en beter in het doen van nauwkeurige voorspellingen. Maar naarmate deze modellen meer op "black boxes" lijken, wordt het lastiger te begrijpen hoe ze tot die voorspellingen komen. Dat heeft geleid tot een groeiende focus op de verklaarbaarheid en uitlegbaarheid van machine learning.

Stel, je vraagt bij een bank een lening aan en die wordt afgewezen. Je wilt weten waarom, maar de klantenservice zegt dat een algoritme de aanvraag heeft afgekeurd en dat ze niet kunnen achterhalen waarom. Frustrerend, toch? Je verdient een uitleg bij een beslissing die jou raakt. Daarom proberen bedrijven hun machinelearningmodellen transparanter en begrijpelijker te maken.

Een van de veelbelovende tools hiervoor zijn SHAP-waarden, die meten hoeveel elk kenmerk (zoals inkomen, leeftijd, kredietscore, enz.) bijdraagt aan de voorspelling van het model. SHAP-waarden helpen je te zien welke features het belangrijkst zijn voor het model en hoe ze het resultaat beïnvloeden.

In deze tutorial leren we wat SHAP-waarden zijn en welke rol ze spelen bij het interpreteren van machinelearningmodellen. We gebruiken ook het Python-pakket Shap om verschillende grafieken te maken en te analyseren voor modelinterpretatie.

Wat zijn SHAP-waarden?

SHAP (SHapley Additive exPlanations) is een manier om de output van elk machinelearningmodel uit te leggen. Het gebruikt een speltheoretische benadering die de bijdrage van elke speler aan de uiteindelijke uitkomst meet. In machine learning krijgt elk kenmerk een belangrijkheidswaarde die de bijdrage aan de output van het model weergeeft.

SHAP-waarden laten zien hoe elk kenmerk elke uiteindelijke voorspelling beïnvloedt, hoe belangrijk elk kenmerk is ten opzichte van andere, en in hoeverre het model leunt op interacties tussen kenmerken.

SHAP-waarden in machine learning 

SHAP-waarden zijn een veelgebruikte manier om op een consistente en objectieve manier uit te leggen hoe elk kenmerk de voorspelling van het model beïnvloedt.

SHAP-waarden zijn gebaseerd op speltheorie en wijzen aan elk kenmerk in een model een belangrijkheidswaarde toe. Kenmerken met positieve SHAP-waarden hebben een positief effect op de voorspelling, terwijl kenmerken met negatieve waarden een negatief effect hebben. De grootte geeft aan hoe sterk het effect is.

SHAP-waarden zijn model-agnostisch, wat betekent dat je ze kunt gebruiken om elk machinelearningmodel te interpreteren, waaronder:

  • Lineaire regressie
  • Beslisbomen
  • Random forests
  • Gradient boosting-modellen
  • Neurale netwerken

De eigenschappen van SHAP-waarden

SHAP-waarden hebben verschillende nuttige eigenschappen die ze effectief maken voor modelinterpretatie:

Additiviteit

SHAP-waarden zijn additief, wat betekent dat de bijdrage van elk kenmerk aan de uiteindelijke voorspelling onafhankelijk kan worden berekend en vervolgens opgeteld. Deze eigenschap maakt efficiënte berekening van SHAP-waarden mogelijk, zelfs voor hoog-dimensionale datasets.

Lokale nauwkeurigheid

SHAP-waarden tellen op tot het verschil tussen de verwachte modeloutput en de daadwerkelijke output voor een gegeven invoer. Dit betekent dat SHAP-waarden een nauwkeurige, lokale interpretatie geven van de modelvoorspelling voor een specifieke invoer.

Missingness

SHAP-waarden zijn nul voor ontbrekende of irrelevante kenmerken voor een voorspelling. Dit maakt SHAP-waarden robuust voor ontbrekende data en zorgt dat irrelevante kenmerken de interpretatie niet vertekenen.

Consistentie

SHAP-waarden veranderen niet wanneer het model verandert, tenzij de bijdrage van een kenmerk verandert. Dit betekent dat SHAP-waarden een consistente interpretatie bieden van het modelgedrag, ook als de modelarchitectuur of -parameters wijzigen.

Kortom, SHAP-waarden bieden een consistente en objectieve manier om inzicht te krijgen in hoe een machinelearningmodel voorspellingen doet en welke kenmerken de grootste invloed hebben.

SHAP-waarden implementeren in Python

In deze sectie berekenen we SHAP-waarden en visualiseren we feature-importance, feature-afhankelijkheid, force- en decision-plots.

Voer de code uit deze tutorial online uit en pas 'm aan.

Code uitvoeren

Aan de slag

Installeer SHAP via PyPI of conda-forge:

pip install shap

of

conda install -c conda-forge shap

Laad de Telecom Customer Churn. De dataset ziet er schoon uit en de doelkolom is “Churn”.

import shap
import pandas as pd
import numpy as np
shap.initjs()

customer = pd.read_csv("data/customer_churn.csv")
customer.head()

Modeltraining en evaluatie

  1. Maak X en y met behulp van de doelkolom en splits de dataset in train en test.
  2. Train een Random Forest Classifier op de trainingsset.
  3. Maak voorspellingen met de testset.
  4. Toon het classificatierapport.
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split

X = customer.drop("Churn", axis=1) # Independent variables
y = customer.Churn # Dependent variable

# Split into train and test 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)

# Train a machine learning model
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier()
clf.fit(X_train, y_train)

# Make prediction on the testing data
y_pred = clf.predict(X_test)

# Classification Report
print(classification_report(y_pred, y_test))

Het model presteert beter voor label “0” dan voor “1” vanwege een onevenwichtige dataset. Al met al is het een acceptabel resultaat met 94% nauwkeurigheid.

              precision    recall  f1-score   support

           0       0.97      0.96      0.97       815
           1       0.79      0.82      0.80       130

    accuracy                           0.94       945
   macro avg       0.88      0.89      0.88       945
weighted avg       0.94      0.94      0.94       945

Bekijk ook onze gids Classificatie in machine learning om meer te leren over classificatie in machine learning met Python-voorbeelden.

SHAP Explainer instellen

Nu komt het deel van de modeluitlegger.

We maken eerst een explainer-object door een randomforest-classificatiemodel aan te leveren, en berekenen daarna de SHAP-waarde met behulp van de testset.

explainer = shap.Explainer(clf)
shap_values = explainer.shap_values(X_test)

Summary-plot

Toon de summary_plot met SHAP-waarden en de testset.

shap.summary_plot(shap_values, X_test)

De summary-plot laat de feature-importance van elk kenmerk in het model zien. De resultaten tonen dat “Status”, “Complaints” en “Frequency of use” een grote rol spelen bij het bepalen van de uitkomsten.

Toon de summary_plot van het label “0”.

shap.summary_plot(shap_values[0], X_test)
  • Y-as geeft de featurenamen aan in volgorde van belangrijkheid van boven naar beneden.
  • X-as stelt de SHAP-waarde voor, die de mate van verandering in log odds aangeeft.
  • De kleur van elk punt in de grafiek geeft de waarde van de corresponderende feature weer, waarbij rood hoge waarden en blauw lage waarden aangeeft.
  • Elk punt vertegenwoordigt een rij data uit de oorspronkelijke dataset.

Als je naar de feature “Complaints" kijkt, zie je dat die meestal hoog is met een negatieve SHAP-waarde. Dat betekent dat hogere aantallen klachten de output negatief beïnvloeden.

Let op: voor label “1” wordt de visualisatie gespiegeld.

Dependence-plot

Visualiseer de dependence_plot tussen de features “Subscription Length” en “Age”.

shap.dependence_plot("Subscription Length", shap_values[0], X_test,interaction_index="Age")

Een dependence-plot is een soort spreidingsdiagram dat laat zien hoe de voorspellingen van een model worden beïnvloed door een specifieke feature (Subscription Length). Gemiddeld genomen heeft de abonnementsduur een overwegend positief effect op het model.

Force-plot

We bekijken de eerste sample in de testset om te bepalen welke features hebben bijgedragen aan het resultaat “0”. Hiervoor gebruiken we een force-plot en geven we de expected value, de SHAP-waarde en de testsample mee.

shap.plots.force(explainer.expected_value[0], shap_values[0][0,:], X_test.iloc[0, :], matplotlib = True)

We zien duidelijk dat nul klachten en nul storingen bijdroegen aan een negatief effect op klantverlies.

Laten we nu kijken naar churn-samples met label “1”.

shap.plots.force(explainer.expected_value[1], shap_values[1][6, :], X_test.iloc[6, :],matplotlib = True)

Je ziet alle features met hun waarde en grootte die hebben bijgedragen aan klantverlies. Het lijkt erop dat zelfs één onopgeloste klacht een telecombedrijf kan kosten.

Decision-plot

We tonen nu de decision_plot. Deze beeldt de modelbeslissingen visueel af door de cumulatieve SHAP-waarden voor elke voorspelling te plotten.

shap.decision_plot(explainer.expected_value[1], shap_values[1], X_test.columns)

Elke getekende lijn in de decision-plot laat zien hoe sterk de individuele features hebben bijgedragen aan een enkele modelvoorspelling, en verklaart zo welke featurewaarden de voorspelling hebben gestuurd.

Let op: de decision-plot voor doellabel “1” helt richting “1”.

Toon de decision-plot voor doellabel “0”

shap.decision_plot(explainer.expected_value[0], shap_values[0], X_test.columns)

Hier helt de decision-plot richting “0”.

Toepassingen van SHAP-waarden

Naast verklaarbaarheid en uitlegbaarheid in machine learning kun je SHAP-waarden gebruiken voor:

  1. Modeldebugging. Door de SHAP-waarden te onderzoeken, kunnen we vooroordelen of uitschieters in de data identificeren die het model fouten laten maken.
  2. Feature-importance. Het identificeren en verwijderen van kenmerken met geringe impact kan een meer geoptimaliseerd model opleveren.
  3. Uitleg verankeren. We kunnen SHAP-waarden gebruiken om individuele voorspellingen uit te leggen door de essentiële kenmerken te benadrukken die tot die voorspelling hebben geleid. Dat helpt gebruikers de beslissingen van een model te begrijpen en te vertrouwen.
  4. Modelsamenvattingen. Ze kunnen een globale samenvatting van een model geven in de vorm van een SHAP summary-plot. Dat biedt een overzicht van de belangrijkste kenmerken over de hele dataset.
  5. Bias detecteren. Analyse van SHAP-waarden helpt te identificeren of bepaalde kenmerken bepaalde groepen onevenredig beïnvloeden. Het maakt het mogelijk om discriminatie in het model op te sporen en te verkleinen.
  6. Fairness-audits. Ze kunnen worden gebruikt om de eerlijkheid en ethische implicaties van een model te beoordelen.
  7. Regelgevende goedkeuring. SHAP-waarden kunnen helpen om goedkeuring van toezichthouders te krijgen door de beslissingen van het model uit te leggen.

Conclusie

We hebben SHAP-waarden verkend en gezien hoe we ze kunnen gebruiken om machinelearningmodellen interpreteerbaar te maken. Hoewel een accuraat model essentieel is, moeten bedrijven verder kijken dan alleen nauwkeurigheid en focussen op uitlegbaarheid en transparantie om het vertrouwen van gebruikers en toezichthouders te winnen.

Kunnen uitleggen waarom een model een bepaalde voorspelling heeft gedaan, helpt mogelijke biases te debuggen, dataproblemen te identificeren en de beslissingen van het model te onderbouwen.

Ben je nieuw in machine learning en wil je job-ready worden? Overweeg dan de carrièreroute Machine Learning Scientist with Python. Dit programma helpt je de benodigde Python-vaardigheden te beheersen om machine learning scientist te worden en een baan te vinden.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Als gecertificeerd data scientist haal ik met passie het maximale uit de nieuwste technologie om innovatieve machinelearning-toepassingen te bouwen. Met een sterke achtergrond in spraakherkenning, data-analyse en -rapportage, MLOps, conversationele AI en NLP heb ik mijn vaardigheden aangescherpt in het ontwikkelen van intelligente systemen die echt impact maken. Naast mijn technische expertise ben ik ook een sterke communicator met een talent om complexe concepten terug te brengen tot heldere, beknopte taal. Daardoor ben ik uitgegroeid tot een veelgelezen blogger over data science, waar ik mijn inzichten en ervaringen deel met een groeiende community van data-professionals. Op dit moment richt ik me op contentcreatie en redactie, waarbij ik met large language models werk aan krachtige en aansprekende content die zowel bedrijven als individuen helpt het beste uit hun data te halen.

Onderwerpen
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer zienMeer zien