Explicabilidade com SHAP

IA explicável em Python

Fouad Trad

Machine Learning Engineer

Introdução ao SHAP

  • SHAP → SHapley Additive exPlanations
  • Técnica independente de modelo
  • Usa valores de Shapley da teoria dos jogos
  • Valores SHAP → quantificam a contribuição das features nas previsões

Logo do SHAP

IA explicável em Python

Dividindo o lucro entre membros da banda

Imagem de uma banda musical.

IA explicável em Python

Explicadores SHAP

 

  • Calcular valores SHAP
  • Tree explainers → modelos baseados em árvores

Imagem mostrando que explicadores SHAP se dividem entre explicadores gerais, aplicáveis a qualquer modelo, e específicos, otimizados para tipos de modelo.

IA explicável em Python

Dataset de admissões

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: prevê chance de admissão
  • rf_class: prevê aceitação
  • X: dataframe com as features
IA explicável em Python

Obtendo valores SHAP

import shap
Regressão
explainer_reg = shap.TreeExplainer(rf_reg)

shap_values_reg = explainer_reg.shap_values(X)
Classificação
explainer_class = shap.TreeExplainer(rf_class)

shap_values_class = explainer_class.shap_values(X)
IA explicável em Python

Entendendo a saída do SHAP

Regressão
print(shap_values_reg.shape)  
(400, 6)

Imagem mostrando valores SHAP como uma tabela com as mesmas dimensões do dataframe X (nº de amostras, nº de features)

IA explicável em Python

Entendendo a saída do SHAP

Regressão
print(shap_values_reg.shape)  
(400, 6)

Imagem mostrando valores SHAP como uma tabela com as mesmas dimensões do dataframe X (nº de amostras, nº de features)

Classificação
print(shap_values_class.shape)
(400, 6, 2)

Selecionar valores da classe positiva

positive_values = shap_values_class[:,:,1]
IA explicável em Python

Importância das features

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)

Imagem mostrando importâncias de features para regressão e classificação, destacando que CGPA e GRE são os fatores mais influentes na previsão de admissões.

IA explicável em Python

Vamos praticar!

IA explicável em Python

Preparing Video For Download...