Bayesian Network
Una red bayesiana modela variables y sus dependencias condicionales como un grafo acíclico dirigido, de modo que las pruebas pueden actualizar las probabilidades de las causas.
Una red bayesiana, también llamada red de creencias, es un modelo gráfico probabilístico que representa un conjunto de variables aleatorias y sus dependencias condicionales mediante un grafo acíclico dirigido (DAG). Cada nodo es una variable, como una enfermedad, un síntoma o una lectura de un sensor, y cada flecha apunta desde una influencia directa hacia la variable afectada. Cada nodo almacena una tabla de probabilidades condicionales que indica su distribución para cada combinación de los valores de sus nodos padre; en conjunto, estas tablas definen la distribución conjunta completa de todas las variables. Dada la evidencia sobre algunas variables, la red calcula las probabilidades actualizadas del resto, por lo que sirve para diagnosticar, evaluar riesgos y apoyar la toma de decisiones en situaciones de incertidumbre. Judea Pearl desarrolló buena parte de la teoría en la década de 1980 y su trabajo sobre razonamiento probabilístico y causal le valió el Premio Turing de 2011.
Estructura y tablas de probabilidades condicionales#
El grafo codifica la independencia condicional: cada variable es independiente de las variables que no son descendientes suyas una vez conocidos sus nodos padre. Esto permite factorizar la distribución conjunta en componentes locales pequeños: P(X1, ..., Xn) = P(X1 | padres(X1)) × ... × P(Xn | padres(Xn)). La clásica red de robo y alarma del trabajo de Pearl, utilizada en todo el manual Inteligencia artificial: un enfoque moderno de Russell y Norvig, tiene cinco variables binarias. Un robo o un terremoto pueden activar una alarma doméstica, y la alarma hace que dos vecinos, John y Mary, llamen al propietario.
Una tabla conjunta completa para cinco variables binarias necesita 31 probabilidades independientes. La red solo necesita 10: una para el robo y otra para el terremoto, cuatro para la alarma dada cada combinación de sus dos nodos padre y dos para cada vecino dada la alarma. El ahorro aumenta rápidamente a medida que se añaden variables, porque el tamaño de cada tabla solo depende del número de nodos padre de su nodo.
Inferencia: actualización de creencias a partir de la evidencia#
La inferencia fija las variables observadas y calcula la distribución posterior de una variable consultada aplicando el teorema de Bayes en todo el grafo. Puede avanzar en cualquier dirección: de las causas a los efectos (predicción), de los efectos a las causas (diagnóstico) y entre causas de un efecto común. Este último patrón, llamado explicación por exclusión, significa que, una vez que se sabe que ha sonado la alarma, saber que ha habido un terremoto reduce la probabilidad de un robo. La inferencia exacta por enumeración o eliminación de variables es viable en redes pequeñas o con estructura de árbol, pero en general es NP-hard. Por eso, las redes grandes utilizan métodos aproximados, como la ponderación por verosimilitud, el muestreo de Gibbs o la propagación de creencias con ciclos.
Este ejemplo responde mediante enumeración a la consulta del manual P(Robo | John llama, Mary llama), sumando la distribución conjunta factorizada sobre las variables no observadas de terremoto y alarma:
from itertools import product
# Conditional probability tables of the burglary-alarm network
p_burglary, p_earthquake = 0.001, 0.002
p_alarm = {(True, True): 0.95, (True, False): 0.94, (False, True): 0.29, (False, False): 0.001}
p_john = {True: 0.90, False: 0.05} # P(John calls | alarm)
p_mary = {True: 0.70, False: 0.01} # P(Mary calls | alarm)
def bern(p, value):
"""Return the probability of a binary outcome with success probability p."""
return p if value else 1 - p
# Evidence: both neighbors called. Sum the factored joint over the hidden variables.
joint = {True: 0.0, False: 0.0}
for b, e, a in product([True, False], repeat=3):
joint[b] += bern(p_burglary, b) * bern(p_earthquake, e) * bern(p_alarm[b, e], a) * p_john[a] * p_mary[a]
print(f"P(burglary | John and Mary call) = {joint[True] / sum(joint.values()):.3f}")El script muestra 0.284, el mismo resultado que da el manual. Dos llamadas elevan la probabilidad de un robo de 1 entre 1.000 a aproximadamente un 28 %, y el 72 % restante corresponde a explicaciones sin robo, como una alarma activada por un terremoto o por un fallo, ya que los robos son muy poco frecuentes.
Aprendizaje de redes bayesianas a partir de datos#
Una red puede construirse manualmente a partir del conocimiento experto, aprenderse a partir de datos o combinar ambos métodos. El aprendizaje de parámetros completa las tablas de probabilidades condicionales a partir de frecuencias observadas, utilizando distribuciones previas para suavizar las combinaciones poco frecuentes y el algoritmo de maximización de la esperanza cuando faltan algunos valores. El aprendizaje de la estructura busca el grafo en sí, ya sea puntuando grafos candidatos con criterios como el criterio de información bayesiano o ejecutando pruebas de independencia condicional, como hace el algoritmo PC. Las flechas aprendidas muestran dependencia estadística; interpretarlas como causas requiere los supuestos adicionales que estudia el descubrimiento causal. Bibliotecas de Python como pgmpy implementan ambos tipos de aprendizaje, además de la inferencia exacta y aproximada.
Aplicaciones en el mundo real#
- Diagnóstico médico: Las redes relacionan enfermedades con los síntomas y resultados de pruebas que causan. Así, las observaciones de un profesional sanitario actualizan la probabilidad de cada afección y cada conclusión puede rastrearse en el grafo, una forma de IA explicable.
- Diagnóstico de fallos: Los sistemas industriales y de TI modelan cómo los fallos de componentes se propagan a las alarmas y las lecturas. En la inspección visual, las clases de defectos detectadas por un modelo YOLO26 pueden introducirse en la red como evidencia observada que actualiza la probabilidad de cada causa raíz anterior, como una herramienta desgastada o una máquina mal calibrada.
- Evaluación de riesgos: Ecólogos, aseguradoras e ingenieros de seguridad combinan datos escasos con el criterio de expertos en redes que estiman la probabilidad de sucesos poco frecuentes.
Redes bayesianas y modelos relacionados#
- Naive Bayes: Red bayesiana en la que un nodo de clase es el único nodo padre de cada característica, lo que supone que las características son independientes dada la clase.
- Campos aleatorios de Markov: Modelos gráficos con aristas no dirigidas, adecuados para relaciones simétricas, como las de píxeles vecinos en una imagen.
- Procesos de decisión de Markov: Modelos de decisiones secuenciales, con acciones que cambian el estado y recompensas que hay que maximizar; son el marco estándar del aprendizaje por refuerzo. Una red bayesiana solo incorpora decisiones y recompensas al ampliarse con nodos de decisión y utilidad en un diagrama de influencia.
- Modelos ocultos de Markov: Red bayesiana dinámica que repite la misma estructura en cada paso temporal, con un estado oculto que emite una observación por paso. Los filtros de Kalman tienen la misma estructura, pero con estados continuos y transiciones y observaciones lineales gaussianas.










