Vysvětlitelnost SHAP

Explainable AI v Pythonu

Fouad Trad

Machine Learning Engineer

Úvod do SHAP

  • SHAPSHapley Additive exPlanations
  • Technika nezávislá na modelu
  • Využívá Shapleyovy hodnoty z teorie her
  • Hodnoty SHAP → kvantifikují příspěvek příznaků k predikcím

Logo SHAP

Explainable AI v Pythonu

Rozdělení zisku mezi členy kapely

Obrázek hudební skupiny.

Explainable AI v Pythonu

Explainéry SHAP

 

  • Výpočet hodnot SHAP
  • Stromové explainéry → stromové modely

Obrázek zobrazující, že SHAP explainéry se dělí na obecné explainéry použitelné pro libovolný model a explainéry specifické pro daný typ modelu, optimalizované pro konkrétní typy modelů.

Explainable AI v Pythonu

Dataset přijímacího řízení

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: předpovídá pravděpodobnost přijetí
  • rf_class: předpovídá přijetí
  • X: datový rámec obsahující příznaky
Explainable AI v Pythonu

Výpočet hodnot SHAP

import shap
Regrese
explainer_reg = shap.TreeExplainer(rf_reg)

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

shap_values_class = explainer_class.shap_values(X)
Explainable AI v Pythonu

Porozumění výstupu SHAP

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

Obrázek zobrazující hodnoty SHAP jako tabulku se stejnými rozměry jako datový rámec X (počet vzorků, počet příznaků)

Explainable AI v Pythonu

Porozumění výstupu SHAP

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

Obrázek zobrazující hodnoty SHAP jako tabulku se stejnými rozměry jako datový rámec X (počet vzorků, počet příznaků)

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

Výběr hodnot pozitivní třídy

positive_values = shap_values_class[:,:,1]
Explainable AI v Pythonu

Důležitost příznaků

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)

Obrázek zobrazující důležitost příznaků pro regresi a klasifikaci, přičemž CGPA a skóre GRE jsou nejvlivnějšími faktory při předpovídání přijetí.

Explainable AI v Pythonu

Pojďme si procvičit!

Explainable AI v Pythonu

Preparing Video For Download...