---
title: "EXPLAINABLE AI - XAI"
subtitle: "Mais do que destacar features"
author: "M.Sc. Renato Barreira"
lang: pt-BR
format:
html:
theme: cosmo
toc: true
toc-depth: 2
number-sections: true
code-fold: true
code-tools: true
code-overflow: wrap
embed-resources: true
fig-width: 8
fig-height: 4.8
include-in-header:
text: |
<style>
body { font-size: 17px; color: #223344; }
h1, h2, h3 { color: #163e55; }
pre.sourceCode { border-left: 3px solid #26859b; }
.cell-output-display { overflow-x: auto; }
table { font-size: 0.91em; }
.quarto-title .subtitle { color: #536575; }
</style>
execute:
echo: true
warning: true
message: false
error: false
---
{.lightbox}
# Fundamentos da IA Explicável
::: {.callout-note}
Embora IA Explicável seja a tradução mais usada, também é possível encontrar Explicabilidade da Inteligiência Artificial
:::
::: {.callout-tip}
## Explicabilidade IA
Como entender decisões sugeridas por modelos de aprendizado de máquina de maneira que possamos confiar nele?
:::
O aumento da complexidade desses modelos criou um problema fundamental: **a capacidade de produzir previsões não implica necessariamente a capacidade de compreender como essas previsões foram produzidas.**
::: {.callout-note appearance="simple"}
## Desempenho preditivo e Explicabilidade
O desempenho preditivo corresponde à capacidade de um modelo produzir previsões adequadas para observações não utilizadas em seu treinamento.
A explicabilidade, por sua vez, corresponde à possibilidade de compreender os mecanismos e as relações responsáveis por essas previsões.
:::
Um modelo pode apresentar elevada capacidade preditiva e baixa transparência. Da mesma forma, um modelo facilmente compreensível não apresenta necessariamente desempenho preditivo superior.
[Por exemplo](https://pmc.ncbi.nlm.nih.gov/articles/PMC8119673/)
## Não é a mera seleção de features
**A explicabilidade não constitui uma característica exclusivamente técnica.** Ela também envolve questões relacionadas à confiança, confiabilidade, transparência e compreensão humana.
::: {.callout-note appearance="simple"}
a explicabilidade pode servir simultaneamente ao aprimoramento técnico, à avaliação crítica e à comunicação dos resultados.
:::
1. Correção (Correctness)
O modelo utiliza informações relevantes para produzir suas decisões? Há relações espúrias? Há data leak?
2. Robustez (Robustness)
Ele é estável? Ele apresenta alterações injustificadas se você alterar algo?
3. Viés (Bias)
Há distorções nos dados ou nos mecanismos de decisão que possam produzir resultados incosistentes para determinados grupos?
4. Aperfeiçoamento (Improvement)
É possível "retroalimenta-lo"? (No sentido modifica-lo)
5. Transferibilidade (Transferability)
O comportamento aprendido pelo modelo pode ser aproveitado em outros contextos e quais características precisam ser modificadas para permitir essa transferência?
6. Compreensibilidade humana (Human Comprehensibility)
Corresponde à capacidade de comunicar o funcionamento do modelo de maneira compreensível para diferentes públicos, considerando seus conhecimentos e necessidades.
# Transparência e avaliação da explicabilidade.
## Transparência
A transparência não deve ser tratada como uma propriedade estritamente binária, ela tem três dimensões: simulabilidade; decomponibilidade; transparência algoritimica
### Simulabilidade (Simulatability)
::: {.callout-tip}
É possível acompanhar mentalmente a previsão?
:::
Quantidade de variáveis utilizadas. Complexidade das operações realizadas. Dimensão geral da estrutura computacional.
::: {.callout-caution collapse="true"}
## QUAL MODELO QUE ATENDE A ESSA CARACTERÍSTICA?
Regressão linear simples, árvore de decisão pequena, sistema de poucas regras
:::
### Decomponibilidade (Decomposability)
::: {.callout-tip}
É possível compreender separadamente as variáveis, parâmetros e operaçõeS?
:::
Esses componentes incluem as variáveis de entrada, os parâmetros estimados, as operações matemáticas e as relações utilizadas na construção das previsões.
A característica fundamental é que a interpretação dos componentes individuais permite compreender aspectos relevantes do funcionamento do modelo.
::: {.callout-caution collapse="true"}
## QUAL MODELO QUE ATENDE A ESSA CARACTERÍSTICA?
Regressão logística, árvore de decisão, GAM, rede bayesiana simples
:::
### Transparência algorítmica (Algorithmic Transparency)
::: {.callout-tip}
O procedimento matemático ou computacional que produz a previsão é compreensível?
:::
O conhecimento das regras de processamento, dos procedimentos de otimização e das operações realizadas permite compreender como o sistema transforma suas entradas em resultados.
::: {.callout-caution collapse="true"}
## QUAL MODELO QUE ATENDE A ESSA CARACTERÍSTICA?
KNN, regressão linear, árvores de decisão, modelos baseados em regras.
:::
### Modelos que atendem os três critérios?

Árvore de decisão pequena
Simulabilidade: podemos percorrer mentalmente os nós até chegar à previsão.
Decomponibilidade: podemos compreender cada condição separadamente.
Transparência algorítmica: compreendemos o procedimento de previsão.
$$
\hat{Y} = \beta_0 + \beta_1 X_1 + \beta_2 X_2
$$
Regressão linear simples
Simulabilidade: podemos calcular mentalmente a previsão quando os valores e os coeficientes são simples.
Decomponibilidade: podemos interpretar separadamente os coeficientes, variáveis e operações.
Transparência algorítmica: conhecemos o procedimento matemático utilizado para produzir a previsão.
## Critérios de avaliação da explicabilidade
::: {.callout-note appearance="simple"}
Esses critérios não são equivalentes às métricas tradicionais de desempenho preditivo, mas avaliações qualitativas sobre os modelos.
:::
Diferente da transparência, quando a gente olha pra dentro do modelo, nos critérios de avaliação da explicabilidade, olha-se para a REPRESENTAÇÃO EXPLICATIVA, MÉTODO DE EXPLICABILIDADE, ETC.
### Compreensibilidade (Comprehensibility)
O grau em que as representações extraídas são compreensíveis para os seres humanos, relacionando-se, assim, com as dimensões de transparência consideradas anteriormente.
### Fidelidade (Fidelity)
O grau em que as representações extraídas capturam com precisão os modelos opacos dos quais foram extraídas.
\\
### Acurácia (Accuracy)
A capacidade das representações extraídas de prever com precisão exemplos não vistos (novos dados).
\\
### Escalabilidade (Scalability)
A capacidade do método de se adaptar e escalar para modelos opacos com grandes espaços de entrada e um grande número de conexões ponderadas.
\
### Generalidade (Generality)
O grau em que o método exige regimes de treinamento especiais ou restrições aos modelos opacos.
\
| Critério | O que avalia |
| :--- | :--- |
| Compreensibilidade | Facilidade de compreensão humana |
| Fidelidade | Correspondência com o comportamento do modelo original |
| Acurácia | Capacidade de prever corretamente novas observações |
| Escalabilidade | Capacidade de operar em modelos de grande dimensão |
| Generalidade | Aplicabilidade a diferentes arquiteturas |
\
# Taxonomia e classificação das técnicas de XAI
## Os diferentes tipos de explicações
Explicações textuais (Text Explanations); Explicações visuais (Visual Explanations); Explicações locais (Local Explanations); Explicações por observações representativas (Explanations by Example); Explicações por simplificação (Explanations by Simplification); Explicações pela relevância dos atributos (Feature Relevance Explanations).
## Frameworks / Enquadramentos analíticos
\
| Framework | Objetivo |
| :--- | :--- |
| Taxonomy Framework | Organizar modelos e abordagens de explicabilidade |
| Transparency Framework | Comparar modelos segundo suas propriedades de transparência |
| XAI Capability Framework | Comparar as capacidades e os pressupostos das técnicas |
| Explanation Type Framework | Comparar os diferentes tipos de explicações |
| Data Scientist Strategy Framework | Orientar a seleção e combinação de técnicas |
\
::: {.callout-note}
Para não ficar ainda mais longo, vamos olhar esses enquadramentos de maneira aplicada.
:::
\
### Taxonomy Framework
::: {.callout-note appearance="simple"}
## Transparentes (whitebox) e Opacos (ou blackbox)
Os modelos transparentes possuem características interpretáveis em sua própria estrutura.
Os modelos opacos, por sua vez, frequentemente necessitam de procedimentos adicionais para que seu comportamento possa ser investigado.
:::
\
::: {.callout-caution collapse="true"}
## Quais são os modelos transparentes? Whitebox?
Regressão linear e regressão logística;
Árvores de decisão (Decision Trees, contudo conforme cresce, diminui);
K-Nearest Neighbors (KNN);
Rule-Based Learning;
Generalized Additive Models (GAM);
Modelos Bayesianos.
:::
\
::: {.callout-caution collapse="true"}
## Quais são os modelos opacos? Blackbox?
Random Forest;
Support Vector Machines (SVM);
Redes neurais multicamadas.
:::
\
# TÉCNICAS INDEPENDENTES DO MODELO (MODEL-AGNOSTIC XAI)
\
::: {.callout-note appearance="simple"}
## Explainabilidade Pos-Hoc
A explicabilidade pós-hoc consiste na utilização de procedimentos destinados a investigar o comportamento de um modelo após seu treinamento.
Esses métodos não modificam necessariamente os parâmetros ou a estrutura do modelo original.
Seu objetivo consiste em produzir representações adicionais que permitam compreender diferentes aspectos de seu funcionamento.
:::
\
## LIME — Local Interpretable Model-Agnostic Explanations
\
::: {.callout-note}
Seu objetivo é aproximar localmente o comportamento de um modelo complexo mediante uma representação mais simples.
:::
\
::: {.callout-tip}
## Princípio fundamental
Sua proposta é construir uma aproximação interpretável em uma região restrita do espaço de atributos.
:::
\
::: {.callout-note}
**Localidade:** a explicação se refere a uma região específica e não necessariamente representa o comportamento global.
**Agnosticismo:** o método pode ser utilizado sem conhecimento detalhado da arquitetura interna do modelo.
**Simplificação:** a explicação é produzida mediante uma representação de menor complexidade.
:::
\
```{r}
#| message: false
#| warning: false
library(caret)
library(randomForest)
library(lime)
library(ggplot2)
#banco de dados incluso no R
data(iris)
#treinar com tudo menos oq a gente quer prever e as variáveis numéricas
treino = iris[-101, ]
teste = iris[101, 1:4, drop = FALSE]
#treinando random forest para prever a variável species usando todas as outras variáveis
set.seed(123)
modelo = train(Species ~ ., data = treino, method = "rf")
#para entender a distribuição das variáveis de entrada e como o modelo responde a elas
explicador = lime(treino[, 1:4], modelo)
# 4. Explicar a previsão da observação
set.seed(123)
explicacao = explain(
teste,
explicador,
n_labels = 1,
n_features = 4
)
plot_features(explicacao)
```
\
Ele é muito útil pra imagens porque ele destaca quais regiões de uma imagem contribuíram para a classificação realizada por um modelo black-box. (o exemplo abaixo já vem com o pacote lime para demonstração)
\
```{r}
#| message: false
#| warning: false
library(lime)
library(magick)
#exemplo do pacote
explicacao = .load_image_example()
#regiões relevantes
plot_image_explanation(explicacao)
#regiões contrárias à classificação
plot_image_explanation(
explicacao,
show_negative = TRUE
)
#mostrar apenas as regiões importantes
plot_image_explanation(
explicacao,
display = "block"
)
```
\
::: {.callout-caution collapse="true"}
## ENTÃO ESSE MODELO É PERFEITO E NÃO TEM LIMITAÇÕES??? É ISSO???
A qualidade da explicação depende da definição de proximidade, da representação utilizada e da fidelidade da aproximação, ENTÃO DADOS DIFUSOS SÃO UM PROBLEMA;
Prefere dados mais estáveis!
:::
\
## SHAP - SHapley Additive exPlanations
\
::: {.callout-note}
"O objetivo neste caso é construir um modelo linear em torno da instância a ser explicada e, em seguida, interpretar os coeficientes como a importância das características (features).
:::
\
::: {.callout-note}
Em termos gerais, o valor de Shapley de uma característica é a sua contribuição marginal média esperada para a decisão do modelo, após todas as combinações possíveis terem sido consideradas.
O valor de Shapley é o quanto cada atributo contribuiu para o resultado final da previsão comparado à média geral.
:::
\
```{r}
#| message: false
#| warning: false
library(randomForest)
library(fastshap)
library(shapviz)
#6 variáveis e 153 observações (dias)
data(airquality)
dados = na.omit(airquality[, c(
"Ozone", "Solar.R", "Wind", "Temp", "Month"
)])
#treino e teste
set.seed(123)
idx = sample(
seq_len(nrow(dados)),
size = floor(0.8 * nrow(dados))
)
treino = dados[idx, ] #pega apenas as linhas sorteadas
teste = dados[-idx, ] #pega todas as linhas EXCETO as sorteadas
X_treino = treino[, -1, drop = FALSE]
X_teste = teste[, -1, drop = FALSE]
#Treinar Random Forest
set.seed(123)
modelo = randomForest(
Ozone ~ .,
data = treino,
ntree = 300
)
# 4. Função de previsão para o SHAP
pred_fun = function(object, newdata) {
as.numeric(predict(object, newdata = newdata))
}
#Calcular os valores SHAP
set.seed(123)
valores_shap = fastshap::explain(
object = modelo,
X = X_treino,
newdata = X_teste,
pred_wrapper = pred_fun,
nsim = 100,
adjust = TRUE
)
#Preparar os gráficos
baseline = mean(pred_fun(modelo, X_treino))
shap = shapviz(
as.matrix(valores_shap),
X = X_teste,
baseline = baseline
)
# GRÁFICO 1: Importância global das variáveis
sv_importance(shap, kind = "bee")
```
\
Mostra a distribuição dos valores SHAP das observações analisadas. Cada ponto representa uma observação e a posição horizontal indica se a variável aumentou ou diminuiu a previsão em relação ao valor de referência.
Pontos amarelos/laranjas à direita: Temperaturas altas sobem bastante a previsão de ozono (chegando a somar mais de 25 unidades de ozono). Existe uma relação direta forte — quanto mais quente o dia, maior a quantidade de ozono esperada.
\
```{r}
#| message: false
#| warning: false
#explicação individual dia 1
sv_waterfall(shap, row_id = 1)
```
\
Explica uma previsão individual. Começa na previsão média de referência e mostra quanto cada variável contribuiu para aumentar ou reduzir o resultado previsto. As barras mostram como cada variável desse dia empurrou a previsão da média ($42.4$) até ao resultado final ($37.4$)
\
```{r}
#| message: false
#| warning: false
#Dependência SHAP da temperatura
sv_dependence(shap, v = "Temp")
```
\
Mostra a relação entre os valores da temperatura e suas contribuições SHAP. Permite investigar se a influência da temperatura sobre as previsões é linear, não linear ou heterogênea.
O gráfico permite identificar que a "fronteira" fica em torno dos 78°F a 80°F. É a partir desta faixa de temperatura que o efeito no ozono passa de diminuidor (negativo) para impulsionador (positivo)
\
::: {.callout-caution collapse="true"}
## ENTÃO ESSE MODELO É PERFEITO E NÃO TEM LIMITAÇÕES??? É ISSO???
Custo Computacional Alto: Para considerar todas as combinações de variáveis de um dataset real, seriam necessários cálculos exorbitantes (inviáveis na prática);
Suposição de Independência: Para contornar o custo alto, o SHAP assume que as variáveis de entrada são independentes entre si;
Ordem dos Atributos (Swapping): Devido às aproximações feitas na prática, a ordem em que as variáveis são processadas no algoritmo pode alterar ligeiramente os valores finais computados.
:::
\
## Individual Conditional Expectation (ICE) e Partial Dependence Plot (PDP)
\
::: {.callout-note}
Diferentemente do SHAP, o ICE mostra como a previsão muda quando variamos uma variável, mantendo as demais características de cada observação constantes.
:::
\
::: {.callout-note}
Ele mostra como a previsão do modelo se modifica quando alteramos artificialmente uma variável, mantendo as demais características constantes.
A principal contribuição do ICE é revelar a heterogeneidade das relações aprendidas pelo modelo
:::
\
```{r}
library(randomForest)
library(pdp)
library(ggplot2)
data(airquality)
dados = na.omit(airquality[, c(
"Ozone", "Solar.R", "Wind", "Temp", "Month"
)])
#Treinar Random Forest
set.seed(123)
modelo = randomForest(
Ozone ~ .,
data = dados,
ntree = 300
)
#calcular curvas ICE para temperatura
ice = pdp::partial(
modelo,
pred.var = "Temp",
train = dados[, -1],
ice = TRUE,
grid.resolution = 30
)
#Gráfico ICE + PDP
autoplot(ice, alpha = 0.2) +
labs(
title = "Individual Conditional Expectation",
subtitle = "Random Forest - airquality",
x = "Temperatura (°F)",
y = "Concentração prevista de ozônio"
) +
theme_minimal()
```
\
Linhas cinzas (ICE): cada linha representa uma observação (no caso dia). Mostra como a previsão de ozônio muda quando variamos a temperatura, mantendo as outras variáveis daquela observação constantes.
Linha vermelha (PDP): representa a média das curvas ICE. Portanto, sintetiza o comportamento médio da Random Forest em relação à temperatura.
Existe uma relação positiva e não linear entre temperatura e concentração prevista de ozônio. Existe heterogeneidade nas previsões individuais.
\
```{r}
#Gráfico ICE centralizado (c-ICE)
autoplot(ice, center = TRUE, alpha = 0.2) +
labs(
title = "Centered ICE",
x = "Temperatura (°F)",
y = "Mudança na previsão em relação ao início"
) +
theme_minimal()
```
\
No ICE convencional, a dispersão vertical pode ocorrer simplesmente porque as observações possuem valores diferentes nas demais variáveis.
No c-ICE, normalizamos essas diferenças iniciais.
**Portanto, quando as curvas centralizadas apresentam formatos e inclinações diferentes, temos evidências de que o efeito preditivo da temperatura depende das demais características das observações.**
Isso sugere que a Random Forest aprendeu interações entre temperatura e outras variáveis meteorológicas.
\
::: {.callout-caution collapse="true"}
## E se eu quiser descobrir o efeito individual de cada variável? E se eu quiser quantificar a interação?
ICE colorido por outra variável e PDP bidimensional (2D).
:::
## CHEAT SHEET DE ANÁLISE
{.lightbox}
::: {.callout-warning}
AO INVÉS DE PEDIR PRO CHATGPT "QUAL O MELHOR MÉTODO", PEÇA "ME DE ARTIGOS CIENTÍFICOS COM ANÁLISE IGUAL A MINHA OU PARECIDA".
:::
## MAIS ARTIGOS
[Principles and Practice of Explainable Machine Learning](https://www.frontiersin.org/journals/big-data/articles/10.3389/fdata.2021.688969/full)
[To Explain or to Predict?](https://www.stat.berkeley.edu/~aldous/157/Papers/shmueli.pdf)
<https://mixtape.scunning.com/>
COLOCAR
Os autores não pretendem abordar todas as formas possíveis de explicação. Seu interesse principal está na extração de interpretações sobre o comportamento dos modelos e suas fronteiras de decisão.
Outro aspecto importante é a distinção entre explicabilidade estatística e explicação causal.
A identificação de uma associação estatística relevante para a previsão não estabelece, por si só, uma relação causal.
Embora reconheçam a importância da causalidade, os autores a tratam principalmente como uma direção de pesquisa futura, e não como o fundamento dos métodos revisados.
However, such a highly positive impact is coupled
with a significant challenge: how do we understand the decisions suggested by these
systems in order that we can trust them?
how do we understand the decisions suggested by these systems in
order that we can trust them?
Correctness: Are we confident all and only the variables of
interest contributed to our decision? Are we confident
spurious patterns and correlations were eliminated in our
outcome?
Robustness: Are we confident that the model is not
susceptible to minor perturbations, but if it is, is that
justified for the outcome? In the presence of a missing or
noisy data, are we confident the model does not misbehave?
Bias: Are we aware of any data-specific biases that unfairly
penalize groups of individuals, and if yes, can we detect and
correct them?
Improvement: In what concrete way can the prediction
model be improved? What effect would additional training
data or an enhanced feature space have?
Transferability: In what concrete way can the prediction
model for one application domain be applied to another
application domain? What properties of the data and model
would have to be adapted for this transferability?
Human comprehensibility: Are we able to explain the
model’s algorithmic machinery to an expert? Perhaps
Transparent vs. opaque
models, model specific vs. model agnostic approaches, as well
as post-hoc1 explainability approaches follows, all of which are
referred to in the taxonomic framework. Limitations and
strengths of these models and approaches are discussed
subsequently.
causality-related
properties in machine learning models.
PERSPECTIVES ON EXPLAINABILITY
Transparency stands for a human-level understanding of the
inner workings of the model
Simulatability is the first level of transparency and it refers to a
model’s ability to be simulated by a human.
Decomposability is the second level of transparency and it
denotes the ability to break down a model into parts (input,
parameters and computations) and then explain these parts.
Algorithmic Transparency is the third level and it
expresses the ability to understand the procedure the
model goes through to generate its output. For example,
a model that classifies instances based on some similarity
measure (such as K-nearest neighbors) satisfies this
property, since the procedure is clear; find the datapoint
that is the most similar to the one under consideration and
assign to the former the same class as the latter. On the other
hand, complex models, such as neural networks, construct
an elusive loss function, while the solution to the training
objective has to be approximated, too. Generally speaking,
the only requirement for a model to fall into this category is
for the user to be able to inspect it through a mathematical
analysis.
EXERCÍCIO???
Evaluation Criteria
Comprehensibility: The extent to which extracted
representations are humanly comprehensible, and thus
touching on the dimensions of transparency considered earlier.
• Fidelity: The extent to which extracted representations
accurately capture the opaque models from which they
were extracted.
• Accuracy: The ability of extracted representations to
accurately predict unseen examples.• Scalability: The ability of the method to scale to opaque
models with large input spaces and large numbers of
weighted connections.
• Generality: The extent to which the method requires special
training regimes or restrictions on opaque models.
4.3 Types of Explanations
Text explanations
Visual explanation
Local explanations
Explanations by example
Explanations by simplification
Feature relevance explanations
Aqui eles só resumem
5 EXPLORING EXPLAINABLE MACHINE
LEARNING
we turn to five “frameworks” that summarize or otherwise distill
the literature. These frameworks can be thought of as a comparative
exposition and/or visualization of sorts, which help us understand:
FIGURA 1
5.1 Taxonomy Framework
distinction between transparent
and opaque ML models (Transparency framework), followed by a
description of the capabilities of explainability approaches (XAI
Capability framework).
5.2 Transparency Framework
kinds of transparency that are enabled.
5.3 Explainable Machine Learning
Capability Framework
In Table 2, we draw a comparison between XAI approaches in
terms of the type of explanations they offer, whether they are
model agnostic and whether they require a transformation of the
input data before the method can be applied.
5.4 Explanation Type FrameworkIn Table 3, we contrast the types of post-hoc explanations at a
conceptual level: for example, what might local explanations offer
in contrast to model simplification strategies?
5.5 Data Scientist Strategy Framework
TRANSPARENTE MODELS
Linear E Logistic Regression