SHAP kernel explainer

Förklarbar AI i Python

Fouad Trad

Machine Learning Engineer

SHAP kernel explainer

 

  • Beräknar SHAP-värden för alla modeller

    • K-närmaste grannar
    • Neurala nätverk
    • Trädbaserade modeller
  • Långsammare än modellspecifika explainers

Bild som visar att SHAP-explainers delas in i generella explainers som kan tillämpas på alla modeller och modellspecifika explainers som är optimerade för specifika modelltyper.

Förklarbar AI i Python

Hjärtsjukdom

age sex chest_pain_type blood_pressure ecg_results thalassemia target
52 1 0 125 1 3 0
53 1 0 140 0 3 0
70 1 0 145 1 3 0
61 1 0 148 1 3 0
62 0 0 138 1 2 0

 

mlp_clf: multilayer perceptron som förutsäger risk för hjärtsjukdom

Förklarbar AI i Python

Försäkringskostnader

age gender bmi children smoker charges
19 0 27.900 0 1 16884.92
18 1 33.770 1 0 1725.55
28 1 33.000 3 0 4449.46
33 1 22.705 0 0 21984.47
32 1 28.880 0 0 3866.85

 

mlp_reg: multilayer perceptron som förutsäger försäkringskostnader

Förklarbar AI i Python

Skapa kernel explainers

MLPRegressor
import shap


explainer = shap.KernelExplainer( # Modellens prediktionsfunktion, # Representativt urval av datamängden )
MLPClassifier
import shap


explainer = shap.KernelExplainer( # Modellens prediktionsfunktion, # Representativt urval av datamängden )
Förklarbar AI i Python

Skapa kernel explainers

MLPRegressor
import shap

explainer = shap.KernelExplainer(
  mlp_reg.predict, 
  # Representativt urval av datamängden
)


MLPClassifier
import shap

explainer = shap.KernelExplainer(
  mlp_clf.predict_proba, 
  # Representativt urval av datamängden
)


Förklarbar AI i Python

Skapa kernel explainers

MLPRegressor
import shap

explainer = shap.KernelExplainer(
  mlp_reg.predict, 
  shap.kmeans(X, 10)
)


shap_values_reg = explainer.shap_values(X)
MLPClassifier
import shap

explainer = shap.KernelExplainer(
  mlp_clf.predict_proba, 
  shap.kmeans(X, 10)
)


shap_values_cls = explainer.shap_values(X)
Förklarbar AI i Python

Särdragsvikt

MLPRegressor
mean_reg = np.abs(shap_values_reg).mean(axis=0)

plt.bar(X.columns, mean_reg)

Bild som visar ett stapeldiagram över särdragets vikt i regressionsuppgiften och lyfter fram att rökning och ålder är de mest inflytelserika faktorerna för att förutsäga kostnader.

MLPClassifier
mean_cls = np.abs(shap_values_cls[:,:,1]).mean(axis=0)

plt.bar(X.columns, mean_cls)

Bild som visar ett stapeldiagram över särdragets vikt i klassificeringsuppgiften och lyfter fram att bröstsmärtetyp och talassemi är de mest inflytelserika faktorerna för att förutsäga kostnader.

Förklarbar AI i Python

Jämförelse med modellspecifika metoder

Linjär regression
plt.bar(X.columns, np.abs(lin_reg.coef_))

Bild som visar ett stapeldiagram över särdragsvikt med en linjär regressionsmodell och lyfter fram att rökning och ålder är de mest inflytelserika faktorerna för att förutsäga kostnader.

Logistisk regression
plt.bar(X.columns, np.abs(log_reg.coef_[0]))

Bild som visar ett stapeldiagram över särdragsvikt i klassificeringsuppgiften och lyfter fram att bröstsmärtetyp är den mest inflytelserika faktorn för att förutsäga kostnader.

Förklarbar AI i Python

Nu kör vi en övning!

Förklarbar AI i Python

Preparing Video For Download...