Interpretação e Explicabilidade de Modelos com SHAP e LIME em Python
1. Conceitos Fundamentais
1.1 Por que interpretabilidade importa
Confiabilidade: entender decisões aumenta confiança de stakeholders.
Compliance: setores regulados exigem explicação de decisões automáticas.
Debugging: identificar viés, features irrelevantes ou inconsistentes.
Otimização: insights sobre features importantes podem melhorar o modelo.
1.2 Tipos de interpretabilidade
Global: compreensão do comportamento geral do modelo.
Local: entendimento de decisões individuais (ex.: por amostra).
2. LIME: Interpretação Local
2.1 Instalação
pip install lime
2.2 Exemplo com classificação
import lime
import lime.lime_tabular
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_breast_cancer
# Dados
X, y = load_breast_cancer(return_X_y=True)
feature_names = load_breast_cancer().feature_names
# Modelo
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X, y)
# LIME Explainer
explainer = lime.lime_tabular.LimeTabularExplainer(
training_data=X,
feature_names=feature_names,
class_names=["maligno", "benigno"],
mode="classification"
)
i = 10 # índice da amostra
exp = explainer.explain_instance(X[i], model.predict_proba, num_features=10)
exp.show_in_notebook(show_table=True)
explain_instance
cria explicação local para a amostra específica.Útil para ver quais features influenciam aquela decisão.
3. SHAP: Explicação Global e Local
3.1 Instalação
pip install shap
3.2 Exemplo com Random Forest
import shap
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_breast_cancer
# Dados
X, y = load_breast_cancer(return_X_y=True)
X_df = pd.DataFrame(X, columns=load_breast_cancer().feature_names)
# Modelo
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_df, y)
# Explainer SHAP
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_df)
# Visualização
shap.summary_plot(shap_values, X_df)
summary_plot
mostra importância global das features.shap_values
podem ser usados para explicação local de cada amostra.
3.3 Interpretação Local com SHAP
shap.force_plot(explainer.expected_value[1], shap_values[1][0,:], X_df.iloc[0,:])
Mostra como cada feature contribui para a previsão daquela amostra.
Extremamente útil para comunicar decisões a stakeholders.
4. Comparativo LIME x SHAP
Característica | LIME | SHAP |
---|---|---|
Escopo | Local | Local e global |
Tipo de modelo | Agnóstico | Dependente do tipo (Tree, Deep, etc.) |
Explicabilidade | Fácil de interpretar | Mais detalhada, granular |
Performance | Mais rápido em poucos dados | Pode ser custoso em grandes datasets |
Aplicação prática | Inspeção pontual de amostras | Diagnóstico de modelo completo |
5. Boas Práticas Profissionais
Use SHAP para análise global e LIME para decisões locais específicas.
Integre explanações em dashboards para stakeholders.
Combine visualizações:
summary_plot
,force_plot
,dependence_plot
.Para datasets grandes, use amostragem ou explainer específico de árvore (
TreeExplainer
) para performance.Documente quais features têm maior impacto em decisões críticas.
Combine com técnicas de fairness e bias detection para compliance.
6. Aplicações Profissionais
Finanças: decisões de crédito e risco com explicação de aprovação/rejeição.
Saúde: diagnósticos assistidos por IA com justificativa clínica.
Marketing: previsão de churn e comportamento de clientes.
Compliance: algoritmos de decisão explicáveis para auditoria.
Data Science em produção: dashboards interativos para análise de decisões.
7. Conclusão
Interpretação e explicabilidade são fundamentais para modelos complexos e críticos.
SHAP e LIME são ferramentas poderosas:
SHAP → visão global e local, detalhada
LIME → explicação local rápida e interpretável
Seguindo boas práticas, é possível aumentar confiança, detectar vieses e comunicar resultados de forma clara, garantindo modelos robustos e auditáveis.
Comentários
Postar um comentário