Ir al contenido

Bayes, prior y MAP

En simple: lee esto primero

Clasificar con Bayes = combinar «qué tan común es cada clase» con «qué tan típicos son estos datos en cada clase».

Imagínalo así

Escuchas un galope afuera. ¿Caballo o cebra? Las rayas no las ves, pero sabes que en tu ciudad hay muchísimos más caballos: esa información previa (el prior) pesa mucho en tu respuesta.

Lo que tienes que llevarte
  • Prior: lo que creías antes de ver los datos (qué tan común es cada clase).
  • Verosimilitud: qué tan esperables son los datos si fuera cada clase.
  • Posterior: tu creencia actualizada. Eliges la clase con mayor posterior (eso es MAP).
Palabras raras de esta página
prior
la probabilidad «de entrada», antes de mirar el caso.
posterior
la probabilidad después de considerar la evidencia.
tasa base
qué tan frecuente es algo en la población; ignorarla es un error clásico.
generativo
modelo que aprende cómo «se ven» los datos de cada clase.

Más abajo viene la versión completa, con fórmulas. Si una palabra aparece subrayada con puntos, pasa el mouse (o tócala) para ver qué significa.

P grande vs p chica. Una probabilidad PP es un número en [0, 1] para un resultado discreto (una clase): uno por resultado y suman 1, p. ej. P(y=1)=0.4P(y=1)=0.4. Una feature continua no funciona así (un valor exacto tiene probabilidad 0): se usa una densidad p(x)p(x), cuya área sobre un tramo es la probabilidad; el área total es 1 y la altura puede superar 1.

Probabilidad condicional, contando. P(A∣B)P(A\mid B) = «de A dado B»: restringe el mundo a los casos donde vale B y cuenta la fracción que también tiene A.

100 correos: 40 spam, 60 ham. De los 40 spam, 32 contienen «free» ⇒ p(free∣spam)=32/40=0.8p(\text{free}\mid\text{spam}) = 32/40 = 0.8. De los 60 ham, 6 ⇒ p(free∣ham)=0.1p(\text{free}\mid\text{ham}) = 0.1.

Voltear la barra cambia la pregunta: P(spam∣free)P(\text{spam}\mid\text{free}) = de los que dicen «free», ¿qué fracción es spam? En general P(A∣B)≠P(B∣A)P(A\mid B)\ne P(B\mid A). Un likelihood es «dada la clase», p(x∣y)p(\mathbf{x}\mid y); un posterior es «dadas las features», P(y∣x)P(y\mid\mathbf{x}). Bayes convierte uno en otro.

MLE = contar y promediar. En toda esta unidad, «máxima verosimilitud» se reduce a: prior πk=Nk/N\pi_k = N_k/N (40 de 100 ⇒ 0.40), probabilidad de palabra = fracción contada, media = promedio, varianza = promedio de distancias² a la media. Sin cálculo, sin tasa de aprendizaje.

La logística fue discriminativa: ajustó P(y∣x)P(y\mid\mathbf{x}) directamente, aprendiendo solo dónde cortar. Un modelo generativo pregunta: ¿cómo produce cada clase sus datos? Aprende p(x∣y)p(\mathbf{x}\mid y) y P(y)P(y), y luego invierte con Bayes.

Generativo (NB, LDA, QDA)prior πₖ = Nₖ/Ncontarlikelihood p(x | y=k)«retrato» de cada claseregla de Bayesinvertir la barra «|»posterior P(y | x)arg max = MAP+ generar datos+ imputar, outliers+ aprende con poca dataDiscriminativo(regresión logística)datos (x, y)P(y | x) directosolo la frontera+ menos supuestos+ gana con mucha data
Ambos caminos pueden llegar a la misma forma σ(wᵀx + b): LDA la deriva de dos gaussianas con Σ compartida; la logística la ajusta directamente (Ng y Jordan, 2001).

Saber cómo se ve cada clase da más que una frontera: puedes generar muestras sintéticas, imputar features faltantes, detectar outliers y agregar una clase nueva barato (solo ajustar su densidad).

  1. Prior πk=P(y=k)=Nk/N\pi_k = P(y=k) = N_k/N: qué tan común es cada clase.
  2. Likelihood p(x∣y=k)p(\mathbf{x}\mid y=k): una densidad por clase (gaussiana, producto de probabilidades de palabras…).
  3. Invertir con Bayes y predecir el arg max del posterior. La frontera sale sola.

p(y=k,x)p(y=k,\mathbf{x}) se puede armar de dos formas: elegir la clase y generar sus features (πk p(x∣y=k)\pi_k\,p(\mathbf{x}\mid y=k)), u observar las features y preguntar la clase (p(x)P(y=k∣x)p(\mathbf{x})P(y=k\mid\mathbf{x})). Igualando:

P(y=k∣x)=πk p(x∣y=k)∑jπj p(x∣y=j)⏟p(x)P(y=k\mid\mathbf{x}) = \frac{\pi_k\,p(\mathbf{x}\mid y=k)}{\underbrace{\sum_j \pi_j\,p(\mathbf{x}\mid y=j)}_{p(\mathbf{x})}}

El denominador (la evidencia) es igual para todas las clases: normaliza pero nunca cambia al ganador. Para decidir se descarta:

y^=arg⁡max⁡k πk p(x∣y=k)\boxed{\hat y = \arg\max_k\ \pi_k\,p(\mathbf{x}\mid y=k)}

Esta regla minimiza la probabilidad de error entre todos los clasificadores; donde los «retratos» ponderados de las clases se traslapan, hasta el mejor debe adivinar: el error de Bayes irreducible.

Un test detecta 80% de los enfermos y da 3% de falsas alarmas; prevalencia 1%. El paciente salió positivo:

P(enf∣+)=0.01×0.800.01×0.80+0.99×0.03=0.0080.0377≈0.21P(\text{enf}\mid +) = \frac{0.01\times0.80}{0.01\times0.80 + 0.99\times0.03} = \frac{0.008}{0.0377}\approx 0.21

Multiplicando por 10 000 aparece el árbol: 80 enfermos positivos, ≈300 falsas alarmas, total ≈380. El test da el likelihood p(+∣enf)=0.80p(+\mid\text{enf})=0.80; el paciente quiere el posterior P(enf∣+)=0.21P(\text{enf}\mid+)=0.21.

Bayes contando personas

Mueve el prior (prevalencia), la sensibilidad del test y su tasa de falsas alarmas. La pregunta del paciente es siempre la misma: dado que salí positivo, ¿qué tan probable es que esté enfermo?

1%99.0%80%20%3%97.0%Población10,000 Enfermos100 Sanos9,900 Test + (TP)80 Test − (FN)20 Test + (FP)297 Test − (TN)9,603
positivos totales377
de ellos, enfermos80
P(enfermo | +)21.2%
likelihood p(+|enfermo)80%
P(enf∣+)=π p(+∣enf)π p(+∣enf)+(1−π) p(+∣sano)=0.010⋅0.800.010⋅0.80+0.990⋅0.030≈0.212P(\text{enf}\mid +) = \frac{\pi\,p(+\mid\text{enf})}{\pi\,p(+\mid\text{enf}) + (1-\pi)\,p(+\mid\text{sano})} = \frac{0.010\cdot 0.80}{0.010\cdot 0.80 + 0.990\cdot 0.030} \approx 0.212
La mayoría de positivos son falsas alarmas: la tasa base (prior) domina. Nota que P(+|enfermo) = 80% pero P(enfermo|+) = 21%: invertir la barra «|» cambia la pregunta.
Cómo calcular un posterior en el examen (receta)
  1. Identifica las clases y el prior: πinf=0.10\pi_\text{inf} = 0.10, πsano=0.90\pi_\text{sano} = 0.90.
  2. Identifica los likelihoods de la evidencia observada: p(+∣inf)=0.80p(+\mid\text{inf}) = 0.80, p(+∣sano)=1−0.99=0.01p(+\mid\text{sano}) = 1 - 0.99 = 0.01.
  3. Multiplica prior × likelihood por clase (los «scores»): inf =0.10⋅0.80=0.080= 0.10\cdot0.80 = 0.080; sano =0.90⋅0.01=0.009= 0.90\cdot0.01 = 0.009.
  4. Normaliza (divide por la suma, la evidencia p(+)=0.089p(+) = 0.089): P(inf∣+)=0.080/0.089≈0.90P(\text{inf}\mid +) = 0.080/0.089 \approx 0.90.
  5. Para decidir (MAP) basta comparar los scores del paso 3: 0.080 > 0.009 ⇒ infectado. La normalización solo hace falta si te piden la probabilidad.
  6. Chequeo de sentido común: con 1 000 personas, 100 infectadas → 80 positivos verdaderos; 900 sanas → 9 falsos positivos; 80/89≈0.9080/89 \approx 0.90 ✓.

Prior × likelihood → posterior: aparece la sigmoide

Sección titulada «Prior × likelihood → posterior: aparece la sigmoide»

Con dos clases gaussianas en 1-D, graficando πk p(x∣y=k)\pi_k\,p(x\mid y=k), la frontera está donde una curva supera a la otra, y el posterior P(y=1∣x)P(y=1\mid x) sube por 0.5 justo ahí con forma de S. Esa S no se supone: sale de dos gaussianas, y es la misma sigmoide que la logística ajusta directamente (LDA lo demuestra).

Predecir la clase de mayor posterior es el estimador MAP (maximum a posteriori):

y^MAP=arg⁡max⁡kP(y=k∣x)=arg⁡max⁡kπk⏟priorp(x∣y=k)⏟likelihood,y^MLE=arg⁡max⁡kp(x∣y=k)\hat y_\text{MAP} = \arg\max_k P(y=k\mid\mathbf{x}) = \arg\max_k \underbrace{\pi_k}_{\text{prior}}\underbrace{p(\mathbf{x}\mid y=k)}_{\text{likelihood}},\qquad \hat y_\text{MLE} = \arg\max_k p(\mathbf{x}\mid y=k)

MAP = MLE + prior; si todas las clases son igual de comunes, coinciden. La misma idea sirve para ajustar parámetros: θMAP=arg⁡max⁡θp(D∣θ) p(θ)\theta_\text{MAP} = \arg\max_\theta p(\mathcal D\mid\theta)\,p(\theta): el prior tira la estimación hacia valores razonables, como un regularizador. El suavizado de Laplace de Naive Bayes es exactamente esto.

Prior de spam 0.4. p(free∣spam)=0.8p(\text{free}\mid\text{spam}) = 0.8, p(free∣ham)=0.1p(\text{free}\mid\text{ham}) = 0.1. Si un correo contiene «free», ¿P(spam∣free)P(\text{spam}\mid\text{free})? ¿Qué diría MLE sin prior?

Ver solución

Scores: spam 0.4×0.8=0.320.4\times0.8 = 0.32; ham 0.6×0.1=0.060.6\times0.1 = 0.06. Posterior =0.32/0.38=0.842= 0.32/0.38 = 0.842. MAP ⇒ spam. MLE compara solo 0.80.8 vs 0.10.1 ⇒ también spam (aquí coinciden porque el likelihood domina).

Autoevaluación

0/4 correctas · 0 respondidas
1. El prior de una clase kk se estima como πk=Nk/K\pi_k = N_k/K (entre el nº de clases).
2. En la regla de Bayes, el denominador p(x)p(\mathbf{x})…
3. Un modelo generativo modela…
4. Si todos los priors son iguales, MAP y MLE…

Fuente ·ML_Course_Generative_Probabilistic_Models.pdf (slides 3–15)