Visualizando a explicabilidade com SHAP

IA explicável em Python

Fouad Trad

Machine Learning Engineer

Dataset

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

model: random forest regressor para prever charges

import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
IA explicável em Python

Gráfico de importância das features

  • Mostra a contribuição de cada feature no output do modelo
shap.summary_plot(shap_values, X, plot_type="bar")

Gráfico de importância das features mostrando que status de fumante é a feature mais importante.

IA explicável em Python

Beeswarm plot

  • Mostra a distribuição dos valores SHAP
  • Destaca direção e magnitude de cada feature na predição
    • Vermelho → valor alto da feature
    • Azul → valor baixo da feature
    • SHAP > 0 → aumenta o resultado
    • SHAP < 0 → reduz o resultado

Beeswarm plot mostrando a distribuição de valores SHAP por feature, com cores indicando valores das features.

IA explicável em Python

Beeswarm plot

  • Mostra a distribuição dos valores SHAP
  • Destaca direção e magnitude de cada feature na predição
    • Vermelho → valor alto da feature
    • Azul → valor baixo da feature
    • SHAP > 0 → aumenta o resultado
    • SHAP < 0 → reduz o resultado

Mesmo beeswarm destacando que valores altos da feature 'smoker' têm SHAP positivo.

IA explicável em Python

Beeswarm plot

  • Mostra a distribuição dos valores SHAP
  • Destaca direção e magnitude de cada feature na predição
    • Vermelho → valor alto da feature
    • Azul → valor baixo da feature
    • SHAP > 0 → aumenta o resultado
    • SHAP < 0 → reduz o resultado
shap.summary_plot(shap_values, X, 
                  plot_type="dot")

Mesmo beeswarm destacando que valores baixos da feature 'smoker' têm SHAP negativo.

IA explicável em Python

Partial dependence plot

  • Mostra a relação entre feature e resultado previsto
  • Mostra o impacto da feature ao longo do seu intervalo
  • Verifica se a relação é a esperada

Um gráfico de dependência parcial genérico mostrando a relação entre uma feature e um resultado como uma função decrescente.

IA explicável em Python

Partial dependence plot

  • Para cada amostra:
    • Varia o valor da feature selecionada
    • Mantém as outras features constantes
    • Prediz o resultado
  • Faz a média dos resultados de todas as amostras
shap.partial_dependence_plot("age", 
                             model.predict, 
                             X)

Gráfico de dependência parcial para a feature age mostrando que, quando a idade aumenta, o valor previsto aumenta.

IA explicável em Python

Partial dependence plot

  • Para cada amostra:

    • Varia o valor da feature selecionada
    • Mantém as outras features constantes
    • Prediz o resultado
  • Faz a média dos resultados de todas as amostras

shap.partial_dependence_plot("age", 
                             model.predict, 
                             X)

Mesmo gráfico de dependência parcial destacando a distribuição dos valores de age no conjunto de dados.

IA explicável em Python

Vamos praticar!

IA explicável em Python

Preparing Video For Download...