Interpretação de Modelos de Aprendizado de Máquina em Saúde com SHAP

SBCAS 2026

Letícia Martins Raposo

2026-01-05

Sobre mim

🎓 Formação Acadêmica

Ano Título Instituição
2011 Graduação em Biomedicina UNIRIO
2013 Licenciatura em Matemática UFF
2014 Mestrado em Eng. Biomédica UFRJ
2018 Doutorado em Eng. Biomédica UFRJ

🏛️ Atuação Atual

Professora Adjunta
Dep. de Métodos Quantitativos (DMQ)
UNIRIO

Professora Colaboradora
Prog. de Pós-Graduação em
Engenharia Biomédica — COPPE/UFRJ

🔬 Linha de Pesquisa

Pesquisa na interface entre estatística, aprendizado de máquina e inteligência artificial, com aplicações voltadas para a saúde.

📍 Onde fica a UNIRIO?

🏛️ No coração da Urca

A UNIRIO fica num dos bairros mais charmosos do Rio — a Urca — rodeada por marcos icônicos da cidade:

  • 🍞 Pão de Açúcar — a 800m
  • 🏖️ Praia Vermelha — a 500m
  • 🎓 IME — vizinho de quarteirão
  • 🌊 Vista para a Baía de Guanabara

🎓 Estudar na UNIRIO é ter o Rio de Janeiro como campus estendido.

📸 A vizinhança não é nada mal…

Praia Vermelha / Pão de Açucar — a 5 min a pé

👋 Bem-vindos!


Sobre este minicurso

  • ⏱ 3 horas · 2 partes de 1h30 + intervalo
  • 💻 Exemplos em R (com referências em Python)
  • 📦 Dataset: risco cardiovascular (Kaggle, ~70k casos)
  • 🎯 Do zero à interpretação clínica

github.com/leticiaraposo/shap-sbcas26

🎯 Público-alvo & pré-requisitos

Para quem é este curso?

  • Pesquisadores em informática em saúde
  • Cientistas de dados com interesse clínico
  • Profissionais de saúde curiosos sobre IA
  • Estudantes de pós-graduação

Pré-requisitos mínimos

  • Noções de aprendizado de máquina
  • Familiaridade com R ou Python
  • Interesse em transparência de modelos

Ao final, você conseguirá:

✅ Explicar por que interpretabilidade importa em saúde

✅ Calcular valores SHAP em R/Python

✅ Interpretar gráficos SHAP globais e locais

✅ Identificar limitações e riscos do SHAP

✅ Apontar implicações éticas e regulatórias

🔥 Warm-up

Levante a mão:

  1. Quem já treinou algum modelo de ML?
  2. Quem já tentou explicar o que o modelo fez?
  3. Quem trabalha diretamente com dados clínicos?
  4. Quem já ouviu falar em SHAP?

PARTE I

Fundamentos de Interpretabilidade e Teoria do SHAP

IA na saúde: poder e opacidade


Modelos de ML estão por toda parte:

  • Detecção de retinopatia diabéticaComplicação do diabetes em que os vasos da retina são danificados, podendo causar perda progressiva da visão.
  • Risco de readmissão hospitalar
  • Alerta precoce em UTI
  • Diagnóstico de arritmias

O problema:

“Modelos mais complexos envolvem milhares/milhões de parâmetros — interpretá-los diretamente se torna inviável.”

Consequência: Profissionais da saúde tendem a resistir a recomendações que não entendem.

📖 Miotto et al. (2018); Rajkomar et al. (2018); Topol (2019); Bajwa et al. (2023); Hannun et al. (2019); Tonekaboni et al. (2019); Lipton (2018).

IA na saúde: poder e opacidade

Interpretabilidade vs Explicabilidade

Definições

InterpretabilidadeExemplo: “Idade elevada e pressão arterial baixa aumentaram o risco previsto”. — capacidade de entender como um modelo transforma dados de entrada em uma previsão, usando categorias compreensíveis para humanos.

Explicabilidade — conjunto de métodos empregados para tornar esse comportamento inteligível, especialmente em modelos complexos.

Ideia-chave: interpretabilidade é o objetivo; explicabilidade é o caminho metodológico para alcançá-lo.

Por que importa clinicamente?

  • Priorização de pacientes em emergências
  • Estratificação de risco em doenças crônicas
  • Diagnóstico assistido por imagem, sinais ou exames
  • Alertas precoces de deterioração em UTI

“Compreender os fatores que sustentam uma predição é tão importante quanto o desempenho do modelo.”

Como analisar explicações de modelos?


Há dois eixos fundamentais para classificar métodos de explicabilidade:


Eixo Pergunta orientadora Exemplos
Escopo A explicação vale para o modelo inteiro ou para uma previsão específica? Global Global: explica o comportamento médio do modelo. Ex: importância de variáveis. vs. local Local: explica uma previsão individual. Ex: por que este paciente foi classificado como alto risco?
Dependência O método precisa conhecer a estrutura interna do modelo? Específico de modelo Específico: acessa os internals do algoritmo. Ex: coeficientes da regressão. vs. agnóstico Agnóstico: trata o modelo como caixa-preta, funciona com qualquer algoritmo. Ex: SHAP, LIME.


📖 Stiglic et al. (2020); Molnar (2022); Tonekaboni et al. (2019); Hakkoum et al. (2024); Salih et al. (2023); Vimbi et al. (2024); Amann et al. (2020)

Modelos caixa-preta: o que os torna opacos?


Modelo Por que pode ser opaco?
CNN para imagens médicas Aprende padrões nas imagens que nem sempre correspondem a sinais clínicos fáceis de reconhecer.
Transformer para texto clínico Usa representações matemáticas do texto que podem ser difíceis de transformar em uma explicação clínica direta.
XGBoost / Random Forest Combina muitas árvores de decisão, o que dificulta entender rapidamente como chegou à previsão final.
Rede neural profunda Mistura muitas variáveis em várias camadas, tornando difícil saber qual fator pesou mais na decisão.

O problema não é apenas o número de parâmetros. A opacidade surge quando o raciocínio do modelo não pode ser facilmente traduzido em uma explicação clinicamente significativa.

Métodos pós-hoc: o que já existia antes do SHAP?

Método Uso Cuidado principal
Permutation Importance Mede a importância de uma variável observando quanto o desempenho do modelo piora quando seus valores são embaralhados. Visão geral do modelo Variáveis correlacionadas podem distorcer o resultado.
Local Interpretable Model-Agnostic Explanations (LIME) Explica uma previsão específica usando um modelo simples ao redor daquela observação. Explicação de um caso Pode mudar conforme as simulações usadas.
Partial Dependence Plots (PDP) e Individual Conditional Expectation (ICE) PDP mostra o efeito médio de uma variável. ICE mostra esse efeito caso a caso. Efeito de uma variável Médias podem esconder diferenças entre indivíduos.
Gradient-weighted Class Activation Mapping (Grad-CAM) Destaca as regiões da imagem que mais influenciaram a previsão do modelo. Explicação visual É mais usado em redes neurais para imagens.

📖 Burrell (2016); Bodria et al. (2021); Hassija et al. (2023); Mienye & Sun (2025); Ribeiro et al. (2016) [LIME]; Greenwell (2017) [PDP]; Hooker & Mentch (2019); Rudin (2019); Obermeyer et al. (2019)

Por que SHAP?


SHAP responde a uma pergunta central: quanto cada variável contribuiu para esta previsão?


Antes do SHAP

Métodos pós-hoc podem produzir explicações úteis, mas essas explicações dependem de escolhas aproximadas feitas durante a análise.


Com SHAP

A explicação passa a ser formulada como um problema de atribuição justa de contribuição, inspirado na Teoria dos Jogos Cooperativos.

Teoria dos Jogos Cooperativos


A analogia do jogo:

Imagine variáveis clínicas como jogadores em uma equipe:

  • Cada “jogador” contribui para a predição final
  • Queremos distribuir o crédito de forma justa

Definição formal:

Um jogo cooperativo é definido por \((N, v)\) em que \(N = \{1, 2, \dots, n\}\) e:

  • \(N\) representa o conjunto de variáveis do modelo;
  • \(S \subseteq N\) representa um subconjunto de variáveis (coalizão);
  • \(v(S)\) representa o valor produzido pelo modelo usando apenas as variáveis em \(S\);
  • \(v(\emptyset)\) representa a previsão de referência, antes de observar qualquer variável.

Teoria dos Jogos Cooperativos


O problema: Como distribuir \(v(N)\) entre as variáveis?

Exemplo cardiovascular:

Jogadores:
  j1 = idade_anos
  j2 = imc
  j3 = ap_hi (pressão sistólica)
  j4 = colesterol
  j5 = tabagismo
  ...

Coalização {j1, j3}:
  v({j1, j3}) = predição esperada do modelo quando idade e pressão são conhecidas, mas   as demais variáveis ainda são desconhecidas.

Objetivo:
  φ_i = contribuição justa de cada variável para a predição do paciente X

📖 Shapley (1953); Nohara et al. (2021); Ghasemi et al. (2024); Vimbi et al. (2024); Ghosh et al. (2024); Hettikankanamage et al. (2025); Covert et al. (2020)

Valores de Shapley: a fórmula


\[ \underbrace{\phi_i}_{\substack{\text{contribuição}\\\text{da variável } i}} = \underbrace{ \sum_{S \subseteq N \setminus \{i\}} }_{\substack{\text{todas as coalizões}\\\text{sem a variável } i}} \underbrace{ \dfrac{|S|!\,(|N|-|S|-1)!}{|N|!} }_{\substack{\text{peso de cada}\\\text{coalizão}}} \underbrace{ \left[v(S \cup \{i\}) - v(S)\right] }_{\substack{\text{ganho ao adicionar}\\\text{a variável } i}} \]


O valor de Shapley calcula a contribuição marginal média da variável \(i\), considerando todos os contextos possíveis em que ela poderia aparecer.

Lloyd Shapley Nascido em Cambridge, MA (1923). Graduado em Harvard, doutor em Princeton sob orientação de Albert Tucker. Pesquisador na RAND Corporation e professor na UCLA. Prêmio Nobel de Economia em 2012 junto com Alvin Roth, pelo trabalho em teoria de jogos cooperativos e mecanismos de alocação estável.
(1923 – 2016)
Teoria dos jogos · UCLA
🏆 Nobel de Economia (2012)

Parte 1: o que queremos estimar?


\[ \phi_i = \sum_{S \subseteq N \setminus \{i\}} \frac{|S|!\,(|N|-|S|-1)!}{|N|!} \left[ v(S \cup \{i\}) - v(S) \right] \]

Nesta etapa, foque em \((\phi_i)\).


\((\phi_i)\) é o valor de Shapley da variável \((i)\).

Ele representa a contribuição atribuída à variável \((i)\) para deslocar a previsão da linha de base até a previsão final.


φ_idade = contribuição da idade para o risco previsto deste paciente

Parte 2: quais contextos são avaliados?


\[ \phi_i = \sum_{S \subseteq N \setminus \{i\}} \frac{|S|!\,(|N|-|S|-1)!}{|N|!} \left[ v(S \cup \{i\}) - v(S) \right] \]

Nesta etapa, foque em \((S \subseteq N \setminus \{i\})\): S é um subconjunto do conjunto de todas as variáveis N, excluindo a variável i.


Cada subconjunto \((S)\) funciona como um contexto possível antes de avaliarmos a contribuição de \((i)\).


S = {idade, pressão sistólica}

Pergunta: qual seria a previsão usando apenas essas variáveis, antes de adicionar a variável i?

Parte 3: por que existe um peso?


\[ \phi_i = \sum_{S \subseteq N \setminus \{i\}} \frac{|S|!\,(|N|-|S|-1)!}{|N|!} \left[ v(S \cup \{i\}) - v(S) \right] \]

Nesta etapa, foque em \(\frac{|S|!\,(|N|-|S|-1)!}{|N|!}\). Esse termo vem de uma contagem combinatória das ordens possíveis de entrada das variáveis.


Esse termo é o peso combinatório da coalizão \((S)\). Ele indica a frequência relativa com que o conjunto \((S)\) apareceria antes da variável \((i)\) se considerássemos todas as ordens possíveis de entrada das variáveis.

Exemplo simples: três variáveis

Suponha que temos três variáveis (\(N = \{A, B, C\}\)) e queremos calcular a contribuição de \(i = C\).

Todas as ordens possíveis são:

Ordem de entrada Variáveis antes de \(C\)
\(C, A, B\) \(\emptyset\)
\(C, B, A\) \(\emptyset\)
\(A, C, B\) \(\{A\}\)
\(B, C, A\) \(\{B\}\)
\(A, B, C\) \(\{A,B\}\)
\(B, A, C\) \(\{A,B\}\)


Assim:

Conjunto \(S\) antes de \(C\) Quantas vezes aparece? Peso
\(\emptyset\) 2 vezes \(\frac{2}{6}\)
\(\{A\}\) 1 vez \(\frac{1}{6}\)
\(\{B\}\) 1 vez \(\frac{1}{6}\)
\(\{A,B\}\) 2 vezes \(\frac{2}{6}\)

Ligando o exemplo à fórmula

O peso de cada conjunto \(S\) é:

\[ \frac{|S|!\,(|N|-|S|-1)!}{|N|!} \]

No exemplo:

\[ N = \{A,B,C\} \qquad i = C \qquad |N| = 3 \]

\(S\) Cálculo Peso
\(\emptyset\) \(\frac{0!\,(3-0-1)!}{3!} = \frac{0!\,2!}{3!}\) \(\frac{2}{6}\)
\(\{A\}\) \(\frac{1!\,(3-1-1)!}{3!} = \frac{1!\,1!}{3!}\) \(\frac{1}{6}\)
\(\{B\}\) \(\frac{1!\,(3-1-1)!}{3!} = \frac{1!\,1!}{3!}\) \(\frac{1}{6}\)
\(\{A,B\}\) \(\frac{2!\,(3-2-1)!}{3!} = \frac{2!\,0!}{3!}\) \(\frac{2}{6}\)

O peso diz quanto cada contribuição marginal deve contar na média final.

Parte 4: qual é a contribuição marginal?


\[ \phi_i = \sum_{S \subseteq N \setminus \{i\}} \frac{|S|!\,(|N|-|S|-1)!}{|N|!} \left[ v(S \cup \{i\}) - v(S) \right] \]

Nesta etapa, foque em \(v(S \cup \{i\}) - v(S)\) — valor da previsão com a variável \((i)\) menos valor da previsão sem a variável \((i)\).

Esse termo mede o quanto a previsão muda quando adicionamos a variável \((i)\) ao subconjunto \((S)\).

Em linguagem direta, ele compara a previsão com e sem a variável \((i)\).

contribuição marginal = previsão com i − previsão sem i

Se a diferença for positiva, a variável aumenta a previsão.

Se for negativa, a variável reduz a previsão.

Parte 5: leitura completa da fórmula


\[ \phi_i = \sum_{S \subseteq N \setminus \{i\}} \frac{|S|!\,(|N|-|S|-1)!}{|N|!} \left[ v(S \cup \{i\}) - v(S) \right] \]

O valor de Shapley é a média ponderada das contribuições marginais da variável \((i)\), considerando todos os subconjuntos possíveis de variáveis.


Em português:

A variável recebe crédito pelo quanto ela acrescenta à previsão, em média, quando entra em diferentes combinações com as demais variáveis.

Shapley = média ponderada do impacto de uma variável em todos os contextos possíveis

Valores de Shapley: contribuição da idade

Paciente: 65 anos · Pressão sistólica: 160 mmHg · Colesterol: 240 mg/dL
Predição final: 72% de risco cardiovascular
Ponto de partida: 30% de risco médio no conjunto de referência

Pergunta: Quanto a variável idade contribuiu para levar a predição de 30% para 72%?

A ideia do Shapley é simples! Calculamos quanto a predição muda quando a idade entra no modelo em diferentes momentos: às vezes antes de todas as outras variáveis, às vezes depois da pressão, às vezes depois do colesterol.

Situação O que já era conhecido antes da idade? Predição antes Predição depois da idade Mudança atribuída à idade
1 Nada 30% 58% +28 p.p.
2 Nada 30% 58% +28 p.p.
3 Pressão 52% 70% +18 p.p.
4 Colesterol 45% 68% +23 p.p.
5 Pressão + colesterol 65% 72% +7 p.p.
6 Pressão + colesterol 65% 72% +7 p.p.

\[ \phi_{\text{idade}} = \frac{28 + 28 + 18 + 23 + 7 + 7}{6} = 18{,}5 \]

Onde entra o peso combinatório?

No exemplo com três variáveis, há \(3! = 6\) ordens possíveis de entrada. Cada ordem tem peso \(\frac{1}{6}\).

Mas algumas coalizões aparecem em mais de uma ordem.

Coalizão antes da idade Quantas ordens geram essa coalizão? Peso Mudança
\(\emptyset\) 2 ordens \(\frac{2}{6}\) \(+28\) p.p.
\(\{\text{Pressão}\}\) 1 ordem \(\frac{1}{6}\) \(+18\) p.p.
\(\{\text{Colesterol}\}\) 1 ordem \(\frac{1}{6}\) \(+23\) p.p.
\(\{\text{Pressão, Colesterol}\}\) 2 ordens \(\frac{2}{6}\) \(+7\) p.p.

Então:

\[ \phi_{\text{idade}} = \frac{2}{6}(28) + \frac{1}{6}(18) + \frac{1}{6}(23) + \frac{2}{6}(7) = 18{,}5 \]

As 4 propriedades axiomáticas


Os valores de Shapley são definidos por propriedades formais que determinam como o crédito deve ser distribuído entre as variáveis.

Propriedade Ideia central Interpretação no SHAP
Eficiência Todo o efeito da previsão deve ser distribuído A soma dos SHAP explica a diferença entre a previsão do paciente e a previsão média. \(\sum_{i} \phi_i = f(x) - E[f(x)]\)
Simetria Variáveis equivalentes recebem o mesmo crédito Se duas variáveis contribuem da mesma forma em todos os contextos, seus valores SHAP devem ser iguais.
Nulidade Variáveis sem efeito recebem contribuição zero Se uma variável não altera a previsão em nenhuma coalizão, então seu SHAP value deve ser \(\phi_i = 0\).
Aditividade Explicações de modelos combinados também se combinam Se dois modelos são somados, as contribuições atribuídas às variáveis também devem se somar.

📖 Shapley (1953); Lundberg & Lee (2017); Lundberg et al. (2018); Bifarin et al. (2022); Belle & Papantonis (2020); Hettikankanamage et al. (2025); Auzine et al. (2024)

TreeSHAP: tornando SHAP computacionalmente viável

O problema

O SHAP exato exige avaliar todas as coalizões possíveis:

Variáveis (\(n\)) Subconjuntos (\(2^n\)) Viável?
10 1.024
20 1.048.576 ⚠️
50 \(\approx 10^{15}\)
100 \(\approx 10^{30}\)

Datasets reais de saúde facilmente têm 50–200 variáveis — o SHAP exato torna-se inviável.

A solução: explorar a estrutura da árvore

TreeSHAPLundberg et al. (2020). From local explanations to global understanding with explainable AI for trees. Nature Machine Intelligence. não enumera coalizões — ele percorre os caminhos da árvore uma única vez, propagando os pesos das coalizões ao longo dos nós.


O TreeSHAP é exato — não é uma aproximação. Ele produz os mesmos valores que o SHAP teórico, mas em tempo polinomial, explorando a estrutura interna das árvores.

📖 Lundberg, S. M. et al. (2020). From local explanations to global understanding with explainable AI for trees. Nature Machine Intelligence, 2, 56–67.

TreeSHAP: percorrendo a árvore

O que o TreeSHAP faz?

O TreeSHAP abre a árvore e lê sua estrutura diretamente — percorrendo cada caminho uma única vez de cima para baixo:

  1. Em cada nó, registra quantas amostras de treino seguiram cada ramo — isso substitui a amostragem de coalizões
  2. Essa proporção vira o peso exato da coalizão, sem aproximação
  3. Ao chegar numa folha, a contribuição marginal de cada variável já está calculada — basta somar

Caminho do paciente (65 anos, pressão 160 mmHg):
Idade ≥ 60 → Sim → Pressão ≥ 140 → Sim → folha: 72%
O TreeSHAP percorre esse caminho e distribui os +42 pp acima da baseline entre as variáveis que tomaram cada decisão.

Idade ≥ 60? nó raiz · peso = 1/3 Sim Não Pressão ≥ 140? peso = 1/3 Colesterol ≥ 220? peso = 1/3 Sim Não Sim Não 72% Alto risco 45% Risco moderado 38% Risco moderado 18% Baixo risco

━━━ caminho do paciente (65 anos, pressão 160 mmHg)

📖 Lundberg, S. M. et al. (2020). From local explanations to global understanding with explainable AI for trees. Nature Machine Intelligence, 2, 56–67.

TreeSHAP: quando o modelo tem muitas árvores

Ideia principal

Modelos como XGBoost, LightGBM e Random Forest combinam muitas árvores.

O TreeSHAP não tenta testar todos os subconjuntos manualmente.

Ele aproveita a própria estrutura das árvores:

  1. percorre uma árvore por vez;
  2. usa os caminhos e divisões da árvore;
  3. calcula contribuições locais;
  4. soma as contribuições entre árvores.

Exemplo

Fonte Idade Pressão Colesterol
Árvore 1 +2 +4 0
Árvore 2 +1 0 +3
Árvore 3 -0,5 +2 +1
SHAP final soma soma soma


\[ \phi_j = \sum_{t=1}^{T} \phi_j^{(t)} \]

\(T\) é o número de árvores.
\(\phi_j^{(t)}\) é a contribuição da variável \(j\) na árvore \(t\).

KernelSHAP: SHAP para qualquer modelo

A ideia central

O TreeSHAP abre a árvore e lê sua estrutura. Mas e quando o modelo é uma rede neural, uma SVM, ou qualquer caixa-preta?

O KernelSHAP resolve isso sem precisar ver o interior do modelo:

  1. Escolhe subconjuntos aleatórios de variáveis
  2. Pergunta ao modelo: “qual seria sua predição só com essas variáveis?”
  3. Repete isso muitas vezes, com pesos diferentes para cada subconjunto
  4. Ajusta um modelo linear simples por cima dessas predições (regressão explicativa local)
  5. Os coeficientes desse modelo linear são os valores SHAP

Analogia

Imagine que você quer entender por que um médico tomou uma decisão, mas ele não explica o raciocínio.

Você apresenta casos hipotéticos com diferentes combinações de sintomas e anota as respostas. Com casos suficientes, consegue inferir quanto cada sintoma pesou na decisão — sem nunca saber o que passa na cabeça do médico.

É exatamente isso que o KernelSHAP faz com o modelo.

📖 Lundberg & Lee (2017). A unified approach to interpreting model predictions. NeurIPS.

KernelSHAP: o problema das variáveis ausentes

O problema fundamental

O modelo foi treinado com todas as variáveis — ele não sabe funcionar com apenas algumas. Mas para calcular o SHAP, precisamos perguntar:

“Quanto a Idade contribui, ignorando Pressão e Colesterol?”

Não podemos simplesmente apagar essas colunas — o modelo quebraria.

A solução: fingir que não sabemos

Substituímos as variáveis ausentes por valores sorteados do dataset de treino — como se aquele paciente tivesse os valores “típicos” da população.

Paciente real: Idade=65 · Pressão=160 · Colesterol=240

Queremos avaliar \(S = \{\)Idade\(\}\) — só a Idade importa

Sorteamos valores de Pressão e Colesterol do treino:

Rodada Idade Pressão Colesterol Predição
1 65 118 195 52%
2 65 142 210 58%
3 65 130 225 55%
4 65 125 180 49%

Média das predições\(v(\{\)Idade\(\}) \approx 53\%\)

📖 Lundberg & Lee (2017). A unified approach to interpreting model predictions. NeurIPS.

KernelSHAP: por que sortear do treino?

A intuição

Queremos simular um paciente com Idade=65 mas sem informação sobre Pressão e Colesterol — e a melhor forma de representar “sem informação” é usar a distribuição real dos dados.

É como dizer:

“Se eu só soubesse que este paciente tem 65 anos, qual seria minha melhor estimativa de risco, considerando todas as combinações possíveis de pressão e colesterol que ele poderia ter?”

O que pode dar errado?

Instâncias irreais: se Pressão e Colesterol são correlacionados entre si, sortear cada um de forma independente pode criar combinações que nunca existem na prática — ex: Pressão=180 com Colesterol=120.

Isso não quebra o método, mas pode distorcer os valores SHAP em datasets com muitas correlações.

Quantas rodadas? O KernelSHAP usa entre 100 e 1.000 amostras por subconjunto por padrão. Mais amostras = mais preciso, mas mais lento. O TreeSHAP não precisa de nenhuma — calcula exato.

📖 Lundberg & Lee (2017). A unified approach to interpreting model predictions. NeurIPS.

KernelSHAP: onde entra a regressão?

Paciente real: idade = 65 · pressão = 160 · colesterol = 240
Objetivo: explicar a predição individual do modelo

1. Criamos versões incompletas

Idade Pressão Colesterol Predição média \(v(S)\)
0 0 0 30%
1 0 0 58%
0 1 0 52%
0 0 1 45%
1 1 0 70%
1 0 1 68%
0 1 1 65%
1 1 1 72%

1 = variável real do paciente é mantida
0 = variável é substituída por valores de referência

2. Ajustamos uma regressão explicativa

\[ v(S) \approx \phi_0 + \phi_{\text{idade}}z_{\text{idade}}' + \phi_{\text{pressão}}z_{\text{pressão}}' + \phi_{\text{colesterol}}z_{\text{colesterol}}' \] Exemplo:

\[ 72 = 30 + \phi_{\text{idade}} + \phi_{\text{pressão}} + \phi_{\text{colesterol}} \]

\(v(\{\text{idade}\}) = 58\%\) significa: predição média quando apenas a idade real do paciente é conhecida.
\(\phi_{\text{idade}}\) significa: contribuição final da idade considerando todos os contextos possíveis.

KernelSHAP vs TreeSHAP: quando usar cada um?

Use TreeSHAP quando…

  • O modelo é baseado em árvores: Random Forest, XGBoost, LightGBM, CatBoost
  • Você precisa de valores SHAP exatos
  • O dataset é grande e velocidade importa
  • Quer explicar muitas predições (ex: dataset inteiro)

Use KernelSHAP quando…

  • O modelo é uma caixa-preta: rede neural, SVM, regressão logística
  • Você aceita uma aproximação em troca de universalidade
  • Está explicando poucas predições (ex: casos individuais)
  • Quer um método independente de implementação

📖 Lundberg & Lee (2017). A unified approach to interpreting model predictions. NeurIPS.

Vamos ver o SHAP na prática?

Preparação dos dados

library(data.table); library(xgboost); library(shapviz); library(pROC)

# 1. Carregar dados -------------------------------------------------------
df <- fread("cardio_train.csv")

# 2. Limpeza clínica -------------------------------------------------------
df <- df[ap_hi %between% c(70, 250) &
         ap_lo %between% c(40, 150) &
         ap_hi > ap_lo &
         height %between% c(120, 220) &
         weight %between% c(40, 200)]

df[, age_years := age / 365.25]
df[, imc       := weight / (height / 100)^2]
df <- df[imc %between% c(15, 60)]
cat("N após limpeza:", nrow(df), "\n")
#> N após limpeza: 68533

Preparação dos dados

# 3. Features e particionamento estratificado -----------------------------
features <- c("age_years","gender","imc","ap_hi","ap_lo",
              "cholesterol","gluc","smoke","alco","active")
X <- as.matrix(df[, ..features]); y <- as.numeric(df$cardio)

set.seed(42)
idx_test <- c(sample(which(y==1), floor(.25*sum(y==1))),
              sample(which(y==0), floor(.25*sum(y==0))))

X_train <- X[-idx_test,]; y_train <- y[-idx_test]
X_test  <- X[idx_test, ]; y_test  <- y[idx_test]
dtrain  <- xgb.DMatrix(X_train, label = y_train)
dtest   <- xgb.DMatrix(X_test,  label = y_test)

Treinamento & SHAP

# 4. Treinar XGBoost -------------------------------------------------------
params <- list(objective = "binary:logistic", eval_metric = "auc",
               max_depth = 5, eta = 0.1, subsample = 0.8,
               colsample_bytree = 0.8, nthread = 4)

model <- xgb.train(params, dtrain, nrounds = 200,
                   watchlist = list(train = dtrain, test = dtest),
                   verbose = 0)

auc_val <- auc(y_test, predict(model, dtest))
cat(sprintf("AUC-ROC no teste: %.3f\n", auc_val))
#> AUC-ROC no teste: 0.801

Treinamento & SHAP

# 5. Calcular SHAP ----------------------------------------------------------
sv <- shapviz(model, X_pred = dtest, X = X_test)

# 'sv' contém:
#   sv$S      → matriz de valores SHAP (n_pacientes × n_features)
#   sv$X      → dados originais
#   sv$baseline → valor base da predição
cat("Dimensão SHAP:", dim(sv$S), "\n")
#> Dimensão SHAP: 17132 10

PARTE II

Visualizações, Interpretação Clínica, Limitações & Governança

Retomada rápida

O que vimos:

✅ Dilema acurácia × interpretabilidade

✅ Modelos caixa-preta em saúde

✅ Teoria dos Jogos Cooperativos

✅ Valores de Shapley (fórmula + axiomas)

✅ TreeSHAP e KernelSHAP

✅ Implementação em R com shapviz

Visualizações SHAP — Panorama

Gráfico Escopo Pergunta respondida Função em R
Bar Plot Global Quais variáveis importam mais (em média)? sv_importance(kind="bar")
Beeswarm Global Como cada variável afeta o risco na população? sv_importance(kind="beeswarm")
Dependence Plot Global Como o efeito de X varia com seus valores? sv_dependence(v="ap_hi")
Waterfall Local Por que este paciente tem risco alto? sv_waterfall(row_id=1)
Force Plot Local Visualização compacta individual sv_force(row_id=1)


Regra prática

Use global para validação clínica e comunicação com gestores.
Use local para decisões individuais e discussão caso a caso.

Bar Plot — Importância Global

# Importância média (bar)
sv_importance(sv, kind = "bar", fill = "#0a2342") +
  labs(title = "Importância global (|SHAP| médio)",
       x = "Impacto médio na predição (log-odds)")

Beeswarm — Importância Global

# Beeswarm — direção + distribuição
sv_importance(sv, kind = "beeswarm") +
  labs(title = "Distribuição dos valores SHAP",
       subtitle = "Amarelo = valor alto da variável")

Dependence Plot — Efeitos Não-Lineares

# Efeito da pressão sistólica
sv_dependence(sv, v = "ap_hi", color_var = "cholesterol") +
  labs(title = "SHAP(pressão sistólica) × valores", 
       subtitle = "Cor = nível de colesterol", 
       x = "Pressão sistólica (mmHg)", 
       y = "Contribuição SHAP (log-odds)")

Waterfall Plot — O Caso Individual

# Paciente de alto risco (exemplo)
idx_alto <- which(y_test == 1 & 
                    predict(model, dtest) > 0.8)[1]
sv_waterfall(sv, row_id = idx_alto, max_display = 8) + 
  labs(title = paste("Paciente #", idx_alto, "— Alto risco cardiovascular"))

Force Plot — Visualização Compacta

# Force plot — versão compacta
sv_force(sv, row_id = idx_alto) + 
  labs(title = paste("Paciente #", 
                     idx_alto, "— Alto risco cardiovascular"))

Aplicação clínica real

Em rondas hospitalares:

“O sistema indica alto risco. Vejamos por quê:”

  • Pressão de 165 mmHg: +0.82
  • 67 anos de idade: +0.54
  • Colesterol alto: +0.41
  • Ativo fisicamente: -0.28

Isso conecta a IA ao raciocínio clínico.

Lembrete crucial

A explicação descreve o modelo, não a fisiologia.

Não inferir causalidade — o SHAP mostra associações preditivas, não relações de causa e efeito.

Boa prática: apresente apenas os 3–5 fatores mais relevantes para evitar sobrecarga cognitiva em ambientes de alta pressão como UTI.

Limitações do SHAP: o que ele não garante

O SHAP ajuda a entender como o modelo chegou a uma predição. Mas ele não prova que a predição está correta, nem que a relação é causal.

Limitação Interpretação simples
Variáveis correlacionadas Quando duas variáveis carregam informação parecida, o SHAP pode dividir a contribuição de forma instável.
Dependência da implementação Diferentes formas de calcular SHAP podem gerar valores diferentes.
Explica o modelo, não a doença Um valor SHAP alto mostra importância para o modelo, não necessariamente importância clínica real.
Não indica causalidade A variável influenciou a predição, mas isso não significa que causou o desfecho.
Explicação não garante acerto O modelo pode errar e ainda produzir uma explicação coerente.
Risco de excesso de confiança Explicações convincentes podem fazer o usuário confiar demais no modelo.

Boas práticas no uso do SHAP

Etapa Boa prática Por que importa?
Antes da explicação Validar desempenho e calibração do modelo SHAP não corrige modelo ruim; apenas explica suas decisões.
Interpretação global Usar gráficos de importância, beeswarm e dependência Permite identificar padrões gerais e variáveis dominantes.
Interpretação local Analisar casos individuais com waterfall ou force plot Mostra quais variáveis contribuíram para uma predição específica.
Validação clínica Confrontar explicações com conhecimento especializado Associações estatísticas podem ser espúrias ou clinicamente implausíveis.
Comunicação Evitar linguagem causal SHAP descreve contribuição preditiva, não causa do desfecho.
Produção Monitorar drift e armazenar explicações Explicações podem mudar quando dados, população ou modelo mudam.

Ética, Regulação e Governança

Marcos regulatórios relevantes

Regulação Origem Exigência principal O que isso significa na prática?
GDPR União Europeia Direito à explicação de decisões automatizadas Pacientes têm direito de saber por que um sistema automatizado tomou uma decisão sobre eles — e de contestá-la.
LGPD Brasil Transparência no uso de dados pessoais Organizações devem informar como dados pessoais são usados em decisões automatizadas e garantir revisão humana quando solicitado.
EU AI Act União Europeia Sistemas de alto risco: explicabilidade obrigatória Sistemas de IA usados em saúde são classificados como alto risco — exigem documentação técnica, testes de robustez e explicações auditáveis antes de serem implantados.
FDA / ANVISA EUA / Brasil SaMD: documentação de propósito clínico e explicação Software as a Medical Device — modelos de ML usados em diagnóstico ou tratamento precisam de documentação do propósito clínico, evidência de desempenho e explicabilidade das decisões.

Princípio fundamental

🩺 Quem decide, afinal?

“A responsabilidade final permanece com o profissional de saúde, que deve interpretar as informações fornecidas pelo modelo à luz do contexto clínico.”

O modelo é uma ferramenta de apoio — como um exame laboratorial ou uma imagem de raio-X. Ele fornece informação; o profissional interpreta e decide.

A IA não assina a prescrição.
Se o modelo sugerir alto risco e o médico discordar com base no quadro clínico, o médico prevalece — e é responsável pela decisão.

🏛️ Governança mínima para uso seguro

1 Equipe multidisciplinarMédicos, enfermeiros, estatísticos, cientistas de dados e especialistas em ética devem participar juntos das decisões sobre o modelo — nenhuma área sozinha tem todas as respostas.
2 Validação pré-implantaçãoAntes de usar o modelo em pacientes reais, ele deve ser testado com dados externos e avaliado por profissionais de saúde para confirmar que funciona como esperado.
3 Monitoramento contínuoApós a implantação, o desempenho do modelo deve ser acompanhado regularmente — o perfil dos pacientes muda com o tempo e o modelo pode degradar sem que ninguém perceba.
4 Documentação auditávelTodas as versões do modelo, dados usados e decisões de design devem ser registradas. Regulações como LGPD e EU AI Act podem exigir que você explique decisões passadas.
5 Revisão após atualizaçõesQualquer mudança no modelo, nos dados ou no contexto clínico exige nova validação — uma atualização pode melhorar o desempenho geral e piorar para subgrupos específicos.

Perspectivas e fronteiras abertas

🔍 Limitações que motivam pesquisa

Dados longitudinaisEm séries temporais clínicas (ex: monitoramento de UTI ao longo de dias), o SHAP foi projetado para dados tabulares estáticos. Explicar como a contribuição de uma variável muda ao longo do tempo ainda é um problema em aberto.
Séries temporais clínicas: SHAP ainda tem limitações metodológicas

Dados multimodaisModelos modernos combinam imagem (raio-X), texto (prontuário) e dados tabulares (exames). Integrar explicações SHAP nesses diferentes tipos de dado de forma coerente é um desafio metodológico ativo.
Imagem + texto + tabular: integração complexa

Causalidade vs. associaçãoUm modelo pode ter valores SHAP tecnicamente corretos e ainda ser clinicamente enganoso — se a variável importante for um proxy espúrio, não uma causa real. Ex: o número de medicamentos pode predizer mortalidade sem causá-la.
Lacuna fundamental — um modelo pode ter SHAP correto e ser clinicamente enganoso

Avaliação de impactoPoucas pesquisas medem se usar explicações SHAP realmente melhora decisões clínicas ou desfechos para pacientes. Saber que o modelo é explicável não garante que as explicações sejam úteis na prática.
Poucos estudos medem o efeito real das explicações em desfechos clínicos

🚀 Métodos em desenvolvimento

Método O que resolve
CausalSHAPIncorpora um grafo causal ao cálculo dos valores SHAP — permitindo distinguir contribuições de causas reais de variáveis que são apenas correlacionadas com o desfecho. Incorpora estrutura causal
FastSHAPTreina uma rede neural para estimar valores SHAP diretamente, sem precisar recalcular para cada novo paciente. Muito mais rápido em produção, com pequena perda de precisão. Estimativas por aprendizado — muito mais rápido
DeepSHAPExtensão do SHAP para redes neurais profundas — usa a estrutura interna da rede (camadas, ativações) para calcular contribuições de forma eficiente, similar ao que o TreeSHAP faz para árvores. SHAP para redes neurais profundas
GradientSHAPCombina gradientes da rede neural com amostragem para estimar valores SHAP de forma aproximada e eficiente — útil quando a rede é muito grande para DeepSHAP. SHAP via gradientes — redes grandes


O campo está em rápida evolução — o que aprendemos hoje é a base para acompanhar os desenvolvimentos futuros com senso crítico.

Mensagem central




“O SHAP é poderoso para transparência e auditabilidade. Seu valor depende de como é usado — com análise crítica, validação clínica e atenção às suas limitações”.


Referências citadas

  • AMANN, J. et al. Explainability for artificial intelligence in healthcare: a multidisciplinary perspective. BMC Medical Informatics and Decision Making, v. 20, n. 1, p. 310, 2020.
  • BAJWA, A. et al. A prospective study on diabetic retinopathy detection based on modify convolutional neural network using fundus images. Diagnostics, v. 13, 2023. DOI: 10.3390/diagnostics13030393.
  • BELLE, V.; PAPANTONIS, I. Principles and practice of explainable machine learning. Frontiers in Big Data, v. 4, 2020. DOI: 10.3389/fdata.2021.688969.
  • BIFARIN, O. O. Interpretable machine learning with tree-based Shapley additive explanations. PLOS ONE, v. 18, 2022.
  • BODRIA, F. et al. Benchmarking and survey of explanation methods for black box models. Data Mining and Knowledge Discovery, v. 37, p. 1719-1778, 2021.
  • BURRELL, J. How the machine “thinks”: understanding opacity in machine learning algorithms. Big Data & Society, v. 3, 2016.
  • COVERT, I.; LUNDBERG, S. M.; LEE, S.-I. Understanding global feature contributions with additive importance measures. NeurIPS, v. 33, p. 17212-17223, 2020.
  • GHASEMI, A. et al. Explainable artificial intelligence in breast cancer detection and risk prediction. Cancer Innovation, v. 3, 2024.
  • GREENWELL, B. M. pdp: an R package for constructing partial dependence plots. The R Journal, v. 9, p. 421, 2017.
  • HANNUN, A. Y. et al. Cardiologist-level arrhythmia detection and classification in ambulatory electrocardiograms. Nature Medicine, v. 25, n. 1, p. 65-69, 2019.
  • HASSIJA, V. et al. Interpreting black-box models: a review on explainable artificial intelligence. Cognitive Computation, v. 16, p. 45-74, 2023.
  • HOOKER, G.; MENTCH, L.; ZHOU, S. Unrestricted permutation forces extrapolation. Statistics and Computing, v. 31, 2019.
  • LIPTON, Z. C. The mythos of model interpretability. Queue, v. 16, n. 3, p. 31-57, 2018.
  • LUNDBERG, S.; LEE, S.-I. A unified approach to interpreting model predictions. NeurIPS, 2017.
  • LUNDBERG, S. M. et al. From local explanations to global understanding with explainable AI for trees. Nature Machine Intelligence, v. 2, n. 1, p. 56-67, 2020.
  • MIOTTO, R. et al. Deep learning for healthcare: review, opportunities and challenges. Briefings in Bioinformatics, v. 19, n. 6, p. 1236-1246, 2018.
  • MOLNAR, C. Interpretable machine learning. 2020.
  • GHOSH, S. K.; KHANDOKER, A. Investigation on explainable machine learning models to predict chronic kidney diseases. Scientific Reports, v. 14, 2024.
  • HAKKOUM, H.; IDRI, A.; ABNANE, I. Global and local interpretability techniques of supervised machine learning black box models for numerical medical data. Engineering Applications of Artificial Intelligence, v. 131, 107829, 2024.
  • HETTIKANKANAMAGE, N. D. et al. eXplainable Artificial Intelligence: a systematic review for biomedical imaging and sensing. Sensors, v. 25, 2025.
  • MIENYE, I. D. et al. Deep convolutional neural networks in medical image analysis: a review. Information, v. 16, p. 195, 2025.
  • NOHARA, Y. et al. Explanation of machine learning models using SHAP and application for real data in hospital. Computer Methods and Programs in Biomedicine, v. 214, 106584, 2021.
  • OBERMEYER, Z. et al. Dissecting racial bias in an algorithm used to manage the health of populations. Science, v. 366, n. 6464, p. 447-453, 2019.
  • RAJKOMAR, A. et al. Scalable and accurate deep learning with electronic health records. NPJ Digital Medicine, v. 1, n. 1, p. 18, 2018.
  • RIBEIRO, M. T.; SINGH, S.; GUESTRIN, C. “Why should I trust you?” Explaining the predictions of any classifier. In: KDD. 2016. p. 1135-1144.
  • RUDIN, C. Stop explaining black box machine learning models for high stakes decisions and use interpretable models instead. Nature Machine Intelligence, v. 1, n. 5, p. 206-215, 2019.
  • SALIH, A. M. A. et al. A perspective on explainable artificial intelligence methods: SHAP and LIME. Advanced Intelligent Systems, v. 7, 2023.
  • SHAPLEY, L. S. A value for n-person games. Contributions to the Theory of Games, v. 2, n. 28, p. 307-317, 1953.
  • STIGLIC, G. et al. Interpretability of machine learning-based prediction models in healthcare. WIREs Data Mining and Knowledge Discovery, v. 10, 2020.
  • TONEKABONI, S. et al. What clinicians want: contextualizing explainable machine learning for clinical end use. Proceedings of Machine Learning Research, v. 106, p. 359-380, 2019.
  • TOPOL, E. J. High-performance medicine: the convergence of human and artificial intelligence. Nature Medicine, v. 25, n. 1, p. 44-56, 2019.
  • VIMBI, V.; SHAFFI, N.; MAHMUD, M. Interpreting artificial intelligence models: LIME and SHAP in Alzheimer’s disease detection. Brain Informatics, v. 11, 2024.
  • AUZINE, M. M. et al. Development of an ensemble CNN model with explainable AI for gastrointestinal cancer classification. PLOS ONE, v. 19, 2024.

Obrigada!


💬 Dúvidas? Vamos conversar!

✉️ leticia.raposo@uniriotec.br
🌐 leticiaraposo.netlify.app
📦 github.com/leticiaraposo/shap-sbcas26

Acesse o repositório com
dataset, scripts R e Python
e este arquivo .qmd