Inferencia bayesiana: actualizar lo que crees con evidencia
Empezás creyendo una cosa. Llegó un dato nuevo. ¿Cuánto debería cambiar tu creencia? La inferencia bayesiana es la receta matemática que responde esa pregunta — y es la base de filtros de spam, sistemas de recomendación y muchos modelos de IA modernos.
Idea central: empezás con una creencia inicial (prior). Llegan datos. Terminás con una creencia actualizada (posterior). Bayes te dice exactamente cómo combinar las dos cosas. Cuanta más evidencia juntes, más "afilada" se vuelve tu creencia — más seguro estás del valor real.
1 El problema: una máquina nueva
Compraste una máquina nueva para producir piezas. La pregunta clave es: ¿qué porcentaje de las piezas pasa control de calidad? Llamemos a ese número (que no conoces) θ. Puede valer cualquier cosa entre 0 (todas fallan) y 1 (todas pasan).
El reflejo clásico es: "prendo la máquina, hago 1000 piezas y cuento". Pero la inferencia bayesiana te ofrece algo mejor: actualizá tu creencia después de cada pieza. Así podés tomar decisiones con muchos menos datos.
2 Tu creencia inicial: el prior
Como no sabés nada de la máquina al principio, asumís que cualquier valor de θ entre 0 y 1 es igualmente probable. Esa creencia se llama prior plano (o uniforme):
Es una línea plana. Significa: "no sé nada todavía; cualquier valor de θ me parece igualmente plausible". Es el punto de partida más honesto cuando arrancás sin información.
3 Llega el primer dato: una pieza pasa
Encendés la máquina, sale la primera pieza, la chequeas: pasa. ¿Qué deberías creer ahora?
Intuitivamente, deberías inclinar tu creencia hacia valores más altos de θ. Después de todo, una pieza que pasa es más consistente con una máquina que produce muchas piezas buenas que con una que produce pocas. Pero no es prueba definitiva — también es posible que una máquina mala te haya dado 1 pieza buena por suerte.
Bayes captura ese razonamiento de forma exacta: la curva del posterior se inclina ligeramente hacia 1, sin saltar al 100%.
4 Llegan más datos: la curva se va afinando
Si después de probar 10 piezas pasaron 7, tu creencia debe centrarse alrededor de 0.7 — pero todavía con incertidumbre, porque 10 muestras son pocas. Si probaste 100 piezas y pasaron 70, la curva se vuelve mucho más nitida alrededor de 0.7 — ya estás casi seguro del valor real.
Más datos = curva más afilada = más certeza. Eso es exactamente lo que vas a ver y mover en el sandbox de más abajo.
5 La regla de Bayes: cómo se combina todo
La fórmula que combina prior, datos y posterior se llama regla de Bayes:
El símbolo ∝ significa "es proporcional a" — basta con normalizar al final para que el área bajo la curva sume 1. Lo importante es entender los tres ingredientes:
En palabras simples: "lo que crees ahora es proporcional a lo que creías antes, multiplicado por qué tan bien explica tu creencia los datos". Un prior que predecía bien los datos se ve "premiado" en el posterior; uno que los predecía mal se ve "castigado".
6 Tu turno: mové las observaciones y mirá el posterior
Tocá los sliders para cambiar n (cuántas piezas probaste) y k (cuántas pasaron). Vas a ver dos curvas: el prior plano (cyan punteado) y el posterior actualizado (azul sólido). Mirando cómo cambia el posterior te das cuenta de la magia: más datos = curva más nitida.
Sandbox interactivo
Mové los sliders para agregar observaciones. La curva azul es lo que ahora crees sobre θ.
- Tocá "Sin datos": la curva azul es plana, igual al prior. No sabés nada todavía.
- Tocá "Pocas obs.": la curva ya tiene un pico cerca de 3/5 = 0.6, pero es ancha. Hay incertidumbre.
- Tocá "Muchas": el pico se mueve a 35/50 = 0.7 y la curva se afila. Cada vez más seguro.
- Tocá "Resultado extremo" (20 piezas, todas pasan): la curva apunta hacia 1 pero no llega al 100%. Bayes nunca te deja saltar a "100% seguro" porque siempre queda la duda razonable de que la próxima falle.
7 Por qué importa para IA
La inferencia bayesiana está en el corazón de muchos sistemas de IA que usas todos los días:
- Filtros de spam: prior = "este correo viene de un remitente sospechoso". Likelihood = "qué tan probable es que estas palabras aparezcan en spam vs no-spam". Posterior = "¿es spam?"
- Sistemas de recomendación: tu prior es lo que creían de tus gustos antes; cada like/dislike actualiza el posterior.
- A/B testing en industria y mineria: en lugar de esperar 1000 muestras para concluir, podés decidir cuando el posterior ya está suficientemente afilado.
- Redes neuronales bayesianas: en lugar de pesos fijos, mantienen una distribución sobre los pesos. Así el modelo no solo predice, sino que dice "qué tan seguro estoy".
Hay otra escuela — la frecuentista — que dice "θ es un valor fijo, lo que cambia es nuestro estimador". El bayesiano dice "θ es una variable aleatoria con su propia distribución". Para fines prácticos, ambas escuelas dan respuestas similares cuando tienes muchos datos. Pero cuando tenés pocos datos, la bayesiana es más honesta sobre la incertidumbre.
8 Variante 1: MAP vs MLE (las dos formas de "estimar")
Cuando los datos llegan, hay dos formas clásicas de "extraer un número" del posterior:
- MLE (Maximum Likelihood Estimation): ignora el prior. Dice "¿qué valor de θ hace más probables los datos que observé?". Es la forma frecuentista clásica.
- MAP (Maximum A Posteriori): incluye el prior. Dice "¿qué valor de θ es más probable, considerando tanto los datos como mi creencia previa?".
Razonamiento intuitivo: el MAP "tira" el resultado hacia el prior. Si los datos dicen "θ = 0.69" pero el prior decía "θ alrededor de 0.45", el MAP sale al medio (digamos 0.60). El MLE ignora completamente lo que creías antes — solo mira los datos.
Cuando tenés muchos datos, ambos convergen al mismo número (el prior se vuelve irrelevante). Cuando tenés pocos datos, el prior te salva de conclusiones disparatadas.
Block nuevo con 3 testigos: ¿ley promedio?
Acabas de perforar 3 testigos en una zona nueva del yacimiento. Las leyes te dan 1.2%, 1.5% y 1.4% Cu. Si usás MLE puro, tu mejor estimación es (1.2 + 1.5 + 1.4) / 3 = 1.37% Cu.
Pero el geólogo te dice: "el yacimiento completo tiene ley promedio 0.8% ± 0.2% Cu, los testigos en esta zona caen siempre cerca de eso". Esa es información previa fuerte. MAP combina los 3 testigos con esa creencia y te da algo intermedio, como 0.95% Cu.
¿Cuál es más honesto? MAP, casi siempre. Con solo 3 testigos, el MLE está sobreajustando a un pequeño accidente local.
Pocos datos + conocimiento previo confiable → MAP ganaBlock con 50 testigos en zona conocida
Ahora tenés 50 testigos en una zona ya explotada. El prior basado en el yacimiento general ya no aporta tanto — los 50 testigos contienen suficiente información local. MAP y MLE convergen al mismo número.
Muchos datos → MAP y MLE dan lo mismo, usá cualquieraTip práctico
Como regla: si tenés menos de 10 muestras y existe un prior creible (estudios anteriores, datos del mismo yacimiento), usá MAP. Si tenés 50+ muestras, MLE está bien y es más simple de explicar a auditorí>as.
9 Variante 2: frecuentista vs bayesiana (las dos escuelas)
Hay un debate filosófico histórico de 200 años entre estadísticos sobre cómo deben hacerse las inferencias. Resumen brutal:
Razonamiento intuitivo: el frecuentista piensa "θ existe en algún lado y debo descubrirlo desde cero con datos". El bayesiano piensa "siempre sé algo sobre θ, los datos me ayudan a precisarlo". Para problemas con poca información previa o muestras gigantes, dan resultados parecidos. Para problemas con pocas muestras pero conocimiento previo confiable, la bayesiana es más honesta.
Reporte frecuentista (clásico geológico)
"Con 95% de confianza, la ley promedio del block está entre 1.15% y 1.42% Cu". Trampa: este lenguaje suele malinterpretarse. No significa "hay 95% de probabilidad de que θ esté en ese rango". Significa "si repito el experimento muchas veces, el 95% de los intervalos que construya van a contener θ".
Reporte bayesiano (cada vez más común)
"Con base en los testigos y el conocimiento previo del yacimiento, hay 95% de probabilidad de que la ley esté entre 1.12% y 1.39% Cu". Honesto: este sí se interpreta como suena.
Cuál elegir en minería
- Exploración temprana (pocos testigos): bayesiana, porque podés incorporar lo que se sabe del distrito geológico.
- Operación maduro (muchos datos): cualquiera; más fácil presentar frecuentista a reguladores clásicos.
- Decisiones secuenciales (donde cada testigo nuevo actualiza la creencia): bayesiana, naturalmente. Cada testigo es un "update".
10 Variante 3: Naive Bayes (un clasificador que usás todos los días)
Hasta aquí estimamos un solo parámetro. Pero Bayes también sirve para clasificar: dado un objeto con varias características, ¿a qué clase pertenece? Esa idea, simplificada de manera ingeniosa, se llama Naive Bayes.
La fórmula es Bayes directo, una vez para cada clase posible, y elegimos la clase con mayor probabilidad posterior:
El "naive" (ingenuo) viene de la suposición simplificadora: asume que las características son independientes entre sí. Eso casi nunca es cierto en la realidad, pero funciona sorprendentemente bien en práctica.
Es uno de los algoritmos más usados en la práctica industrial — rápido, simple, robusto a datos pequeños, y sorprendentemente preciso.
Clasificar testigos: óxido / sulfuro / mixto
El laboratorio te entrega 1000 testigos con composición química (Cu, Fe, S, As, ph). Querés clasificarlos automáticamente en óxido, sulfuro o mixto sin tener que mirarlos uno por uno. Un Naive Bayes entrenado con 100 testigos ya clasificados (datos históricos) puede clasificar el resto con ~90% de acierto.
Cada clase tiene su distribución típica de Cu, S, Fe, As. Bayes calcula, para cada testigo nuevo, qué tan compatible es con cada clase y elige la más probable.
Naive Bayes = primer modelo que prueba todo equipo de análisis de mineralOtros usos prácticos en operaciones
- Detección de fallas: dada una secuencia de vibraciones, temperatura y consumo eléctrico, ¿es falla inminente, normal, o falsa alarma?
- Clasificar tipo de roca: dadas las lecturas de un sensor en tiempo real, ¿es mineralizado, roca de caja o relleno?
- Triage de mantenimiento: dada una orden de trabajo (texto), ¿es preventivo, correctivo crítico o no crítico?
Tip práctico
Cuando llega un dataset nuevo de clasificación, siempre probá Naive Bayes primero. Da el baseline contra el que comparar modelos más sofisticados (random forest, XGBoost, redes neuronales). Si Naive Bayes ya da 92%, no vale la pena complicarse.
+ Más parientes del concepto
El mundo bayesiano tiene más herramientas que vale la pena conocer:
Otros pares conjugados (Normal-Normal, Gamma-Poisson)Ver▾
El truco Beta-Binomial que usamos es uno de muchos "pares conjugados". Normal-Normal estima la media de una variable normal con prior normal — el posterior también es normal. Gamma-Poisson estima la tasa de eventos por unidad de tiempo. Cada par te da actualizaciones analíticas exactas, sin necesidad de simulaciones.
MCMC (Markov Chain Monte Carlo)Ver▾
Cuando el posterior es muy complicado para resolver analíticamente, se aproxima por simulación. MCMC genera miles de muestras del posterior usando una cadena de Markov. Bibliotecas como PyMC, Stan o emcee implementan esto. Es la base de la estadística bayesiana moderna.
Bayes factor (alternativa al p-value)Ver▾
Compara cuá>n bien dos hipó>tesis explican los datos. BF = P(datos | H1) / P(datos | H2). Si BF = 10, la H1 explica los datos 10 veces mejor que H2. Es más interpretable que el p-value frecuentista y permite cuantificar evidencia a favor de la hipótesis nula (no solo en contra).
Redes bayesianasVer▾
Grafos dirigidos donde cada nodo es una variable y las flechas indican relaciones causales o de dependencia. Permiten razonar sobre causalidad de forma natural — calcular qué pasa si "intervenimos" sobre una variable. Tienen aplicaciones en diagnóstico médico, sistemas expertos y modelado de procesos industriales.
Ver el código en Python: cinco snippets, de Bayes a mano hasta clasificador completo Click para abrir
Empezamos con la regla de Bayes pura sin librerías y escalamos hasta un clasificador Naive Bayes funcional.
1. Bayes a mano (probabilidad discreta sin librerías):
# Diagnostico simple: un test detecta una falla mecanica # El test tiene 95% sensibilidad y 90% especificidad # La falla afecta 1 de cada 100 maquinas p_falla = 0.01 p_test_dado_falla = 0.95 p_test_dado_sano = 0.10 # 1 - especificidad # El test sale positivo. Cual es la P(falla | test positivo)? p_test = p_test_dado_falla * p_falla + p_test_dado_sano * (1 - p_falla) p_falla_dado_test = (p_test_dado_falla * p_falla) / p_test print("P(falla | test positivo) =", round(p_falla_dado_test, 4)) # Sorprende: aun con test positivo, P(falla) solo sube a ~0.09
2. Beta-Binomial con scipy (lo del sandbox, pero limpito):
from scipy.stats import beta alpha_prior, beta_prior = 1, 1 # uniforme n, k = 100, 70 # 70 exitos en 100 intentos alpha_post = alpha_prior + k beta_post = beta_prior + (n - k) print("Media posterior:", round(beta.mean(alpha_post, beta_post), 3)) print("Desv:", round(beta.std(alpha_post, beta_post), 4)) ci = beta.interval(0.95, alpha_post, beta_post) print(f"Intervalo de credibilidad 95%: [{ci[0]:.3f}, {ci[1]:.3f}]")
3. MAP vs MLE comparados:
import numpy as np from scipy.stats import norm # 3 muestras de ley en zona nueva muestras = np.array([1.2, 1.5, 1.4]) # MLE: ignora prior, solo datos mle = muestras.mean() print("MLE:", round(mle, 3)) # MAP: usa un prior informado (otras zonas del yacimiento) mu_prior = 0.8 sigma_prior = 0.2 sigma_dato = 0.15 # incertidumbre por muestra # Para normal-normal conjugado, MAP es promedio ponderado n = len(muestras) prec_prior = 1 / sigma_prior**2 prec_likeli = n / sigma_dato**2 prec_post = prec_prior + prec_likeli map_estim = (prec_prior * mu_prior + prec_likeli * muestras.mean()) / prec_post print("MAP:", round(map_estim, 3)) print("Diferencia:", round(abs(mle - map_estim), 3), "(MLE es mas optimista)")
4. Naive Bayes desde cero:
import numpy as np from scipy.stats import norm # Tipos de mineral con sus distribuciones tipicas de Cu, S, Fe clases = { "oxido": {"Cu": (0.8, 0.2), "S": (0.5, 0.3), "Fe": (15, 3)}, "sulfuro": {"Cu": (1.2, 0.3), "S": (8.0, 2.0), "Fe": (20, 4)}, "mixto": {"Cu": (1.0, 0.25), "S": (4.0, 1.5), "Fe": (17, 3)}, } priors = {"oxido": 0.3, "sulfuro": 0.5, "mixto": 0.2} def clasificar(muestra): posteriors = {} for clase, params in clases.items(): like = 1.0 for var, val in muestra.items(): mu, sd = params[var] like *= norm.pdf(val, mu, sd) posteriors[clase] = like * priors[clase] # Normalizar total = sum(posteriors.values()) return {k: v/total for k, v in posteriors.items()} muestra = {"Cu": 0.8, "S": 4.0, "Fe": 12} resultado = clasificar(muestra) for clase, prob in sorted(resultado.items(), key=lambda x: -x[1]): print(f"P({clase}) = {prob:.3f}")
5. Naive Bayes con sklearn (lo mismo, 5 lineas):
from sklearn.naive_bayes import GaussianNB from sklearn.model_selection import train_test_split import numpy as np # Simulamos 200 testigos con 3 variables y 3 clases np.random.seed(42) X, y = [], [] for clase in [0, 1, 2]: # 0=oxido, 1=sulfuro, 2=mixto centros = [[0.8, 0.5, 15], [1.2, 8.0, 20], [1.0, 4.0, 17]] muestras = np.random.normal(centros[clase], [0.25, 1.5, 3], (70, 3)) X.extend(muestras); y.extend([clase] * 70) X = np.array(X); y = np.array(y) X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.3, random_state=42) clf = GaussianNB() clf.fit(X_tr, y_tr) print("Precision:", round(clf.score(X_te, y_te), 3)) muestra = np.array([[0.9, 4.5, 18]]) proba = clf.predict_proba(muestra) print("Probabilidades:", dict(zip(["oxido", "sulfuro", "mixto"], proba[0].round(3))))
11 Pregunta de chequeo
Probaste 20 piezas y todas pasaron QA. Con un prior plano, ¿cuál es la mejor estimación bayesiana de la probabilidad θ de que la próxima pase?
Con esto cerramos el Módulo 1 (Estadística para IA): varianza, covarianza, distribuciones y ahora cómo actualizar creencias. Tienes las cuatro herramientas que aparecen una y otra vez en cualquier modelo. El Módulo 2 arranca con álgebra lineal, que es el segundo idioma nativo de la IA — el que le permite hablar de millones de pesos a la vez.
Regístrate al boletín MathPlay
De la idea al laboratorio que funciona: datos, simulación, visualización, IA y tecnología aplicada a problemas reales de industria y minería. Te escribo cuando hay algo nuevo que vale la pena compartir.
Sin calendario fijo. Sin spam.
Listo. Te escribo cuando haya algo nuevo.
