Cerramos el módulo de fundamentos con el resultado de probabilidad más influyente en Machine Learning. La lección anterior terminó con una pregunta pendiente: ¿cómo actualizar de forma racional lo que ya creemos cuando llega evidencia nueva? El teorema de Bayes es exactamente eso: una regla para revisar probabilidades a la luz de los datos. Además de sostener un clasificador clásico que veremos en el módulo 4, el razonamiento bayesiano es imprescindible para interpretar correctamente sistemas de detección —de fraude, de enfermedades, de spam— donde la intuición humana falla estrepitosamente. Lo construiremos paso a paso desde la probabilidad condicionada y lo aplicaremos al detector de pedidos fraudulentos de MercaFresh.
Contenido
- Probabilidad condicionada
- El teorema de Bayes: derivación e interpretación
- Priors, likelihood y posterior
- Ejemplo numérico completo: fraude en pedidos de MercaFresh
- La trampa de los falsos positivos (falacia del fiscal)
- Frecuentismo vs. bayesianismo (breve)
- Bayes en Machine Learning
Probabilidad condicionada
La probabilidad condicionada P(A|B) —léase "probabilidad de A dado B"— es la probabilidad de A sabiendo que B ha ocurrido:
P(A|B) = P(A ∩ B) / P(B)
donde P(A ∩ B) es la probabilidad de que ocurran ambas. Condicionar es restringir el universo: ya no consideramos todos los casos posibles, solo aquellos donde B se cumple.
Ejemplo MercaFresh: si el 3 % de todos los pedidos son contra reembolso y además fraudulentos, y el 9 % de los pedidos son contra reembolso, entonces:
P(fraude | contra_reembolso) = 0,03 / 0,09 = 0,33
Entre los pedidos contra reembolso, un tercio son fraudulentos, aunque el fraude global sea mucho menor.
El punto crucial —origen de casi todos los errores de intuición— es que P(A|B) ≠ P(B|A):
- P(mojado | llueve) ≈ 1, pero P(llueve | mojado) es menor (puede haberte alcanzado un aspersor).
- En MercaFresh: P(alerta | fraude) —qué proporción de fraudes dispara la alerta— no es lo mismo que P(fraude | alerta) —qué proporción de alertas son fraudes reales. La segunda es la que le importa al equipo que revisa alertas, y suele ser sorprendentemente baja. Esta lección gira en torno a cómo pasar de una a la otra.
El teorema de Bayes: derivación e interpretación
La derivación cabe en tres líneas. La probabilidad conjunta puede escribirse de dos maneras:
- P(A ∩ B) = P(A|B) · P(B)
- P(A ∩ B) = P(B|A) · P(A)
Igualando ambas y despejando P(A|B):
P(A|B) = P(B|A) · P(A) / P(B)
Eso es todo el teorema: una consecuencia directa de la definición de probabilidad condicionada. Su poder está en la lectura: permite invertir el condicionamiento, calcular la dirección que nos interesa —P(hipótesis | evidencia)— a partir de la dirección que solemos conocer —P(evidencia | hipótesis)—.
Cuando el denominador P(B) no se conoce directamente, se calcula con la ley de la probabilidad total, sumando sobre todas las formas en que B puede ocurrir. Para una hipótesis H y su negación ¬H:
P(B) = P(B|H) · P(H) + P(B|¬H) · P(¬H)
Esta versión "expandida" es la que usaremos en el ejemplo numérico.
Priors, likelihood y posterior
En el uso inferencial del teorema, cada pieza tiene nombre propio:
P(H|E) = P(E|H) · P(H) / P(E)
| Término | Nombre | Significado | MercaFresh (fraude) |
|---|---|---|---|
| P(H) | Prior (a priori) | Lo que creíamos antes de ver la evidencia | Tasa base de fraude: 1 % de los pedidos |
| P(E|H) | Likelihood (verosimilitud) | Probabilidad de la evidencia si la hipótesis es cierta | P(alerta | fraude): sensibilidad del detector |
| P(E) | Evidencia | Probabilidad total de observar E | P(alerta): proporción total de pedidos con alerta |
| P(H|E) | Posterior (a posteriori) | La creencia actualizada tras ver la evidencia | P(fraude | alerta): lo que queremos saber |
graph LR
A["Prior<br>P(H)"] --> C["Teorema de Bayes"]
B["Evidencia nueva<br>likelihood P(E|H)"] --> C
C --> D["Posterior<br>P(H|E)"]
D -. "el posterior de hoy es<br>el prior de manana" .-> A
La flecha punteada es la idea más elegante del enfoque: el aprendizaje es iterativo. Cada nueva evidencia convierte el posterior en el prior del siguiente cálculo. En cierto sentido, "aprender de los datos" —la definición misma de ML de la lección 01-01— es aplicar Bayes una y otra vez.
Ejemplo numérico completo: fraude en pedidos de MercaFresh
MercaFresh instala un detector automático de pedidos fraudulentos. Datos del sistema:
- Prior: el 1 % de los pedidos son fraudulentos. P(F) = 0,01.
- Sensibilidad (likelihood): si un pedido es fraudulento, el detector lo marca el 95 % de las veces. P(alerta|F) = 0,95.
- Tasa de falsos positivos: si un pedido es legítimo, el detector se equivoca y lo marca el 4 % de las veces. P(alerta|¬F) = 0,04.
Pregunta: llega una alerta. ¿Qué probabilidad hay de que el pedido sea realmente fraudulento? Intuición típica: "el detector acierta el 95 %, así que ~95 %". Veamos.
Paso 1 — Probabilidad total de alerta (ley de probabilidad total):
P(alerta) = P(alerta|F)·P(F) + P(alerta|¬F)·P(¬F) P(alerta) = 0,95 · 0,01 + 0,04 · 0,99 = 0,0095 + 0,0396 = 0,0491
Paso 2 — Bayes:
P(F|alerta) = P(alerta|F) · P(F) / P(alerta) = 0,0095 / 0,0491 ≈ 0,193
Solo el 19,3 % de las alertas corresponde a fraude real. Cuatro de cada cinco alertas son falsas alarmas, con un detector "del 95 %".
La forma más clara de verlo es con frecuencias naturales sobre 10.000 pedidos:
| Alerta | Sin alerta | Total | |
|---|---|---|---|
| Fraudulentos (1 %) | 95 (verdaderos positivos) | 5 (fraudes no detectados) | 100 |
| Legítimos (99 %) | 396 (falsos positivos) | 9.504 | 9.900 |
| Total | 491 | 9.509 | 10.000 |
De las 491 alertas, solo 95 son fraude: 95/491 ≈ 19,3 %. El culpable es el prior: el fraude es tan raro que incluso una pequeña tasa de error sobre la enorme masa de pedidos legítimos (4 % de 9.900 = 396) ahoga a los verdaderos positivos. Esta tabla es, en esencia, una tabla de confusión de probabilidades; en el módulo 6 (lección 06-02) la reencontraremos como matriz de confusión de un clasificador, con métricas como la precisión (que aquí sería exactamente ese 19,3 %).
Verifiquémoslo con código, dos veces: por fórmula y por simulación.
import numpy as np
# --- Via 1: formula de Bayes ---
p_fraude = 0.01 # prior
p_alerta_si_fraude = 0.95 # sensibilidad (likelihood)
p_alerta_si_legit = 0.04 # tasa de falsos positivos
p_alerta = (p_alerta_si_fraude * p_fraude
+ p_alerta_si_legit * (1 - p_fraude))
posterior = p_alerta_si_fraude * p_fraude / p_alerta
print(f"P(fraude | alerta) = {posterior:.3f}") # 0.193
# --- Via 2: simulacion de 1 millon de pedidos ---
rng = np.random.default_rng(42)
n = 1_000_000
es_fraude = rng.random(n) < p_fraude # 1% de fraudes reales
prob_alerta = np.where(es_fraude, p_alerta_si_fraude, p_alerta_si_legit)
alerta = rng.random(n) < prob_alerta # el detector actua
print(f"Simulado: {es_fraude[alerta].mean():.3f}") # ~0.193np.where(condicion, a, b)asigna a cada pedido su probabilidad de alerta según sea fraude o no; compararrng.random(n)con esa probabilidad simula el resultado (el truco Bernoulli de la lección 02-02).es_fraude[alerta]filtra los pedidos con alerta, y su.mean()es la fracción de ellos que son fraude: el posterior empírico. Fórmula y simulación coinciden.
Iterando el prior: supongamos que el pedido con alerta además es contra reembolso, y sabemos que P(reembolso|F) = 0,30 frente a P(reembolso|¬F) = 0,08. Usamos el posterior anterior (0,193) como nuevo prior:
P(F | alerta, reembolso) = (0,30 · 0,193) / (0,30 · 0,193 + 0,08 · 0,807) ≈ 0,47
Dos evidencias moderadas han llevado la probabilidad del 1 % al 47 %. Así acumula evidencia un razonador bayesiano. (Ojo: encadenar así asume que las evidencias son independientes dado el fraude; esa suposición "ingenua" tiene nombre propio y lo veremos enseguida.)
La trampa de los falsos positivos (falacia del fiscal)
Confundir P(evidencia|inocente) con P(inocente|evidencia) se conoce como falacia del fiscal, por casos judiciales reales donde se argumentó "la probabilidad de esta coincidencia en un inocente es del 1 %, luego es culpable al 99 %". Como acabas de ver, si la hipótesis es rara a priori, el posterior puede ser bajísimo aunque el test parezca excelente.
Reglas prácticas que se derivan del ejemplo:
- Con eventos raros, manda el prior. Ningún detector luce con una tasa base del 1 %: pregunta siempre "¿cuántos casos reales hay por cada falsa alarma posible?".
- Piensa en frecuencias naturales ("de cada 10.000 pedidos...") en lugar de porcentajes condicionados: la tabla de conteos vuelve obvio lo que las fórmulas esconden.
- El coste operativo de los falsos positivos es real: con 491 alertas diarias y solo 95 fraudes, el equipo de revisión de MercaFresh dedica el 80 % de su tiempo a pedidos legítimos (y quizá molesta a buenos clientes bloqueándolos). Subir el umbral del detector reduce alertas pero deja escapar fraudes: es el mismo compromiso tipo I / tipo II de la lección 02-04, ahora en versión probabilística.
Frecuentismo vs. bayesianismo (breve)
Las dos grandes escuelas de la estadística difieren en qué significa "probabilidad":
| Aspecto | Frecuentista | Bayesiano |
|---|---|---|
| Probabilidad es... | Frecuencia a largo plazo de un evento repetible | Grado de creencia, actualizable con datos |
| Los parámetros (μ, p...) son... | Fijos pero desconocidos | Variables con su propia distribución |
| Herramientas típicas | p-valores, intervalos de confianza (lección 02-04) | Priors, posteriors, intervalos de credibilidad |
| ¿"P(hipótesis) = 0,9" tiene sentido? | No (la hipótesis es cierta o falsa) | Sí (es un grado de creencia) |
| Punto fuerte | Procedimientos objetivos y estandarizados | Incorpora conocimiento previo; ideal con pocos datos |
| Punto débil | Interpretación retorcida (recuerda el IC del 95 %) | Elegir el prior tiene una parte subjetiva |
En la práctica del ML moderno ambas conviven sin drama: evaluamos modelos con métodos frecuentistas (tests, intervalos) y usamos ideas bayesianas en clasificadores, regularización o estimación de incertidumbre. Son cajas de herramientas complementarias, no religiones enfrentadas.
Bayes en Machine Learning
- Naive Bayes (lección 04-06). El encadenamiento de evidencias que hicimos con "alerta + contra reembolso" es literalmente el mecanismo del clasificador Naive Bayes: combina muchas características asumiendo que son independientes dada la clase (de ahí lo de naive, ingenuo) y elige la clase con mayor posterior. En el módulo 4 lo construiremos para clasificar; aquí ya tienes toda su matemática.
- Interpretar clasificadores. Cualquier detector (churn, fraude, spam) que dé probabilidades debe leerse en clave bayesiana: la utilidad de sus alertas depende de la tasa base, no solo de su "acierto".
- Pensamiento de actualización. Los sistemas que aprenden incrementalmente —ajustando creencias pedido a pedido— siguen el ciclo prior → evidencia → posterior que has practicado.
Errores Comunes y Consejos
- Invertir el condicionamiento. P(A|B) ≠ P(B|A) es el error. Ante cualquier porcentaje condicionado, pregúntate: ¿condicionado a qué?
- Ignorar la tasa base. Un test del 95 % sobre un evento del 1 % produce mayoría de falsas alarmas. Calcula siempre el posterior antes de fiarte de una alerta.
- Olvidar el denominador. P(E) debe incluir todas las formas de observar la evidencia (fraudes detectados + falsas alarmas). Omitir el segundo sumando infla el posterior.
- Encadenar evidencias correlacionadas como si fueran independientes. Si dos señales son casi la misma (importe alto y nº de artículos alto), multiplicar sus aportaciones cuenta la misma evidencia dos veces y exagera el posterior; recuerda las correlaciones de 02-03.
- Tratar el prior como un capricho. En aplicaciones reales el prior sale de datos históricos (la tasa de fraude observada), no de una corazonada. Documéntalo como cualquier otro dato.
- Consejo: cuando un cálculo bayesiano te confunda, tradúcelo a una tabla de frecuencias sobre 10.000 casos, como la de esta lección. Es infalible para recuperar la intuición.
Ejercicios
Ejercicio 1
En MercaFresh, el 20 % de los clientes son del segmento "familia numerosa". Entre ellos, el 60 % compra la marca blanca; entre el resto de clientes, solo el 25 %. Un pedido llega con marca blanca: ¿cuál es la probabilidad de que sea de una familia numerosa? Plantea prior, likelihood y evidencia antes de calcular.
Ejercicio 2
El detector de fraude de MercaFresh se recalibra: mantiene la sensibilidad en 0,95 pero reduce los falsos positivos de 0,04 a 0,01. Con el mismo prior del 1 %, recalcula P(fraude|alerta) con la fórmula de Bayes y reconstruye la tabla de 10.000 pedidos. ¿Cuánto mejora el ratio de alertas útiles?
Ejercicio 3
Adapta la simulación de NumPy del ejemplo para verificar tu resultado del ejercicio 2 con un millón de pedidos. Después responde: si en lugar de mejorar el detector, la tasa de fraude subiera del 1 % al 5 % (detector original: 0,95 / 0,04), ¿qué posterior obtendrías? ¿Qué enseña la comparación de ambos escenarios?
Soluciones
Solución 1
- Prior: P(FN) = 0,20. Likelihood: P(MB|FN) = 0,60. Además, P(MB|¬FN) = 0,25.
- Evidencia: P(MB) = 0,60·0,20 + 0,25·0,80 = 0,12 + 0,20 = 0,32.
- Posterior: P(FN|MB) = 0,12 / 0,32 = 0,375.
Ver marca blanca casi duplica la probabilidad de familia numerosa (del 20 % al 37,5 %), pero sigue siendo más probable que el pedido no lo sea: la evidencia actualiza, no sentencia.
Solución 2
- P(alerta) = 0,95·0,01 + 0,01·0,99 = 0,0095 + 0,0099 = 0,0194.
- P(F|alerta) = 0,0095 / 0,0194 ≈ 0,49.
Tabla sobre 10.000 pedidos: 95 verdaderos positivos y 99 falsos positivos → 194 alertas, de las que casi la mitad son fraude real. Reducir los falsos positivos del 4 % al 1 % (sin tocar la sensibilidad) sube las alertas útiles del 19 % al 49 % y reduce las alertas diarias de 491 a 194: para eventos raros, bajar la tasa de falsos positivos rinde mucho más que subir la sensibilidad.
Solución 3
import numpy as np
rng = np.random.default_rng(0)
n = 1_000_000
def posterior_simulado(p_fraude, sens, fp):
es_fraude = rng.random(n) < p_fraude
alerta = rng.random(n) < np.where(es_fraude, sens, fp)
return es_fraude[alerta].mean()
print(posterior_simulado(0.01, 0.95, 0.01)) # ~0.49 (ejercicio 2, verificado)
print(posterior_simulado(0.05, 0.95, 0.04)) # ~0.556 (fraude al 5%, detector original)Con fórmula, el segundo escenario: P(alerta) = 0,95·0,05 + 0,04·0,95 = 0,0855, posterior = 0,0475/0,0855 ≈ 0,556. Moraleja: el posterior depende tanto del detector como del prior. Un mismo detector pasa de generar 80 % de falsas alarmas a ser mayormente fiable solo porque el fenómeno es más frecuente. Por eso un modelo de ML validado en un entorno (o una época) con una tasa base puede degradarse al cambiar esa tasa: un fenómeno de deriva que retomaremos al hablar de monitoreo en el módulo 8.
Conclusión
Has cerrado el módulo con la joya de la probabilidad aplicada: partiendo de la probabilidad condicionada derivaste el teorema de Bayes, aprendiste el vocabulario prior–likelihood–posterior y lo aplicaste al detector de fraude de MercaFresh, descubriendo que un detector "del 95 %" produce cuatro falsas alarmas por cada fraude real cuando el evento es raro, y que la evidencia se acumula iterando el teorema. También situaste las escuelas frecuentista y bayesiana como herramientas complementarias y dejaste anotado que el clasificador Naive Bayes del módulo 4 no es más que este teorema convertido en algoritmo. Con esto terminan los fundamentos de estadística y probabilidad: ya sabes describir datos, modelar su aleatoriedad, medir relaciones, cuantificar la incertidumbre y actualizar creencias. En el módulo 3 pondremos estas herramientas a trabajar sobre datos reales e imperfectos: empezaremos por la limpieza de datos, el paso donde los datasets de MercaFresh —con sus duplicados, errores y valores imposibles— se preparan para alimentar a los modelos.
Curso de Machine Learning
Módulo 1: Introducción al Machine Learning
- ¿Qué es el Machine Learning?
- Historia y evolución del Machine Learning
- Tipos de Machine Learning
- Aplicaciones del Machine Learning
- El flujo de trabajo de un proyecto de Machine Learning
Módulo 2: Fundamentos de Estadística y Probabilidad
- Conceptos básicos de estadística
- Distribuciones de probabilidad
- Correlación y covarianza
- Inferencia estadística
- Teorema de Bayes
Módulo 3: Preprocesamiento de Datos
- Limpieza de datos
- Manejo de datos faltantes
- Transformación de datos
- Codificación de variables categóricas
- Normalización y estandarización
- Ingeniería de características
Módulo 4: Algoritmos de Machine Learning Supervisado
- Regresión lineal
- Regresión logística
- Árboles de decisión
- Máquinas de soporte vectorial (SVM)
- K-Vecinos más cercanos (K-NN)
- Naive Bayes
- Redes neuronales
Módulo 5: Algoritmos de Machine Learning No Supervisado
- Clustering: K-means
- Clustering jerárquico
- Análisis de componentes principales (PCA)
- Análisis de agrupamiento DBSCAN
- Visualización de datos con t-SNE y UMAP
Módulo 6: Evaluación y Validación de Modelos
- División de datos: entrenamiento, validación y prueba
- Métricas de evaluación
- Validación cruzada
- Curva ROC y AUC
- Overfitting y underfitting
Módulo 7: Técnicas Avanzadas y Optimización
- Regularización: Ridge, Lasso y Elastic Net
- Ensemble Learning
- Gradient Boosting
- Redes neuronales profundas (Deep Learning)
- Optimización de hiperparámetros
Módulo 8: Implementación y Despliegue de Modelos
- Frameworks y bibliotecas populares
- Implementación de modelos en producción
- Mantenimiento y monitoreo de modelos
- Consideraciones éticas y de privacidad
Módulo 9: Proyectos Prácticos
- Proyecto 1: Predicción de precios de viviendas
- Proyecto 2: Clasificación de imágenes
- Proyecto 3: Análisis de sentimientos en redes sociales
- Proyecto 4: Detección de fraudes
- Proyecto 5: Segmentación de clientes
