Wyjaśnialność SHAP

Wyjaśnialne AI w Pythonie

Fouad Trad

Machine Learning Engineer

Wprowadzenie do SHAP

  • SHAPSHapley Additive exPlanations
  • Technika niezależna od modelu
  • Wykorzystuje wartości Shapleya z teorii gier
  • Wartości SHAP → kwantyfikują wkład cech w predykcje

Logo SHAP

Wyjaśnialne AI w Pythonie

Podział zysku między członków zespołu

Obraz przedstawiający zespół muzyczny.

Wyjaśnialne AI w Pythonie

Explainery SHAP

 

  • Obliczanie wartości SHAP
  • Explainery drzewowe → modele drzewiaste

Obraz pokazujący, że explainery SHAP dzielą się na ogólne (dla dowolnego modelu) i specyficzne dla danego typu modelu (zoptymalizowane dla konkretnych typów).

Wyjaśnialne AI w Pythonie

Zbiór danych o rekrutacji

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: przewiduje szansę przyjęcia
  • rf_class: przewiduje akceptację
  • X: ramka danych zawierająca cechy
Wyjaśnialne AI w Pythonie

Obliczanie wartości SHAP

import shap
Regresja
explainer_reg = shap.TreeExplainer(rf_reg)

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

shap_values_class = explainer_class.shap_values(X)
Wyjaśnialne AI w Pythonie

Interpretacja wyników SHAP

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

Obraz przedstawiający wartości SHAP jako tabelę o tych samych wymiarach co ramka danych X (liczba próbek, liczba cech)

Wyjaśnialne AI w Pythonie

Interpretacja wyników SHAP

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

Obraz przedstawiający wartości SHAP jako tabelę o tych samych wymiarach co ramka danych X (liczba próbek, liczba cech)

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

Wybierz wartości klasy pozytywnej

positive_values = shap_values_class[:,:,1]
Wyjaśnialne AI w Pythonie

Ważność cech

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)

Obraz przedstawiający ważność cech dla regresji i klasyfikacji, wskazując że CGPA i wyniki GRE są najważniejszymi czynnikami wpływającymi na przyjęcie.

Wyjaśnialne AI w Pythonie

Czas na ćwiczenia!

Wyjaśnialne AI w Pythonie

Preparing Video For Download...