SHAP kernel explainer

Explainable AI v Pythonu

Fouad Trad

Machine Learning Engineer

SHAP kernel explainer

 

  • Odvozuje hodnoty SHAP pro libovolný model

    • K nejbližších sousedů
    • Neuronové sítě
    • Modely založené na stromech
  • Pomalejší než explainery specifické pro daný typ

Obrázek znázorňující rozdělení SHAP explainerů na obecné (použitelné pro jakýkoliv model) a explainery specifické pro daný typ modelu.

Explainable AI v Pythonu

Srdeční onemocnění

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: vícevrstvý perceptron predikující riziko srdečního onemocnění

Explainable AI v Pythonu

Pojistné náklady

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: vícevrstvý perceptron predikující pojistné náklady

Explainable AI v Pythonu

Vytváření kernel explainerů

MLPRegressor
import shap


explainer = shap.KernelExplainer( # Model's prediction function, # Representative summary of dataset )
MLPClassifier
import shap


explainer = shap.KernelExplainer( # Model's prediction function, # Representative summary of dataset )
Explainable AI v Pythonu

Vytváření kernel explainerů

MLPRegressor
import shap

explainer = shap.KernelExplainer(
  mlp_reg.predict, 
  # Representative summary of dataset
)


MLPClassifier
import shap

explainer = shap.KernelExplainer(
  mlp_clf.predict_proba, 
  # Representative summary of dataset
)


Explainable AI v Pythonu

Vytváření kernel explainerů

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)
Explainable AI v Pythonu

Důležitost příznaků

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

plt.bar(X.columns, mean_reg)

Sloupcový graf důležitosti příznaků pro regresi – kouření a věk jsou nejvlivnější faktory.

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

plt.bar(X.columns, mean_cls)

Sloupcový graf důležitosti příznaků pro klasifikaci – typ bolesti na hrudi a talasémie jsou nejvlivnější faktory.

Explainable AI v Pythonu

Srovnání s přístupy specifickými pro daný model

Lineární regrese
plt.bar(X.columns, np.abs(lin_reg.coef_))

Sloupcový graf důležitosti příznaků pro lineární regresi – kouření a věk jsou nejvlivnější faktory.

Logistická regrese
plt.bar(X.columns, np.abs(log_reg.coef_[0]))

Sloupcový graf důležitosti příznaků pro klasifikaci – typ bolesti na hrudi je nejvlivnější faktor.

Explainable AI v Pythonu

Pojďme si procvičit!

Explainable AI v Pythonu

Preparing Video For Download...