Shap

Tolka resultaten från din maskininlärningsmodell med hjälp av Shap

Inom data science leder ofta ökad komplexitet till minskad transparens. Vid linjär regression är det lätt att förklara hur en enskild parameter påverkar resultatet, men motsvarande uppgift blir betydligt svårare för mer avancerade modeller. Kort sagt medför det att det är en balansgång mellan komplex modell (= bättre prediktioner) och transparens (= ofta sämre förmåga att prediktera).

Syftet med det här inlägget är att introducera shap – som ger ett sätt att kunna förklara komplexa modeller bättre. Shap är en pythonmodul för att visualisera parameterpåverkan av en maskininlärningsmodells resultat.

För att presentera shap definieras en XGBoost-klassificerare som tränas på data om Titanics passagerare i syfte att prediktera en passagerares sannolikhet att överleva. Datan förklaras och finns tillgänglig för nedladdning här: https://www.kaggle.com/azeembootwala/titanic/version/1.

Shap

 

Efter att ha definierat, tränat och testat modellen, som visade sig ha 83 procent träffsäkerhet, används shap för att visualisera relationerna mellan parametrar och modellresultat.

Shap

Ovan visas hur mycket respektive parameter påverkar modellens resultat. Den predikterade överlevnadschansen beror mest på kön och biljettpris, och minst på parametrarna Title_4 och Title_2. Låt oss nu undersöka hur respektive parameter påverkar modellens resultat.

Shap

I ovanstående graf listas parametrarna enligt modellpåverkan, från högst till lägst. Vidare är parametervärdena färgkodade från rött (högt parametervärde) till blått (lågt parametervärde). Punkternas horisontella läge beskriver parametervärdets modellpåverkan: punkter långt till höger har en stor positiv inverkan på resultatet, medan punkter långt till vänster påverkar modellen I samma utsträckning, fast negativt. Markeringar nära x-axelns mittlinje indikerar liten modellpåverkan.

I exemplet betecknar 1 överlevnad och 0 död. Därför är punkter placerade långt till höger relaterade till överlevnad, medan punkter till vänster minskar den predikterade överlevnadschansen. Kön är definierat så att 1 betecknar män och 0 betecknar kvinnor. Från ovanstående graf kan vi alltså tyda att kvinnliga passagerare (blå punkter på Sex-raden) har större predikterad överlevnadschans än män (röda punkter på Sex-raden).  Gamla (röda punkter på Age-raden) har mindre överlevnadschans än yngre, och stora familjer löper störst risk att drunkna.

Shap är en smidig modul för ökad förståelse av maskininlärningsmodeller som inkluderar långt fler funktioner än vad som visas i det här inlägget. För nedladdning och vidare läsning hänvisas till nedanstående git-repo:

https://github.com/slundberg/shap

Har du några frågor eller funderingar? Tveka inte att kontakta mig!
/Anna Samuelsson

Anna Samuelsson
anna.samuelsson@advectas.se
Jag som skriver detta heter Anna och jobbar som Data Scientist på Advectas. Jag är utbildad statistiker och finansmatematiker och har tidigare jobbat med dataanalys och mjukvaruutveckling. På Advectas sysslar jag för närvarande med klädindustrin och vid sidan av jobbet läser jag gärna böcker (antingen någon pretto realism i Moberg-anda, Kallentofts deckare eller Rudbergs gamla chic-lit). Jag är en jäkel på sötebrödsbak och har två marsvin som ställer sig tvåbent framför mig om jag visslar.

Alla inlägg av Anna Samuelsson

Vill du veta mer om affärsutveckling och verksamhetsoptimering med Data Science?

Läs vår broschyr ”Från BI till AI”.