Explicações Contrafactuais
Visão geral
Uma explicação contrafactual responde à pergunta:
“O que precisaria ser diferente para o modelo fornecer um resultado diferente?”
Dada uma instância de entrada específica (por exemplo, uma solicitação de empréstimo), uma explicação contrafactual propõe uma versão minimamente alterada dessa entrada que inverteria (ou mudaria de forma relevante) a previsão do modelo. Isso torna os contrafactuais especialmente atraentes para explicações acionáveis e recurso algorítmico (algorithmic recourse): eles sugerem mudanças concretas que uma pessoa poderia fazer para obter uma decisão desejada.
Explicações contrafactuais são tipicamente explicações locais (local explanations) (elas explicam uma previsão para uma entrada), complementando métodos no estilo de atribuição como SHAP e LIME (Explicações Locais Interpretáveis e Agnósticas ao Modelo) (Local Interpretable Model-Agnostic Explanations). Para um contexto mais amplo sobre o escopo de explicações, veja Explicações Globais vs Locais.
Intuição por meio de um exemplo
Imagine um classificador binário para aprovação de crédito:
- Atributos de entrada:
income,credit_utilization,late_payments,loan_amount,age - Saída:
approved/denied
Para um determinado solicitante, o modelo retorna denied. Uma explicação contrafactual poderia ser:
- Se
credit_utilizationfosse 25% em vez de 45%, eincomefosse $68k em vez de $60k, então o modelo preveria approved.
Essa explicação não é “por que o modelo negou você” em um sentido causal; em vez disso, ela fornece uma entrada próxima que mudaria a decisão. Na prática, “próxima” deve refletir restrições significativas e o que de fato pode mudar.
Definição formal
Seja um modelo ( f: \mathcal{X} \rightarrow \mathcal{Y} ). Para uma instância dada ( x \in \mathcal{X} ) com previsão ( f(x) ), uma explicação contrafactual é uma entrada alternativa ( x' ) tal que:
- ( f(x') = y_{\text{target}} ) (ou atende a uma pontuação/limiar-alvo), e
- ( x' ) está “próximo” de ( x ) sob alguma distância ou custo ( d(x, x') ), e
- ( x' ) respeita restrições (viabilidade, acionabilidade, tipos de dados etc.).
Uma formulação comum é um problema de otimização:
[ \min_{x'} ; d(x, x') + \lambda \cdot \mathcal{L}(f(x'), y_{\text{target}}) \quad \text{s.t. constraints on } x' ]
Onde:
- ( d(x,x') ) codifica “mudança mínima” (por exemplo, distância L1/L2 ponderada, distância baseada em custo),
- ( \mathcal{L} ) penaliza a falha em atingir o resultado-alvo,
- as restrições impõem atributos imutáveis, intervalos válidos, categorias discretas e, às vezes, regras causais/de plausibilidade.
O que significa “mudança mínima”?
“Minimal” depende do seu objetivo:
- Menor mudança numérica (por exemplo, distância L2) gera soluções suaves, mas pode espalhar mudanças por muitos atributos.
- Mudança esparsa (por exemplo, distância L1) tende a modificar menos atributos, o que muitas vezes é mais fácil de comunicar.
- Mudança ponderada por custo (específica do domínio) reflete a dificuldade no mundo real (por exemplo, aumentar a renda em $5k pode ser mais difícil do que reduzir a utilização de crédito em 5%).
Em contextos de recurso, “minimal” muitas vezes é melhor interpretado como menos custosa em vez de matematicamente menor.
Explicações contrafactuais vs. contrafactuais causais
Em inferência causal, um contrafactual se refere a uma afirmação como: “Se intervíssemos para definir ( X=x' ), o que seria ( Y )?” Isso normalmente é modelado com modelos causais estruturais (structural causal models) e semântica do operador do (do-operator) (veja tópicos como Inferência Causal, se disponível no seu wiki).
Muitos métodos de explicação contrafactual em ML, no entanto, operam puramente sobre o modelo ( f ) e uma métrica de distância — sem um modelo causal do mundo. Isso leva a uma distinção essencial:
- Contrafactual do modelo: “Existe um ( x' ) tal que a saída do modelo muda.”
- Contrafactual do mundo real (causal): “Se mudássemos certos aspectos da realidade, o resultado verdadeiro mudaria.”
Uma explicação contrafactual pode ser útil mesmo sem fundamentação causal, mas acionabilidade e validade tornam-se muito mais difíceis quando relações causais importam (por exemplo, “mude seu nível de escolaridade” não é uma intervenção imediata).
Por que explicações contrafactuais são úteis
Explicações contrafactuais são populares porque podem:
- Apoiar recurso: oferecer às pessoas um caminho para alcançar um resultado desejado.
- Ser intuitivas: “Se X fosse diferente, então Y mudaria.”
- Ajudar a depurar modelos: revelar fronteiras de decisão surpreendentes ou dependência de interações estranhas entre atributos.
- Ajudar na comunicação: stakeholders frequentemente preferem afirmações concretas de “e se” a importâncias de atributos abstratas.
Elas são especialmente comuns em domínios de alto impacto (crédito, contratação, seguros, triagem em saúde) onde stakeholders pedem motivos acionáveis.
Métodos comuns de geração
Não existe um único melhor método; a escolha depende do tipo de modelo, das restrições e de se plausibilidade ou diversidade é necessária.
1) Métodos baseados em otimização (por gradiente ou solucionador)
Uma abordagem amplamente usada (popularizada por Wachter et al., 2017) resolve diretamente um problema de otimização para encontrar ( x' ).
- Funciona bem para modelos diferenciáveis (por exemplo, redes neurais, regressão logística).
- Pode lidar com restrições com penalidades, projeções ou otimização com restrições.
- Pode ter dificuldade com atributos discretos/categóricos sem tratamento especial.
Esboço de pseudocódigo
given x, target y_target
initialize x' := x
repeat until convergence:
compute loss := distance(x, x') + λ * prediction_loss(f(x'), y_target)
update x' to reduce loss (gradient step or solver step)
project x' back into feasible set (ranges, immutable features, categories)
return x'
Notas
- “Projeção” pode significar limitar intervalos numéricos, arredondar para a categoria mais próxima ou impor restrições monotônicas.
- Para modelos não diferenciáveis, você pode usar otimização sem derivadas (veja abaixo).
2) Programação inteira mista (MIP) e métodos exatos
Quando atributos são discretos e as restrições são complexas, você pode formular a busca contrafactual como um programa linear/quadrático inteiro misto (mixed-integer linear/quadratic program).
- Particularmente eficaz para modelos lineares, scorecards e alguns ensembles de árvores (com a codificação adequada).
- Pode fornecer garantias de otimalidade para o objetivo e as restrições escolhidos.
- Frequentemente é computacionalmente caro em grande escala.
3) Métodos de busca / heurísticos / de caixa-preta
Se ( f ) é uma caixa-preta (por exemplo, uma API remota) ou não diferenciável:
- Algoritmos genéticos
- Busca em feixe / busca best-first
- Otimização bayesiana
- Busca aleatória com rejeição/reparo
Eles podem ser surpreendentemente eficazes, mas podem exigir muitas consultas ao modelo e tratamento cuidadoso de restrições.
4) Métodos específicos para árvores (árvores de decisão e ensembles)
Para árvores de decisão, contrafactuais podem ser encontrados por:
- Enumerar caminhos alternativos da raiz até a folha que geram a classe desejada
- Calcular mudanças mínimas de atributos para satisfazer as divisões desse caminho
- Escolher o caminho viável mais próximo
Para árvores com boosting ou florestas aleatórias, métodos exatos são mais difíceis, mas ainda possíveis com codificações ou heurísticas especializadas.
5) Contrafactuais baseados em protótipos ou vizinho mais próximo
Uma abordagem simples é:
- Encontrar um exemplo de treino “similar” ( z ) com o rótulo desejado.
- Usar ( z ) (ou uma mistura entre ( x ) e ( z )) como contrafactual.
Prós:
- Frequentemente plausível, porque se baseia em dados reais.
- Fácil de explicar (“pessoas como você que foram aprovadas tinham…”).
Contras:
- O “vizinho aprovado mais próximo” ainda pode ser não acionável (pode diferir em atributos imutáveis).
- Pode vazar informações sensíveis se usado de forma inadequada (preocupações de privacidade).
6) Contrafactuais baseados em modelos gerativos (VAE/GAN/difusão)
Para melhorar a plausibilidade, alguns métodos geram contrafactuais restritos à variedade dos dados (data manifold) usando modelos gerativos:
- Treinar um VAE ou um modelo de difusão na distribuição de entrada.
- Buscar no espaço latente um ponto que decodifique para um ( x' ) que inverta a previsão.
- Opcionalmente impor restrições durante ou após a decodificação.
Isso pode reduzir contrafactuais irreais (por exemplo, combinações impossíveis de atributos), mas introduz complexidade e seus próprios modos de falha (por exemplo, viés do modelo gerativo, colapso de modos, descompasso de distribuição).
7) Conjuntos diversos de contrafactuais
Muitas vezes você quer múltiplos contrafactuais para oferecer diferentes “caminhos” até o resultado desejado. Métodos como DiCE (Explicações Contrafactuais Diversas) (Diverse Counterfactual Explanations) adicionam um termo de diversidade:
- Não apenas uma mudança mínima
- Mas um conjunto de alternativas viáveis e variadas (por exemplo, “aumentar renda” vs “reduzir dívida”)
A diversidade é valiosa quando usuários têm diferentes restrições ou preferências.
Restrições e acionabilidade
Uma explicação contrafactual só é útil se for viável e acionável. Em muitos domínios, as restrições são tão importantes quanto a própria otimização.
Atributos imutáveis, sensíveis e logicamente fixos
Alguns atributos não devem ser alterados:
- Imutáveis: data de nascimento, histórico passado (frequentemente), local de nascimento
- Sensíveis/protegidos: raça, etnia, sexo (dependendo de política e jurisdição)
Um bom sistema impõe:
- Restrições rígidas (hard constraints): não alterar esses atributos de forma alguma.
- Restrições brandas (soft constraints): desencorajar mudanças, mas permitir se explicitamente solicitado (raro na prática).
Restrições de domínio e de tipo de dado
Restrições comuns incluem:
- Intervalos: ( 0 \le \text{utilization} \le 1 )
- Inteiros: número de atrasos deve ser um inteiro não negativo
- Categorias: tipo de emprego deve ser um dentre um conjunto finito
- Validade de one-hot encoding: exatamente uma categoria ativa
- Políticas monotônicas: alguns atributos só podem mudar em uma direção (por exemplo, “número de inadimplências” tipicamente não pode ser reduzido retroativamente)
Custo e preferências do usuário
A acionabilidade frequentemente depende de custo, e o custo é específico do usuário:
- Quitar dívidas pode ser viável; aumentar renda pode não ser imediatamente viável.
- Um usuário pode preferir mudar um atributo em vez de outro (por exemplo, “posso reduzir a utilização de crédito, mas não posso mudar de emprego”).
Alguns sistemas incorporam uma função de custo:
[ \text{cost}(x \rightarrow x') = \sum_i w_i \cdot c_i(x_i, x'_i) ]
Onde ( w_i ) reflete importância, dificuldade ou preferência do usuário.
Tempo e viabilidade sequencial
Muitas mudanças reais são temporais:
- Aumentos de escolaridade levam anos e implicam progressão de idade.
- Mudanças na utilização de crédito podem afetar o score de crédito com atraso.
- Intervenções médicas têm cronogramas e efeitos colaterais.
Explicações contrafactuais que ignoram tempo podem propor mudanças irreais “instantâneas”.
Exemplos práticos
Exemplo 1: Classificador por limiar (aprovação de crédito)
Suponha que um modelo simplificado aprove se:
[ 0.03 \cdot \text{income} - 2.0 \cdot \text{utilization} - 1.0 \cdot \text{late_payments} > 1.0 ]
Para:
- income = 60 (isto é, $60k)
- utilization = 0.45
- late_payments = 1
A pontuação é:
- ( 0.03 \cdot 60 - 2.0 \cdot 0.45 - 1 = 1.8 - 0.9 - 1 = -0.1 ) → denied
Um contrafactual esparso poderia ser:
- Reduzir utilization de 0.45 para 0.20:
Nova pontuação: ( 1.8 - 0.4 - 1 = 0.4 ) ainda denied.
Ou reduzir utilization e late payments (nem sempre acionável), ou aumentar income:
- Aumentar income para 80: ( 2.4 - 0.9 - 1 = 0.5 ) ainda denied.
Combinado:
- income para 90 e utilization para 0.30:
- ( 2.7 - 0.6 - 1 = 1.1 ) → approved
Um sistema real anexaria custos e restrições (por exemplo, late payments imutável, mudança em utilization limitada).
Exemplo 2: Recurso contrafactual com atributos categóricos
Modelo de contratação usa:
degree_level ∈ {HS, BA, MS}years_experience(inteiro)
Um contrafactual como “mude o diploma de HS para MS” pode ser teoricamente mínimo para o modelo, mas na prática não é acionável no curto prazo. Um contrafactual mais acionável poderia ser:
- “Aumente years_experience de 2 para 4” (se viável)
- Ou “obtenha BA” em vez de MS se ponderado por custo
Isso ilustra como métricas de distância que ignoram custo real produzem recomendações de baixa qualidade.
Exemplo 3: Depuração de modelo
Se um contrafactual sugere:
- “Mude o ZIP code de 12345 para 12347 para ser aprovado,”
isso pode ser um sinal de alerta indicando que o modelo pode estar usando localização como proxy para atributos sensíveis. Esta é uma forma comum de a análise contrafactual revelar riscos de justiça.
Como explicações contrafactuais são avaliadas
Métricas comuns (frequentemente em tensão entre si):
- Validade: ( f(x') ) atinge o resultado desejado?
- Proximidade: quão pequena é ( d(x, x') )?
- Esparsidade: quantos atributos mudaram?
- Plausibilidade: ( x' ) parece um ponto de dado realista (na variedade)?
- Viabilidade/acionabilidade: um usuário consegue realmente fazer essas mudanças?
- Diversidade (para conjuntos): múltiplos contrafactuais são significativamente diferentes?
- Estabilidade/robustez: pequenas mudanças em ( x ) produzem contrafactuais drasticamente diferentes?
- Custo computacional/de consultas: quão cara é a geração?
Como nenhuma métrica única captura utilidade humana, muitas implementações usam avaliação centrada no ser humano (human-centered evaluation): se usuários entendem, confiam de forma apropriada e conseguem agir com base nas recomendações.
Principais armadilhas e modos de falha
1) Contrafactuais implausíveis (“fora da variedade”)
Um contrafactual pode satisfazer o modelo, mas ser irrealista:
- Renda aumenta enquanto a dívida diminui de um jeito nunca visto nos dados
- Combinações impossíveis de variáveis categóricas
- Violação de correlações conhecidas (por exemplo, idade inconsistente com histórico educacional)
Isso não é meramente cosmético. Contrafactuais fora da variedade podem ser enganosos e podem se assemelhar a Exemplos Adversariais: mudanças mínimas que exploram a fronteira de decisão do modelo sem corresponder a mudanças significativas no mundo real.
Mitigações:
- Usar restrições de plausibilidade (modelos de densidade, suporte por kNN)
- Gerar via modelos gerativos
- Validar contra regras de domínio e conhecimento de especialistas
2) Falta de validade causal (o problema da “intervenção”)
Mesmo se ( x' ) for plausível como ponto de dado, ele pode não ser alcançável por intervenção nos atributos sugeridos.
Exemplo:
- Sugestão: “Aumente o nível de escolaridade para MS.”
- Realidade: fazer isso tipicamente muda renda, cargo, idade/tempo e outras variáveis downstream.
Sem modelagem causal, você pode propor mudanças que são internamente inconsistentes com a forma como o mundo funciona. Isso é especialmente problemático em saúde (“mude o biomarcador X”) onde biomarcadores são efeitos, não alavancas diretas.
Mitigações:
- Preferir variáveis de ação (action variables) (atributos que representam intervenções reais)
- Incorporar grafos causais/SCMs quando disponíveis
- Impor restrições direcionais/estruturais (alguns atributos não podem mudar independentemente)
3) Preocupações de justiça e recurso desigual
Explicações contrafactuais interagem profundamente com justiça:
- Mudanças em atributos protegidos: um contrafactual ingênuo pode dizer “mude sexo para masculino” ou “mude raça”, o que é inaceitável.
- Mudanças em proxies: mesmo se atributos protegidos forem fixos, contrafactuais podem recomendar mudanças em proxies (ZIP code) que codificam status socioeconômico.
- Disparidade de recurso: grupos diferentes podem enfrentar custos sistematicamente mais altos para obter um resultado favorável (“ônus do recurso”).
Mitigações:
- Impor imutabilidade de atributos protegidos e prováveis proxies (dependente de política)
- Medir distribuições de custo de recurso entre grupos
- Auditar sugestões discriminatórias
- Alinhar com frameworks de justiça (veja Justiça em Aprendizado de Máquina, se presente)
4) Não unicidade e explicações “escolhidas a dedo”
Frequentemente há muitos contrafactuais válidos. Um sistema pode apresentar o que é mais fácil para a instituição, não para o usuário — ou aquele que parece mais razoável enquanto oculta dependência problemática em atributos sensíveis.
Boa prática é fornecer:
- Um conjunto de contrafactuais diversos
- Declaração clara de suposições (função de custo, restrições)
- Informação sobre incerteza e limitações do modelo
5) Ciclos de realimentação e jogo estratégico
Contrafactuais podem permitir que usuários joguem com o modelo (às vezes desejável como recurso, às vezes prejudicial). Em detecção de fraude, por exemplo, revelar mudanças mínimas para evadir detecção pode comprometer a segurança.
Mitigações:
- Limitar detalhes em contextos adversariais
- Usar políticas robustas, monitoramento e modelagem de ameaças
- Separar “recurso para consumidor” de “orientação para atacante”
6) Atualizações do modelo e mudança de distribuição
Se o modelo muda, conselhos contrafactuais antigos podem se tornar inválidos. Se a distribuição de dados muda (mudanças econômicas, mudanças de política), o recurso pode deixar de funcionar.
Mitigações:
- Marcar explicações com carimbo de tempo
- Revalidar recurso periodicamente
- Comunicar expectativas de estabilidade
Relação com outros métodos de explicabilidade
Explicações contrafactuais respondem: “Como o resultado poderia mudar?”
Métodos de atribuição respondem: “Quais atributos contribuíram para o resultado?”
- SHAP e LIME (Explicações Locais Interpretáveis e Agnósticas ao Modelo) (Local Interpretable Model-Agnostic Explanations) fornecem explicações locais no estilo importância de atributos.
- Contrafactuais fornecem alternativas orientadas à ação.
Eles podem se complementar:
- Use SHAP para identificar atributos influentes.
- Use otimização contrafactual restrita a esses atributos para propor recurso.
Observações de implementação e dicas práticas
Tratando variáveis categóricas corretamente
Abordagens comuns:
- Otimizar em um espaço relaxado e depois ajustar (snap) para a categoria válida mais próxima (pode introduzir erros).
- Usar variáveis inteiras (MIP) para tratamento exato.
- Buscar explicitamente sobre categorias (enumeração para conjuntos pequenos).
- Usar abordagens de embedding + decodificação com cautela (risco de categorias inválidas).
Escolhendo uma função de distância/custo
Uma função de custo prática orientada a recurso geralmente inclui:
- Escalonamento de atributos (evita dominância por unidade)
- Custos assimétricos (aumentar renda vs diminuir renda)
- Restrições rígidas para imutáveis
- Penalidades por mudar muitos atributos
Um pequeno esboço ilustrativo em estilo Python (conceitual)
# Conceptual sketch: gradient-based counterfactual for a differentiable model f
x_cf = x.clone().requires_grad_(True)
for _ in range(steps):
pred = f(x_cf)
pred_loss = (pred - target_score).clamp(min=0) # enforce reaching target
dist = ((x_cf - x) * w).abs().sum() # weighted L1 for sparsity
loss = dist + lam * pred_loss
loss.backward()
with torch.no_grad():
x_cf -= lr * x_cf.grad
x_cf.grad.zero_()
# Enforce constraints
x_cf[immutable_idx] = x[immutable_idx]
x_cf = x_cf.clamp(min_bounds, max_bounds)
x_cf = snap_categoricals(x_cf)
Sistemas reais precisam de melhor tratamento de restrições, verificações de convergência e controles de plausibilidade, mas isso mostra a mecânica central.
Boas práticas para uso responsável
- Seja explícito sobre suposições: o que “minimal” significa, quais restrições foram aplicadas e se as sugestões têm garantia de funcionar no mundo real.
- Priorize acionabilidade: restrinja a atributos controláveis e horizontes de tempo realistas.
- Aborde causalidade onde importa: evite recomendar mudanças em variáveis não acionáveis (efeitos em vez de causas).
- Forneça múltiplas opções: contrafactuais diversos reduzem a chance de orientação inútil ou enviesada.
- Audite justiça do recurso: compare o custo de recurso entre grupos; observe recomendações com proxies sensíveis.
- Evite prometer demais: uma explicação contrafactual trata do comportamento do modelo, não necessariamente da verdade fundamental ou de uma justificativa legal.
- Considere privacidade e segurança: métodos de vizinho mais próximo podem vazar dados; contrafactuais detalhados podem ajudar adversários em alguns contextos.
Resumo
Explicações contrafactuais são uma ferramenta poderosa de explicabilidade local: elas propõem mudanças mínimas e restritas em uma entrada que produziriam uma previsão diferente do modelo, respondendo diretamente “o que precisaria ser diferente?”. Elas são particularmente valiosas para recurso e comunicação centrada no usuário, mas também são fáceis de usar indevidamente se restrições, plausibilidade, causalidade e justiça não forem tratadas com cuidado. Sistemas contrafactuais robustos tratam a geração como um problema de otimização/busca com restrições mais um problema de design responsável: definir custos significativos, impor acionabilidade, validar realismo e auditar quem de fato pode se beneficiar das mudanças sugeridas.