Teorema de Bayes

Inverter a condicional: de P(dados | causa) para P(causa | dados), atualizando uma crença inicial.
Probabilidade e variáveis aleatóriasTeorema de BayesAula 2 Aula 4 Aula 6← voltar ao mapa
Na prova · essencial Inverter a condicional com o Teorema de Bayes, com a probabilidade total no denominador. A fórmula não está no formulário. Guia da prova

Os códigos desta página rodam no navegador, mas não sozinhos: clique em Run Code em cada bloco, de cima para baixo.

DicaEm uma frase

O Teorema de Bayes inverte a condicional: se você sabe \(P(B \mid A)\), ele calcula \(P(A \mid B)\), combinando uma crença inicial (o prior) com o que os dados mostram.

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
ImportanteBayes em uma tabela cruzada

Se você tem os dados, não precisa da fórmula: normalize='index'\(P(\text{coluna} \mid \text{linha})\) e normalize='columns'\(P(\text{linha} \mid \text{coluna})\). Passar de uma para a outra é o Teorema de Bayes. A fórmula faz falta quando o enunciado só traz algumas porcentagens, e não a tabela inteira.

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.

  1. Interseção pelas mulheres: \(P(M \cap R) = P(M)\,P(R \mid M) = 0{,}20 \times 0{,}15 = 0{,}03\).
  2. 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\).
  3. Igualando: \(P(R) = 0{,}03 / 0{,}11 \approx 0{,}273\).
  4. 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ício 3 dos extras da Aula 4: 10% dos contratos de uma seguradora têm sinistro; a probabilidade de um homem causar sinistro é 16%, e a de uma mulher, 6%. Sorteado um contrato, qual a chance de ser de um homem? E, sabendo que houve sinistro, qual a chance de ter sido uma mulher? Respostas: 0,40 e 0,36. Dica: comece pela probabilidade total, \(0{,}10 = 0{,}16\,P(H) + 0{,}06\,(1 - P(H))\).

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_acusa

Exercí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'
resposta

Exercí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_3a

Pontes com o outro lado do mapa

Este tópico aparece nestas paradas da revisão guiada, em que cada ponte vira um exercício resolvido pelos dois caminhos:

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.