Explicador kernel do SHAP

IA explicável em Python

Fouad Trad

Machine Learning Engineer

Explicador kernel do SHAP

 

  • Calcula valores SHAP para qualquer modelo

    • K-vizinhos mais próximos
    • Redes neurais
    • Árvores de decisão
  • Mais lento que explicadores específicos por tipo

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

IA explicável em Python

Doença cardíaca

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: perceptron multicamadas que prevê risco de doença cardíaca

IA explicável em Python

Custos de seguro

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: perceptron multicamadas que prevê custos de seguro

IA explicável em Python

Criando explicadores kernel

MLPRegressor
import shap


explainer = shap.KernelExplainer( # Função de predição do modelo, # Resumo representativo do dataset )
MLPClassifier
import shap


explainer = shap.KernelExplainer( # Função de predição do modelo, # Resumo representativo do dataset )
IA explicável em Python

Criando explicadores kernel

MLPRegressor
import shap

explainer = shap.KernelExplainer(
  mlp_reg.predict, 
  # Resumo representativo do dataset
)


MLPClassifier
import shap

explainer = shap.KernelExplainer(
  mlp_clf.predict_proba, 
  # Resumo representativo do dataset
)


IA explicável em Python

Criando explicadores kernel

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)
IA explicável em Python

Importância de atributos

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

plt.bar(X.columns, mean_reg)

Imagem mostrando um gráfico de barras de importâncias de atributos na tarefa de regressão, destacando que fumar e idade são os fatores mais influentes para prever charges.

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

plt.bar(X.columns, mean_cls)

Imagem mostrando um gráfico de barras de importâncias de atributos na tarefa de classificação, destacando que tipo de dor no peito e talassemia são os fatores mais influentes para prever charges.

IA explicável em Python

Comparando com abordagens específicas do modelo

Regressão linear
plt.bar(X.columns, np.abs(lin_reg.coef_))

Imagem mostrando um gráfico de barras de importâncias de atributos usando regressão linear, destacando que fumar e idade são os fatores mais influentes para prever charges.

Regressão logística
plt.bar(X.columns, np.abs(log_reg.coef_[0]))

Imagem mostrando um gráfico de barras de importâncias de atributos na tarefa de classificação, destacando que o tipo de dor no peito é o fator mais influente para prever charges.

IA explicável em Python

Vamos praticar!

IA explicável em Python

Preparing Video For Download...