Ir para o conteúdo

Explicabilidade

Os modelos que vencem as Partes V e VI — florestas, boosters, redes — são caixas-pretas: milhares de árvores ou milhões de pesos sem uma história legível. Ainda assim, a discussão de ética impôs um requisito rígido: decisões que afetam pessoas precisam ser explicáveis. Regulações (GDPR, a LGPD brasileira), a depuração de modelos e a caça a vazamentos exigem todas a mesma capacidade. O ML explicável (XAI) a fornece.

Duas perguntas complementares:

  • Global: como o modelo se comporta no geral — quais atributos o guiam?
  • Local: por que o modelo fez esta previsão para este caso?

Interpretável por design

Antes de explicar uma caixa-preta, pergunte se você precisa de uma. A regressão linear/logística (coeficientes, razões de chances) e as árvores de decisão pequenas (regras legíveis) são transparentes nativamente. Quando sua acurácia basta — o que ocorre com frequência em problemas tabulares — a explicação mais simples é o próprio modelo. Quando a diferença de acurácia justifica uma caixa-preta, use métodos post-hoc e agnósticos ao modelo:

Importância por permutação (global)

Já vista em Random Forest: embaralhe a coluna de um atributo em dados separados e meça a queda no escore. Quebrar o vínculo atributo–alvo destrói exatamente a informação que o modelo extraiu daquele atributo.

Importância por permutação dos 8 principais atributos

As repetições geram uma distribuição (caixas), separando o sinal real do ruído do embaralhamento. Uma ressalva: com atributos fortemente correlacionados, embaralhar um deixa seu gêmeo disponível — ambos parecem sem importância mesmo quando o par é crítico. Confira a matriz de correlação em paralelo.

SHAP (local + global)

O SHAP (Lundberg & Lee, 2017) responde à pergunta local com rigor da teoria dos jogos. Trate os atributos como jogadores cooperando para produzir a previsão; o valor de Shapley (Shapley, 1953) \(\phi_j\) é a parcela justa do atributo \(j\) no prêmio — sua contribuição, na média sobre todas as ordens em que os atributos poderiam entrar:

\[ \hat{f}(x) = \underbrace{\mathbb{E}[\hat{f}]}_{\text{valor base}} + \sum_{j=1}^{d} \phi_j(x) \]

O único esquema de atribuição que satisfaz axiomas de justiça (eficiência — as contribuições somam exatamente a previsão menos a média; simetria; aditividade). O cálculo exato é exponencial, mas o TreeSHAP o computa eficientemente para ensembles de árvores — um par perfeito para modelos da família XGBoost.

# pip install shap
import shap

explainer = shap.TreeExplainer(model)          # para ensembles de árvores
shap_values = explainer(X_test)

shap.plots.waterfall(shap_values[0])   # LOCAL: esta previsão, atributo por atributo
shap.plots.beeswarm(shap_values)       # GLOBAL: importância + direção dos efeitos
shap.plots.scatter(shap_values[:, "age"])   # dependência: efeito da idade nos dados
  • Waterfall: a partir do valor base, cada atributo empurra a previsão para cima (vermelho) ou para baixo (azul) — a frase exata de que um analista de crédito precisa: "negado principalmente por: 3 pagamentos atrasados (+0,31), renda abaixo de X (+0,12), tempo de relacionamento longo (−0,05)";
  • Beeswarm: um ponto por amostra por atributo — importância global com direção (valores altos do atributo X empurram as previsões para cima?).

LIME (local)

O LIME (Ribeiro et al., 2016 — "Why Should I Trust You?") explica uma previsão ajustando um modelo simples na vizinhança: perturbe a instância, obtenha as previsões da caixa-preta para as amostras perturbadas (ponderadas por proximidade) e ajuste um pequeno modelo linear localmente. Os coeficientes do substituto local são a explicação.

Intuitivo e funciona para qualquer modelo e tipo de dado (suas variantes para imagem/texto alternam superpixels/palavras). Fraquezas: as explicações dependem do esquema de perturbação e da largura da vizinhança, e podem ser instáveis — rode duas vezes, obtenha histórias diferentes. O SHAP virou em grande parte o padrão para trabalho tabular; o LIME permanece conceitualmente importante e útil além de tabelas.

Lendo explicações com responsabilidade

Explicação ≠ causalidade

SHAP/LIME descrevem o que o modelo usa, não como o mundo funciona. "O CEP empurra o escore para baixo" é um fato sobre o modelo — e possivelmente evidência de discriminação por proxy (o CEP fazendo as vezes de raça/renda), não uma afirmação causal sobre CEPs. Use explicações para auditar e depurar; use inferência causal para afirmar causas.

As explicações também são o instrumento de depuração do dia a dia: um atributo implausivelmente dominante em um beeswarm SHAP é a assinatura clássica de vazamento de dados; um gráfico de dependência sem sentido revela codificação ruim; drift nos padrões de explicação sinaliza problemas em produção.


Quiz