SHAP-förklarbarhet

Förklarbar AI i Python

Fouad Trad

Machine Learning Engineer

Introduktion till SHAP

  • SHAPSHapley Additive exPlanations
  • Modell-agnostisk teknik
  • Använder Shapley-värden från spelteori
  • SHAP-värden → kvantifierar särdragsbidrag till prediktioner

SHAP-logotyp

Förklarbar AI i Python

Fördela vinst mellan bandmedlemmar

Bild på ett musikband.

Förklarbar AI i Python

SHAP-förklarare

 

  • Beräkna SHAP-värden
  • Tree explainers → trädbaserade modeller

Bild som visar att SHAP-förklarare är uppdelade i generella förklarare som kan tillämpas på vilken modell som helst, och typspecifika förklarare som är optimerade för specifika modelltyper.

Förklarbar AI i Python

Antagningsdatamängd

GRE Score TOEFL Score University Rating SOP LOR CGPA Chance of Admit Accept
337 118 4 4.5 4.5 9.65 0.92 1
324 107 4 4 4.5 8.87 0.76 1
316 104 3 3 3.5 8 0.72 1
322 110 3 3.5 2.5 8.67 0.8 1
314 103 2 2 3 8.21 0.45 0

 

  • rf_reg: predicerar antagningssannolikhet
  • rf_class: predicerar antagning
  • X: dataram med särdrag
Förklarbar AI i Python

Beräkna SHAP-värden

import shap
Regression
explainer_reg = shap.TreeExplainer(rf_reg)

shap_values_reg = explainer_reg.shap_values(X)
Klassificering
explainer_class = shap.TreeExplainer(rf_class)

shap_values_class = explainer_class.shap_values(X)
Förklarbar AI i Python

Förstå SHAP-utdata

Regression
print(shap_values_reg.shape)  
(400, 6)

Bild som visar SHAP-värden som en tabell med samma dimensioner som dataramen X (antal sampel, antal särdrag)

Förklarbar AI i Python

Förstå SHAP-utdata

Regression
print(shap_values_reg.shape)  
(400, 6)

Bild som visar SHAP-värden som en tabell med samma dimensioner som dataramen X (antal sampel, antal särdrag)

Klassificering
print(shap_values_class.shape)
(400, 6, 2)

Välj värden för positiv klass

positive_values = shap_values_class[:,:,1]
Förklarbar AI i Python

Särdragsvikter

mean_shap_values_class = np.abs(shap_values_class[:, :, 1]).mean(axis=0)
mean_shap_values_reg = np.abs(shap_values_reg).mean(axis=0)

plt.bar(X_train.columns, mean_shap_values_class) plt.bar(X_train.columns, mean_shap_values_reg)

Bild som visar särdragsvikter för regression och klassificering, och lyfter fram att CGPA och GRE-poäng är de mest inflytelserika faktorerna för att predicera antagning.

Förklarbar AI i Python

Nu kör vi en övning!

Förklarbar AI i Python

Preparing Video For Download...