El teorema de Bayes es el corazón de una enorme parte del ML: clasificadores Naive Bayes, inferencia bayesiana, y la interpretación misma de "dado los datos, ¿qué modelo es más probable?" (que lleva directo a MAP en Prob-07). Entender $P(\text{clase}\mid\text{features})$ es entender qué hace un clasificador.
Why this matters for ML
El teorema de Bayes es el corazón de una enorme parte del ML: clasificadores Naive Bayes, inferencia bayesiana, y la interpretación misma de "dado los datos, ¿qué modelo es más probable?" (que lleva directo a MAP en Prob-07). Entender P(clase∣features) es entender qué hace un clasificador.
Concepts covered
- Conditional probability P(A∣B)
- Multiplication rule y chain rule de probabilidad
- Independence
- Law of total probability
- Bayes' theorem
- Prior, likelihood, posterior
Intuition first
🎬 3Blue1Brown "Bayes theorem" y Stat 110 Lectures 3–4. Idea: condicionar es "reducir el universo" al evento que ya sabes que ocurrió.
Theory & key results
Conditional probability: la probabilidad de A dado que B ocurrió:
P(A∣B)=P(B)P(A∩B),P(B)>0.
Reescribiendo: multiplication rule P(A∩B)=P(A∣B)P(B).
Independence: A y B son independientes si saber uno no cambia el otro: P(A∣B)=P(A), equivalentemente P(A∩B)=P(A)P(B). (Ojo: independencia ≠ mutuamente excluyentes.)
Law of total probability: si {Bi} particiona Ω,
P(A)=i∑P(A∣Bi)P(Bi).
Es "promediar sobre todos los escenarios posibles".
Bayes' theorem:
P(B∣A)=P(A)P(A∣B)P(B)
con P(A)=∑iP(A∣Bi)P(Bi) (total probability) en el denominador. Nombres (fundamentales en ML):
- P(B) = prior (creencia antes de ver datos),
- P(A∣B) = likelihood (qué tan bien el modelo explica los datos),
- P(B∣A) = posterior (creencia actualizada tras ver datos),
- P(A) = evidence (normalizador).
En ML: P(clase∣datos)∝P(datos∣clase)P(clase).
Worked example (el clásico test médico)
Enfermedad con prevalencia P(D)=1%. Test con sensibilidad P(+∣D)=99% y falsos positivos P(+∣Dc)=5%. Si das positivo, ¿probabilidad real de estar enfermo?
P(+)=0.99(0.01)+0.05(0.99)=0.0099+0.0495=0.0594.
P(D∣+)=0.05940.99⋅0.01≈0.167.
¡Solo ~17%! La intuición falla porque la enfermedad es rara (el prior domina). Lección central de Bayes para ML.
Notebook exercises (by hand)
- P(A∣B) si P(A∩B)=0.12 y P(B)=0.3.
- Dos monedas justas: P(2 caras∣al menos 1 cara).
- Rehaz el test médico con prevalencia 10%; compara el posterior.
- Bolsa A (2 rojas, 3 azules), bolsa B (4 rojas, 1 azul). Eliges bolsa al azar y sacas roja: ¿P(era bolsa B∣roja)?
- Muestra que si A,B independientes, entonces A,Bc también.
- Escribe Bayes en la forma posterior∝likelihood×prior y explica cada término en un clasificador de spam.
Python lab
import numpy as np
# test médico con Bayes
def posterior(prior, sens, fpr):
p_pos = sens*prior + fpr*(1-prior)
return sens*prior / p_pos
for prev in [0.01, 0.10, 0.50]:
print(f"prevalencia {prev}: P(D|+) = {posterior(prev, 0.99, 0.05):.3f}")
# verifica por simulación
rng = np.random.default_rng(0); n = 2_000_000
sick = rng.random(n) < 0.01
test_pos = np.where(sick, rng.random(n) < 0.99, rng.random(n) < 0.05)
print("MC P(D|+):", sick[test_pos].mean()) # ~0.167
Examen final 📝
Intenta cada nivel antes de abrir las soluciones.
🟡 Medio
- P(A∣B) si P(A∩B)=0.15, P(B)=0.5.
- Dos dados: P(suma=8∣primer dado=5).
🟠 Medio-difícil
- Clasificador de spam: P(spam)=0.4, P("gratis"∣spam)=0.6, P("gratis"∣no spam)=0.1. Si un correo contiene "gratis", P(spam∣"gratis").
- Demuestra que si A y B son independientes, entonces Ac y B también lo son.
🔴 Difícil
- Deriva el clasificador Naive Bayes para dos features: muestra que P(clase∣x1,x2)∝P(clase)P(x1∣clase)P(x2∣clase) y explica qué suposición ("naive") permite factorizar la likelihood.
- En el test médico del módulo, muestra cómo cambia el posterior si aplicas el test dos veces (ambos positivos, tests condicionalmente independientes dada la enfermedad). Calcula P(D∣++) con prevalencia 1%, sensibilidad 99%, FPR 5%.
✅ Soluciones
- 0.15/0.5=0.3.
- Primer dado 5 ⇒ suma 8 requiere segundo=3; P=1/6.
- P("gratis")=0.6(0.4)+0.1(0.6)=0.24+0.06=0.30. P(spam∣"gratis")=0.300.24=0.8.
- P(Ac∩B)=P(B)−P(A∩B)=P(B)−P(A)P(B)=P(B)(1−P(A))=P(Ac)P(B) ⇒ independientes.
- Por Bayes P(c∣x1,x2)∝P(x1,x2∣c)P(c). La suposición naive es que las features son condicionalmente independientes dada la clase: P(x1,x2∣c)=P(x1∣c)P(x2∣c). Sustituyendo da la factorización. (Suele ser falsa pero funciona sorprendentemente bien.)
- Actualiza secuencialmente: tras el 1er +, posterior ≈0.167 (del módulo). Úsalo como nuevo prior: P(D∣++)=0.99⋅0.167+0.05⋅0.8330.99⋅0.167=0.1653+0.04170.1653≈0.799. Dos positivos suben de 17% a ~80%.