Teorema de Bayes
Os códigos desta página rodam no navegador, mas não sozinhos: clique em Run Code em cada bloco, de cima para baixo.
A ideia
Os enunciados costumam dar a probabilidade de um efeito dentro de cada causa (“entre os que usam alta velocidade, 1% de enchimento incorreto”). A pergunta interessante, porém, costuma ser a inversa: vi o efeito; qual a chance de cada causa? Como \(P(A \cap B)\) pode ser escrita dos dois jeitos pela regra do produto,
\[P(A)\,P(B \mid A) = P(B)\,P(A \mid B) \quad\Longrightarrow\quad P(A \mid B) = \frac{P(B \mid A)\,P(A)}{P(B)}.\]
O denominador vem da probabilidade total: \(P(B) = P(B \mid A)\,P(A) + P(B \mid A^c)\,P(A^c)\). Cada peça tem nome, como nos slides da Aula 4:
| Peça | Nome | O que é |
|---|---|---|
| \(P(A)\) | prior (a priori) | a crença antes de ver a informação \(B\) |
| \(P(B \mid A)\) | verossimilhança | quão compatível a informação é com \(A\) |
| \(P(A \mid B)\) | posterior (a posteriori) | a crença depois de ver \(B\) |
| \(P(B)\) | evidência | a probabilidade total de \(B\), que normaliza a conta |
Exemplo resolvido
Exercício 2 dos extras da Aula 4: 80% dos funcionários de uma agência financeira são homens. Nos últimos dois anos, 89% dos promovidos eram homens. Das mulheres, 15% foram promovidas. Um sindicato acusa a agência de discriminação. A acusação procede?
Eventos. \(H\): funcionário é homem; \(M = H^c\): é mulher; \(R\): foi promovido.
Probabilidades dadas. \(P(H) = 0{,}80\), \(P(H \mid R) = 0{,}89\) e \(P(R \mid M) = 0{,}15\).
O que se pede. \(P(R)\), \(P(R \mid H)\) e \(P(R \mid M)\), para comparar as chances de promoção.
Resolução.
- Interseção pelas mulheres: \(P(M \cap R) = P(M)\,P(R \mid M) = 0{,}20 \times 0{,}15 = 0{,}03\).
- A mesma interseção pelo outro lado: \(P(M \cap R) = P(R)\,P(M \mid R) = P(R) \times 0{,}11\), porque \(P(M \mid R) = 1 - 0{,}89\).
- Igualando: \(P(R) = 0{,}03 / 0{,}11 \approx 0{,}273\).
- Bayes para os homens: \(P(R \mid H) = \dfrac{P(H \mid R)\,P(R)}{P(H)} = \dfrac{0{,}89 \times 0{,}273}{0{,}80} \approx 0{,}30\).
Um homem tem cerca de 30% de chance de promoção; uma mulher, 15%. O dado de que “89% dos promovidos são homens” sozinho não prova nada (80% dos funcionários são homens); o que sustenta a acusação é a comparação entre \(P(R \mid H)\) e \(P(R \mid M)\).
No código
Com dados reais, a fórmula e a contagem direta têm de concordar. No Titanic (Aula 4), vamos calcular \(P(S \mid F)\) pela fórmula, a partir de \(P(F \mid S)\):
E contando direto, só entre as mulheres:
Os dois dão 0,74204. Antes de saber o sexo, a crença de sobrevivência era o prior \(P(S) = 0{,}384\); ao saber que é mulher, ela sobe para 0,742. Esse é o coração do classificador Naive Bayes.
Armadilhas comuns
- Confundir \(P(A \mid B)\) com \(P(B \mid A)\). “89% dos promovidos são homens” é \(P(H \mid R)\), não \(P(R \mid H)\). Escreva a notação de cada frase antes de fazer contas.
- Esquecer o prior. Se quase todo mundo é de um grupo, é natural que ele domine qualquer subconjunto. Sempre compare com \(P(A)\).
- Errar o denominador. \(P(B)\) é a probabilidade total de \(B\), somando todos os caminhos da árvore, e não só o caminho que passa por \(A\).
- Arredondar no meio. Guarde os valores intermediários em variáveis (como no código) e arredonde só no final.
Exercícios aqui na página
Complete os ______ e clique em Run Code: a correção aparece logo abaixo. Use Show Hint para uma dica e Show Solution para ver uma resolução. O Python roda no seu navegador; na primeira vez ele leva alguns segundos para carregar.
Exercício 1
Um sistema antifraude analisa transações. 2% das transações são fraudes. O sistema acusa 90% das fraudes, mas também acusa 5% das transações legítimas. Uma transação foi acusada: qual a probabilidade de ser fraude?
\(P(F \mid \text{acusa}) = \dfrac{P(F)\,P(\text{acusa} \mid F)}{P(\text{acusa})}\), e \(P(\text{acusa})\) vem da probabilidade total.
p_f = 0.02
p_acusa_dado_f = 0.90
p_acusa_dado_l = 0.05
p_acusa = p_f * p_acusa_dado_f + (1 - p_f) * p_acusa_dado_l
p_f_dado_acusa = p_f * p_acusa_dado_f / p_acusa
p_f_dado_acusaExercício 2
O sistema acusou a transação. Mesmo assim, é mais provável que ela seja 'fraude' ou 'legitima'?
Compare o número impresso com 0,5. É o efeito da probabilidade a priori (2%) ser pequena.
print(p_f_dado_acusa)
resposta = 'fraude' if p_f_dado_acusa > 0.5 else 'legitima'
respostaExercício 3
Nos dados do Titanic: calcule \(P(S \mid \text{3ª})\) pelo Teorema de Bayes, usando \(P(\text{3ª} \mid S)\), \(P(S)\) e \(P(\text{3ª})\).
Confira filtrando direto: titanic.loc[titanic['Pclass'] == 3, 'Survived'].mean() tem de dar o mesmo.
p_s = titanic['Survived'].mean()
p_3a = (titanic['Pclass'] == 3).mean()
p_3a_dado_s = (titanic.loc[titanic['Survived'] == 1, 'Pclass'] == 3).mean()
p_s_dado_3a = p_3a_dado_s * p_s / p_3a
p_s_dado_3aPontes com o outro lado do mapa
- Tabela cruzada (crosstab): normalize='columns' dá P(linha | coluna): Bayes inverte a condicional (exercício na parada 5)
Este tópico aparece nestas paradas da revisão guiada, em que cada ponte vira um exercício resolvido pelos dois caminhos:
- Parada 5: Inverter a condicional: Bayes e o classificador exercícios ao vivo · ver no mapa · no Colab
Pratique
As listas novas de revisão abrem no Google Colab (use Arquivo → Salvar uma cópia no Drive). As listas das aulas estão no Blackboard, na pasta de cada aula.
- Revisão B · Pontes: cada conteúdo por dois caminhos (com correção automática) nova (Parte 5)Abrir no ColabBaixar .ipynb
- Aula 02 · Exercícios de teoria da probabilidade APS2 (Exercícios 1, 2(b), 3(b) e 7)Blackboard · notebooks da Aula 02
- Aula 04 · Atividade: Titanic e classificador com Teorema de Bayes (Exercícios 1 a 4)Blackboard · notebooks da Aula 04