Redes bayesianas y redes de Markov: una guía intuitiva para la incertidumbre estructurada

Las explicaciones comienzan con la predicción. Un modelo de abandono estima si es probable que un cliente se vaya. Un modelo de fraude estima si una transacción es sospechosa. Un modelo de diagnóstico estima la probabilidad de una afección a partir de síntomas, pruebas e historial. Un clasificador de documentos asigna una categoría a partir de texto, metadatos o incrustaciones.

En cada caso, la configuración es básicamente la misma. Tenemos cierta información observada, generalmente llamada entradas o características, y algo que queremos predecir, generalmente llamado objetivo. Si escribimos las entradas como X y el objetivo como Y, entonces el problema habitual de aprendizaje supervisado es aprender un modelo de:

Es decir, dadas las entradas, ¿qué probabilidad hay de cada salida posible?

Este encuadre es muy útil. Nos brinda regresión logística, máquinas de vectores de soporte, bosques aleatorios, aumento de gradiente, redes neuronales y una gran parte del aprendizaje automático aplicado moderno. En muchos entornos de producción, es el punto de partida correcto. Tienes un objetivo, algunos datos y una métrica. El trabajo del modelo es producir una buena respuesta para ese objetivo.

Las redes bayesianas provienen de un instinto de modelado diferente. Son útiles cuando queremos representar un pequeño mundo incierto en lugar de simplemente aprender un mapeo de las entradas a una salida. En lugar de dividir el mundo en “entradas” y “objetivo”, describimos una colección de variables inciertas:

Algunas de estas variables pueden observarse, otras pueden ocultarse y cualquiera de ellas puede convertirse en lo que nos interesa predecir. El gráfico describe cómo estas variables inciertas dependen unas de otras, dónde puede entrar la evidencia y cómo las creencias deben actualizarse cuando llega nueva información.

Un clasificador generalmente se construye alrededor de una pregunta de predicción:

Dadas estas entradas, ¿cuál es la salida?

Una red bayesiana se construye en torno a una cuestión de incertidumbre más general:

Estas cosas inciertas están relacionadas. Dada la evidencia en cualquier parte del sistema, ¿qué deberíamos creer ahora sobre el resto?

Entonces, en lugar de solo preguntar por P(Y | X), representamos una distribución conjunta más completa sobre las variables:

El propósito del gráfico es hacer manejable esa distribución conjunta codificando qué variables dependen directamente de cuáles otras.

Construiremos la intuición en etapas: primero la distribución conjunta completa, luego una pequeña red bayesiana de hierba húmeda en Python, luego explicando cualquier independencia condicional, luego el aprendizaje y la inferencia de parámetros, y finalmente las redes de Markov y la lógica de Markov.

La distribución conjunta completa es lo que no nos podemos permitir

Imagine un mundo pequeño con algunos hechos inciertos: nubosidad, lluvia, uso de aspersores, pasto mojado, pavimento resbaladizo, tráfico y llegada tardía.

En principio, el modelo probabilístico más completo describiría la probabilidad de cada configuración posible:

P (Nublado, Lluvia, Aspersor, Hierba Mojada, Pavimento Resbaladizo, Tráfico, Llegada Tarde)

Esta es la distribución conjunta completa. Si lo tuviéramos, podríamos preguntar casi cualquier cosa:

P(Lluvia | Hierba mojada) P(Llegada tardía | Lluvia, tráfico) P(Aspersor | Hierba mojada, sin lluvia)

El problema es que la distribución conjunta total crece brutalmente rápido. Si cada variable es binaria, entonces n variables requieren 2ⁿ configuraciones posibles. Siete variables dan ya 128 estados. Veinte variables dan más de un millón. Cien variables están fuera de nuestro alcance.

De modo que el problema es en parte estadístico y en parte representacional. Necesitamos alguna forma de evitar tratar cada variable como potencialmente entrelazada con cualquier otra variable en todas las formas posibles.

Aquí es donde entran los modelos gráficos.

Un modelo gráfico es una forma compacta de representar una distribución de probabilidad haciendo suposiciones sobre la estructura. El gráfico dice qué relaciones locales modelamos directamente y qué relaciones tratamos como consecuencias indirectas de esas piezas locales.

La idea central es simple:

No modeléis todo el mundo incierto como una mesa gigante. Rómpelo en pedazos condicionales más pequeños.

Una red bayesiana es un mapa dirigido de dependencia local.

Tomemos el ejemplo clásico de la hierba mojada. Sales y ves que el pasto está mojado. Quizás llovió. Quizás el aspersor estaba encendido. Quizás sucedieron ambas cosas. El modelo dice que tanto la lluvia como los aspersores influyen en si el césped está mojado. La distribución de probabilidad se factoriza como:

P(Lluvia, Aspersor, Hierba Mojada) = P(Lluvia) P(Rociador) P(Hierba Mojada | Lluvia, Aspersor)

En lugar de escribir una tabla para cada combinación de lluvia, aspersores y pasto mojado, escribimos partes más pequeñas:

P(Lluvia) P(Aspersor) P(Hierba Mojada | Lluvia, Aspersor)

La tabla condicional para pasto mojado es fácil de imaginar:

Cada variable obtiene un modelo de probabilidad local condicionado a sus padres. Para una red bayesiana sobre X₁,…, Xₙ, la factorización general es:

P(X₁,…, Xₙ) = producto sobre i de P(Xᵢ | Padres(Xᵢ))

Cada variable sólo necesita conocer sus padres directos. Así es como un gran modelo probabilístico se convierte en una colección de piezas más pequeñas y comprensibles.

Una pequeña red bayesiana en Python

Ayuda a que esto sea concreto. Construiremos la versión útil más pequeña del modelo de pasto mojado:

Puede que llueva o no. El aspersor puede o no estar sobre el césped. Puede que esté mojado o no.

La estructura es sencilla. Tanto la lluvia como los aspersores influyen en si el césped está mojado. Podemos escribir el modelo como:

P(Lluvia, Aspersor, Hierba Mojada) = P(Lluvia) P(Rociador) P(Hierba Mojada | Lluvia, Aspersor)

Los dos primeros términos son probabilidades previas simples. El último término es una tabla de probabilidad condicional. Aquí hay una implementación deliberadamente pequeña usando Python simple:

de itertools import product # Probabilidades previas P_RAIN = { True: 0.2, False: 0.8, } P_SPRINKLER = { True: 0.1, False: 0.9, } # Tabla de probabilidad condicional: # P(WetGrass = True | Rain, Sprinkler) P_WET_GIVEN_RAIN_SPRINKLER = { (False, False): 0.01, (False, Verdadero): 0.80, (Verdadero, Falso): 0.90, (Verdadero, Verdadero): 0.99, } def p_wet_grass(mojado, lluvia, aspersor): """ Return P(WetGrass = mojado | Lluvia = lluvia, Aspersor = aspersor). """ p_wet = P_WET_GIVEN_RAIN_SPRINKLER[(lluvia, aspersor)] return p_wet if mojado else 1 – p_wet def probabilidad_articulada(lluvia, aspersor, mojado): """ Retorno P(Lluvia, Aspersor, Hierba mojada). """ retorno ( P_RAIN[lluvia] * P_SPRINKLER[aspersor] * p_wet_grass(mojado, lluvia, aspersor) )

Esta es toda la red bayesiana. No hay biblioteca, ni accesorios ni maquinaria oculta detrás de una API. La estructura del modelo es visible en la multiplicación:

P_RAIN[lluvia] * P_SPRINKLER[aspersor] * p_wet_grass(mojado, lluvia, aspersor)

Esa línea es la factorización escrita en código. Ahora podemos enumerar todos los mundos posibles.

para lluvia, aspersor, mojado en producto([False, True], repetir=3): p = probabilidad_articulada(lluvia, aspersor, mojado) print( f"Lluvia={lluvia:5} Aspersor={aspersor:5} " f"WetGrass={mojado:5} P={p:.4f}" )

Esto nos da la probabilidad de que cada tarea se complete.

Una tarea completa significa un estado total posible del pequeño mundo: si llovió, si el aspersor estaba encendido y si el césped estaba mojado.

Las probabilidades en todos los mundos posibles deberían sumar uno:

total = 0.0 para lluvia, rociador, mojado en producto([False, True], repetir=3): total += probabilidad_conjunta(lluvia, rociador, mojado) print(total)

El resultado debería ser 1.0, que es una comprobación de cordura útil. Hemos construido una distribución de probabilidad conjunta válida multiplicando tablas de probabilidad locales más pequeñas.

Hacer preguntas al modelo.

Una vez que tengamos la distribución conjunta, podremos hacer preguntas. Por ejemplo:

En palabras, si el pasto está mojado, ¿qué probabilidad hay de que lloviera? Por la regla de Bayes:

P(Lluvia | Hierba mojada) = P(Lluvia, Hierba mojada) / P(Hierba mojada)

Podemos calcular esto sumando la variable no observada, que es el aspersor:

def probabilidad_de_evidencia(**evidencia): """ Suma la probabilidad conjunta de todos los mundos que coinciden con la evidencia observada. Ejemplo: probabilidad_de_evidencia(húmedo=Verdadero) probabilidad_de_evidencia(lluvia=Verdadero, húmedo=Verdadero) """ total = 0.0 para lluvia, aspersor, mojado en producto([False, True], repetir=3): mundo = { "lluvia": lluvia, "aspersor": rociador, "mojado": mojado, } coincidencias_evidencia = todo( mundo[nombre] == valor para nombre, valor en evidencia.items() ) si coincide_evidencia: total += probabilidad_conjunta(lluvia, rociador, mojado) devolver total

Ahora podemos calcular:

p_lluvia_y_mojado = probabilidad_de_evidencia(lluvia=Verdadero, mojado=Verdadero) p_mojado = probabilidad_de_evidencia(húmedo=Verdadero) p_lluvia_dado_mojado = p_lluvia_y_mojado / p_mojado imprimir(p_lluvia_dado_mojado)

Esto da 0,6897. Entonces, en este pequeño modelo, una vez que observamos pasto mojado, la probabilidad de lluvia aumenta de su valor anterior de 0,2 a aproximadamente 0,69. Esa es la actualización bayesiana. La observación ha cambiado nuestra creencia.

La evidencia puede respaldar más de una explicación.

El pasto mojado también hace que sea más probable que el aspersor:

p_sprinkler_and_wet = probabilidad_de_evidencia(sprinkler=Verdadero, húmedo=Verdadero) p_sprinkler_given_wet = p_sprinkler_and_wet / p_wet print(p_sprinkler_given_wet)

Esto da: 0,3577. El aspersor tenía una probabilidad previa de 0,1. Después de observar pasto mojado, su probabilidad aumenta a aproximadamente 0,36. Eso tiene sentido. La hierba mojada es evidencia de ambas causas posibles.

Ahora podemos considerar las explicaciones. Supongamos que sabemos dos cosas:

la hierba está mojada definitivamente llovió

¿Qué probabilidad hay de que el aspersor estuviera encendido?

P(Aspersor | Hierba mojada, Lluvia) p_aspersor_lluvia_mojada = probabilidad_de_evidencia( aspersor=Verdadero, lluvia=Verdadero, mojado=Verdadero, ) p_lluvia_mojada = probabilidad_de_evidencia( lluvia=Verdadero, húmedo=Verdadero, ) p_aspersor_dado_mojado_y_lluvia = p_aspersor_lluvia_mojada / p_rain_wet imprimir(p_sprinkler_given_wet_and_rain)

Esto da 0,1099, que es mucho menor que 0,3577. Cuando supimos que el césped estaba mojado, el aspersor se volvió más plausible. Una vez que supimos que también llovía, el aspersor se volvió menos necesario como explicación. Esto es una explicación. La hierba está mojada. Al principio, tanto la lluvia como los aspersores son explicaciones plausibles. Una vez que se sabe que lloverá, parte de la presión evidente sobre los aspersores desaparece.

Ésta es una de las razones por las que las redes bayesianas son útiles para el razonamiento estructurado. La evidencia no avanza simplemente de los insumos a los resultados. Se mueve a través de la estructura.

La implementación completa del juguete.

Aquí está todo junto:

de itertools importar producto # ———————– # 1. Definir la red bayesiana # —————————– P_RAIN = { True: 0.2, False: 0.8, } P_SPRINKLER = { True: 0.1, False: 0.9, } P_WET_GIVEN_RAIN_SPRINKLER = { (False, False): 0.01, (False, True): 0.80, (Verdadero, Falso): 0.90, (Verdadero, Verdadero): 0.99, } def p_wet_grass(mojado, lluvia, aspersor): p_wet = P_WET_GIVEN_RAIN_SPRINKLER[(lluvia, aspersor)] return p_wet si está mojado else 1 – p_wet def joint_probability(lluvia, aspersor, mojado): return ( P_RAIN[lluvia] * P_SPRINKLER[aspersor] * p_wet_grass(mojado, lluvia, aspersor) ) # ———————– # 2. Suma de mundos coincidentes # —————————– def probabilidad_de_evidencia(**evidencia): total = 0.0 para lluvia, aspersor, mojado en producto([False, True], repetir=3): mundo = { "lluvia": lluvia, "aspersor": aspersor, "mojado": mojado, } if all(world[name] == valor para nombre, valor en evidencia.items()): total += probabilidad_articulada(lluvia, aspersor, mojado) return total def probabilidad_condicional(consulta, dado): """ Calcular P(consulta | dado). consulta y dado son diccionarios. Ejemplo: probabilidad_condicional( consulta={"lluvia": Verdadero}, dado={"mojado": Verdadero},) """ numerador_evidencia = dict(dado) numerador_evidencia.update(consulta) numerador = probabilidad_de_evidencia(**numerador_evidencia) denominador = probabilidad_de_evidencia(**dado) devolver numerador / denominador # ———————– # 3. Haga preguntas # —————————– print("P anterior (Lluvia):") print(P_RAIN[Verdadero]) print("nP(Lluvia | WetGrass):") print( probabilidad_condicional( consulta={"lluvia": Verdadero}, dado={"mojado": Verdadero}, ) ) print("nP(Rociador | Hierba húmeda):") print( probabilidad_condicional( consulta={"rociador": Verdadero}, dado={"mojado": Verdadero}, ) ) print("nP(Rociador | Hierba mojada, Lluvia):") print( probabilidad_condicional( consulta={"aspersor": Verdadero}, dado={"mojado": Verdadero, "lluvia": Verdadero}, ) )

El resultado esperado es:

P(Lluvia): 0,2 P(Lluvia | Hierba mojada): 0,6896551724137931 P(Aspersor | Hierba mojada): 0,3577283372365339 P(Aspersor | Hierba mojada, lluvia): 0,10987791342952276

Las probabilidades clave evolucionan de la siguiente manera:

El pasto mojado aumenta la probabilidad de lluvia y aspersores. Luego, saber que llovió hace que la probabilidad de aspersores vuelva a disminuir. Ésa es la primera recompensa concreta del artículo. Con algunas tablas de probabilidad y algo de enumeración, obtenemos un modelo que puede razonar hacia adelante, hacia atrás y hacia los lados a través de la incertidumbre.

El gráfico codifica lo que deja de importar

Ahora agregue nubosidad. La nubosidad influye en si llueve y también puede influir en si alguien enciende el aspersor. La lluvia y los aspersores influyen entonces en si la hierba está mojada.

La factorización queda:

P(C, R, S, W) = P(C) P(R | C) P(S | C) P(W | R, S)

dónde:

C = Nublado R = Lluvia S = Aspersor W = Hierba mojada

Esto ya está haciendo algo sutil. El modelo dice que el pasto mojado depende directamente de la lluvia y los aspersores. Puede depender indirectamente de la nubosidad, porque la nubosidad afecta la lluvia y los aspersores. Una vez que sabemos si llovió y si los aspersores estaban encendidos, la nubosidad ya no añade nada sobre la hierba mojada.

Formalmente:

WetGrass ⟂ Nublado | Lluvia, Aspersor

En palabras:

El pasto mojado es independiente de la nubosidad una vez que se conocen la lluvia y los aspersores.

Esto no hace que la nubosidad sea irrelevante. Significa que la nubosidad se vuelve irrelevante después de que se hayan observado las variables correctas.

Esa es una de las ideas más útiles de las redes bayesianas. Codifican la independencia condicional. Nos dicen qué información se vuelve redundante una vez que se conoce otra información.

En los sistemas reales, esto es importante. Una señal puede ser útil antes de observar una causa más directa e inútil después. Una variable puede parecer predictiva porque reemplaza a otra variable. Una red bayesiana le brinda un lenguaje para hacer explícitas esas suposiciones.

La evidencia puede entrar en cualquier lugar

Un clasificador estándar suele tener una dirección fija. Introduces las funciones y obtienes una predicción.

Una red bayesiana es más flexible. La evidencia puede ingresar en cualquier parte del gráfico y las creencias se actualizan en todo el sistema.

En el modelo de pasto mojado, si observamos pasto mojado, nuestra creencia en la lluvia aumenta. Nuestra creencia en los aspersores también aumenta. El efecto nos ha dado evidencia sobre sus posibles causas.

Este es el razonamiento diagnóstico:

Ahora supongamos que nos enteramos de que definitivamente llovió.

El aspersor se vuelve menos necesario como explicación. Su probabilidad puede disminuir en relación con el momento en que la hierba mojada era la única evidencia. A esto se le llama dar explicaciones.

Antes de observar pasto mojado, la lluvia y los aspersores pueden ser independientes o estar débilmente relacionados. Después de observar la hierba mojada, se conectan a través del efecto compartido. La evidencia de una causa reduce la necesidad de la otra. Este patrón aparece en todas partes.

La fiebre hace que tanto la gripe como el COVID sean más plausibles. Una prueba de gripe positiva puede reducir la probabilidad de que también se necesite COVID para explicar la fiebre, dependiendo del resto del modelo. Los pagos atrasados ​​pueden explicarse por estrés macroeconómico, una emergencia personal o ambas cosas. La evidencia de una explicación cambia la probabilidad de la otra.

Ésta es otra razón por la que las redes bayesianas son útiles para el razonamiento estructurado. Apoyan el razonamiento en múltiples direcciones. Las causas predicen efectos, los efectos informan a las causas y las explicaciones compiten entre sí.

Las redes bayesianas son útiles cuando la pregunta no está solucionada

Ésta es la distinción práctica de la regresión logística o SVM. Un modelo de regresión logística generalmente se construye para una pregunta condicional:

Una SVM es similar en espíritu, aunque menos probabilística por defecto. Intenta encontrar un límite de decisión que separe bien las clases.

Estos modelos suelen ser exactamente lo que desea. Si el problema es “predecir el valor predeterminado a partir de este vector de características”, una regresión logística regularizada es una base sólida y un modelo de árbol potenciado puede ser el candidato de producción más sólido.

Una red bayesiana se vuelve interesante cuando el problema tiene una forma más estructurada.

Supongamos que estamos modelando el riesgo crediticio. Las condiciones económicas pueden influir en la pérdida de empleo. La pérdida del empleo puede influir en los pagos atrasados. Las tasas de interés pueden afectar la asequibilidad. Los pagos atrasados ​​pueden influir en el riesgo de impago.

Ahora hay más de una pregunta útil. Quizás quieras preguntar:

P(Predeterminado | Pagos perdidos) P(Pérdida de empleo | Pagos perdidos) P(Predeterminado | Pérdida de empleo, sin pagos perdidos) P(Pagos perdidos | Condiciones económicas) P(Predeterminado | hacer(Tasas de interés = altas))

Esa última pregunta avanza hacia el modelado causal y requiere supuestos más sólidos, pero el punto permanece: en ese punto, el modelo está haciendo más que una predicción unidireccional. Representa un sistema incierto estructurado.

Una regla práctica útil:

Un ejemplo real: redes bayesianas para vigilancia visual

Un ejemplo útil del mundo real proviene de la tesis doctoral de Christopher Town, Procesamiento de información visual basado en ontologías, completada en el Laboratorio de Computación de la Universidad de Cambridge. La tesis aborda el problema de derivar representaciones de alto nivel a partir de datos visuales integrando diferentes tipos de evidencia e incorporando conocimientos previos. Desarrolla un marco de inferencia para visión por computadora basado en ontologías y lenguajes ontológicos.

Figura 2: Red bayesiana basada en ontologías para vigilancia visual, adaptada del ejemplo de tesis de Town. Las detecciones y seguimientos de bajo nivel proporcionan evidencia incierta sobre los estados de los objetos, que respaldan eventos y escenarios de nivel superior. La estructura dirigida permite que la evidencia se propague hacia arriba al mismo tiempo que permite comparar probabilísticamente interpretaciones contrapuestas, como reuniones, seguimiento de vehículos o actividades sospechosas. 📖Fuente: imagen del autor vía GPT5.5.

El problema encaja bien con las redes bayesianas porque el vídeo de vigilancia contiene muchos hechos intermedios inciertos.

En un nivel bajo, un sistema de visión puede detectar manchas, contornos, pistas, posiciones de objetos, patrones de movimiento y señales de apariencia. Estos son ruidosos. Un rastreador puede perder a alguien brevemente. Una sombra puede parecer movimiento. Dos personas pueden fusionarse en una sola masa. Un detector de objetos puede producir una etiqueta plausible pero incierta.

En el nivel superior, es posible que el sistema necesite inferir hechos más semánticos:

¿Es este objeto una persona? ¿La persona camina, se para, entra, sale o se encuentra con alguien? ¿Es este un patrón de movimiento normal o un evento sospechoso? ¿Qué objetos participan en el mismo escenario?

Se podría entrenar un clasificador plano para predecir una etiqueta a partir de un conjunto de características visuales. La configuración de la ciudad está más estructurada. La ontología define el vocabulario del dominio: objetos, estados, roles, eventos, situaciones y escenarios. Luego, la red bayesiana proporciona una capa probabilística que conecta la evidencia visual ruidosa con esas interpretaciones de nivel superior.

El patrón de modelado útil es:

Descriptores visuales → Estados de objetos → Eventos → Escenarios

Por ejemplo, el sistema puede observar que una masa en movimiento tiene un tamaño, forma, trayectoria y apariencia particulares. Esos descriptores visuales proporcionan evidencia de que la masa es una persona. La trayectoria de la persona y su proximidad a otras entidades proporcionan evidencia sobre si está caminando, esperando, acercándose, encontrándose o saliendo. Esos estados inferidos luego admiten etiquetas de escenarios y eventos de nivel superior.

El punto importante es que cada capa es incierta. El modelo representa la estructura intermedia de interpretación.

Una red bayesiana es natural aquí porque la evidencia puede llegar a diferentes niveles. Una pista fiable puede reforzar la hipótesis de un objeto. La función de un objeto conocido puede cambiar la forma en que se interpreta un patrón de movimiento. Un escenario de alto nivel puede hacer que algunas interpretaciones de nivel inferior sean más plausibles que otras.

Este es el mismo principio que el ejemplo del pasto mojado, pero en un entorno más rico. El pasto mojado es evidencia de lluvia o aspersores. En el vídeo de vigilancia, una pista ruidosa, una forma, un patrón de movimiento y una relación espacial son evidencia del estado o evento de un objeto. Una vez que una explicación se vuelve más probable, otras explicaciones pueden resultar menos necesarias.

El trabajo de Town también es un buen ejemplo de por qué es importante la estructura del gráfico. La ontología proporciona una estructura de dominio: qué tipos de entidades existen, qué estados y eventos son significativos y qué relaciones están permitidas. La red bayesiana proporciona la maquinaria probabilística: cómo combinar evidencia, manejar la incertidumbre e inferir etiquetas de alto nivel a partir de observaciones ruidosas.

Eso lo convierte en un ejemplo práctico útil porque se sitúa entre los sistemas expertos construidos a mano y el aprendizaje supervisado ordinario. Utiliza conocimiento del dominio, pero también aprende de videos etiquetados. Utiliza detectores visuales, pero no trata sus resultados como ciertos. Reconoce situaciones de alto nivel, pero llega allí a través de una cadena de variables intermedias inciertas.

Las redes bayesianas son útiles cuando queremos conectar evidencia ruidosa con una interpretación estructurada del mundo.

El coste oculto: alguien tiene que creer en el gráfico

El poder de una red bayesiana proviene de la estructura. El peligro también viene de la estructura.

En el modelo de pasto húmedo, hacemos suposiciones.

Estamos diciendo que la hierba mojada no tiene otras causas directas en este mundo de los juguetes. Estamos diciendo que la nubosidad afecta el pasto mojado sólo a través de la lluvia y los aspersores. Estamos diciendo que las flechas capturan las dependencias relevantes.

En pequeños ejemplos, esto parece obvio. En los sistemas reales, es más difícil. ¿Quién decide la gráfica?

A veces los expertos lo definen. A veces se aprende de los datos. A menudo es una mezcla de ambos. Los gráficos diseñados por expertos pueden ser interpretables pero sesgados. Los gráficos aprendidos pueden basarse en datos pero ser inestables, especialmente cuando las variables están correlacionadas, los datos son limitados o la dirección causal es ambigua.

Ésta es una de las razones por las que las redes bayesianas requieren más disciplina de modelado que un alumno supervisado estándar. Hay que pensar detenidamente en las variables, las flechas, las causas faltantes, los errores de medición y los supuestos de independencia condicional.

Cómo se estiman las probabilidades

Hasta ahora, hemos tratado las probabilidades en la red bayesiana como si simplemente estuvieran escritas. En el ejemplo del pasto mojado, usamos valores como P(Lluvia) = 0,2 y P(WetGrass | Rain, Sprinkler) = 0,99. Esos números tienen que venir de alguna parte.

Generalmente hay dos problemas de aprendizaje en una red bayesiana.

El aprendizaje de estructuras decide qué variables están conectadas. El aprendizaje de parámetros estima las probabilidades o distribuciones adjuntas a cada nodo.

La estructura es el gráfico. Los parámetros son los modelos de probabilidad locales. Una vez elegido el gráfico, el aprendizaje de parámetros implica estimar cada término local:

Ésta es una de las ventajas prácticas de las redes bayesianas: un gran problema de estimación se convierte en un conjunto de problemas de estimación locales más pequeños.

Variables categóricas

Para las variables categóricas, el aprendizaje de parámetros generalmente significa completar una tabla de probabilidad condicional.

Por ejemplo, hierba mojada | Rain, Sprinkler necesita una fila para cada configuración principal:

Si tenemos datos etiquetados, estimamos cada fila contando. Entre todos los ejemplos donde Lluvia = verdadero y Aspersor = falso, cuente con qué frecuencia se mojó el césped:

P(WetGrass = verdadero | Lluvia = verdadero, Aspersor = falso) = contar(WetGrass = verdadero, Lluvia = verdadero, Aspersor = falso) / contar(Lluvia = verdadero, Aspersor = falso)

Si vimos 90 casos de pasto mojado de 100 ejemplos con lluvia y sin aspersores, la estimación es 0,9.

La intuición es simple: para cada configuración principal, tome la porción coincidente de los datos y estime la distribución secundaria dentro de esa porción. En pitón:

de colecciones import defaultdict def estimación_binary_cpt(filas, hijo, padres): recuentos = defaultdict(lambda: {"total": 0, "verdadero": 0}) para fila en filas: valores_padres = tupla(fila[padre] para padre en padres) recuentos[valores_padres]["total"] += 1 si fila[hijo] es Verdadero: recuentos[valores_padres]["verdadero"] += 1 cpt = {} para parent_values, valores en counts.items(): cpt[parent_values] = valores["true"] / valores["total"] devuelve cpt

Para un niño categórico con más de dos valores, se aplica la misma idea. Cuente cada categoría y normalícela para que cada fila sume uno.

Suavizado

El conteo simple puede fallar cuando los datos son escasos. Si una configuración principal aparece una vez, la estimación es ruidosa. Si nunca aparece, la estimación no está definida.

Una solución común es suavizar. Para una variable binaria, en lugar de:

contar(verdadero) / contar(total)

usar:

(recuento(verdadero) + α) / (recuento(total) + 2α)

Cuando α = 1, este es el suavizado de Laplace. Evita probabilidades exactas de cero o uno en muestras pequeñas.

Esto es importante porque las tablas de probabilidad condicional crecen rápidamente. Si un nodo categórico tiene k valores posibles y sus padres tienen m configuraciones posibles, la tabla tiene aproximadamente m(k − 1) parámetros libres. A medida que crece el número de padres, los datos se vuelven escasos. Ésta es una de las razones por las que las redes bayesianas suelen preferir conjuntos de padres dispersos.

Variables continuas

Las variables continuas necesitan un modelo de densidad local en lugar de una tabla. Para un nodo continuo sin padres, una elección simple es un gaussiano:

El aprendizaje de parámetros significa estimar μ y σ² a partir de datos. Las estimaciones de máxima verosimilitud son la media y la varianza muestrales.

Si un niño continuo tiene padres categóricos, podemos estimar un gaussiano separado para cada estado padre. Por ejemplo:

Temperatura | Gripe = verdadero ~ Normal(μ₁, σ₁²) Temperatura | Gripe = falso ~ Normal(μ₀, σ₀²)

Entonces, el modelo aprende una distribución de temperatura para los casos de gripe y otra para los casos que no son de gripe.

Si tanto el niño como los padres son continuos, una elección común es un modelo gaussiano lineal. Por ejemplo:

podría modelarse como:

Presión arterial = β₀ + β₁ Edad + β₂ IMC + ε

dónde:

La distribución condicional local es:

Presión arterial | Edad, IMC ~ Normal(β₀ + β₁ Edad + β₂ IMC, σ²)

La estimación de parámetros ahora parece una regresión lineal ordinaria. La red bayesiana todavía factoriza una distribución conjunta, pero un factor local es un modelo de regresión.

Cada nodo tiene un modelo predictivo local condicionado a sus padres. Para los niños categóricos, ese modelo local suele ser una tabla de probabilidad condicional. Para niños continuos, puede ser un modelo gaussiano, gaussiano lineal u otro modelo de densidad condicional.

datos faltantes

Si se observan todas las variables en los datos de entrenamiento, el aprendizaje de parámetros consiste principalmente en contar, promediar o ajustar regresiones locales. Si las variables están ocultas o faltan, a menudo utilizamos la maximización de expectativas o EM. La idea aproximada es:

Comience con conjeturas de parámetros iniciales. Utilice el modelo actual para inferir valores probables de las variables faltantes. Vuelva a estimar los parámetros utilizando esos valores inferidos. Repita hasta que los parámetros se estabilicen.

Esto es útil cuando algunas variables importantes están latentes, se observan parcialmente o se registran de manera inconsistente. Por ejemplo, podemos observar síntomas y pruebas, pero no el verdadero estado de la enfermedad de cada paciente.

El gráfico no elimina la necesidad de realizar una estimación estadística. Hace que la estimación sea modular.

Las tres estructuras básicas.

La mayor parte de la intuición de las redes bayesianas proviene de tres pequeños patrones.

1. cadena

Una cadena tiene la forma:

Por ejemplo, una enfermedad puede afectar un biomarcador y el biomarcador puede afectar el resultado de una prueba. Aquí, A influye en C a través de B. Si conocemos B, entonces A puede que ya no nos diga nada más sobre C:

Una vez que se conoce la variable intermedia, la variable ascendente se separa de la variable descendente.

2. tenedor

Un tenedor tiene la forma:

y:

Por ejemplo, el clima cálido puede aumentar tanto las ventas de helados como las quemaduras solares.

Las ventas de helados y las quemaduras solares pueden estar correlacionadas, pero la relación se explica por una causa compartida. Si condicionamos el clima, la asociación puede desaparecer:

Este es un patrón de causa común.

3. Colisionador

Un colisionador tiene la forma:

Por ejemplo, la lluvia y los aspersores pueden provocar que el césped se moje. Éste se comporta de manera diferente. Si no observamos C, A y B pueden ser independientes. Una vez que observamos C, se vuelven dependientes.

La hierba mojada conecta la lluvia y los aspersores. La fiebre conecta posibles enfermedades. Una decisión de contratación conecta talento y suerte. Un atasco conecta accidentes y obras viales.

Éste es el patrón de explicación.

El colisionador es también la estructura que más a menudo hace tropezar a la gente. El condicionamiento a un efecto común puede crear dependencia donde antes no existía.

Ésa es una fuente de muchos problemas de sesgo de selección.

Si sólo nos fijamos en las empresas emergentes exitosas, la calidad de los fundadores y la suerte en el mercado pueden parecer relacionadas negativamente. Una empresa puede entrar en el conjunto “exitoso” mediante una ejecución excepcional, una sincronización excepcional del mercado o una combinación de ambas. Condicionar el éxito puede hacer que las causas compitan.

El gráfico nos da una manera de ver eso.

La inferencia es la propagación de creencias sobre la estructura.

Una vez que tenemos una gráfica y tablas de probabilidad locales, la inferencia significa responder preguntas como:

P(Lluvia | Hierba mojada) P(Predeterminado | Pagos perdidos, Pérdida de empleo) P(Enfermedad | Síntomas, Resultado de la prueba)

La mecánica puede volverse técnica: eliminación de variables, propagación de creencias, árboles de unión, métodos de muestreo. Pero la intuición es sencilla.

La evidencia entra en el gráfico. Las creencias se actualizan localmente. Esas actualizaciones se propagan a través de variables conectadas, restringidas por las independencias condicionales codificadas en la estructura.

En un gráfico en forma de árbol, esto puede ser eficiente y exacto. En gráficos densos o sinuosos, la inferencia puede resultar costosa. Ése es otro límite práctico. Las redes bayesianas son elegantes, pero la inferencia exacta no siempre es barata.

Aún así, el beneficio conceptual permanece. El gráfico hace que el razonamiento sea inspeccionable. A menudo puedes explicar por qué se movió una probabilidad:

Se observa pasto mojado. La probabilidad de lluvia aumentó. La probabilidad de aspersores aumentó. Luego la lluvia confirmó. La probabilidad de rociadores se explica parcialmente.

Ese tipo de explicación es mucho más difícil de obtener a partir de un clasificador discriminativo puro.

¿Qué es un árbol de unión?

La inferencia exacta en una red bayesiana puede resultar difícil cuando el gráfico tiene muchas variables que interactúan.

Para una cadena simple, la evidencia se puede pasar a lo largo del gráfico de manera eficiente. En redes más ricas, el gráfico puede contener bucles una vez que ignoramos la dirección de las flechas. Esos bucles dificultan la transmisión de mensajes locales, porque la información puede circular y contarse más de una vez.

Un árbol de unión es una forma de reorganizar el gráfico para que la inferencia exacta sea manejable.

La idea es:

Tome el modelo gráfico original, agrupe variables estrechamente conectadas en grupos y organice esos grupos en un árbol. Cada grupo se llama camarilla. En lugar de pasar mensajes entre variables individuales, el algoritmo pasa mensajes entre grupos de variables.

Supongamos que tenemos cuatro variables:

y el modelo tiene estas dependencias:

A → B A → C B → D C → D

En palabras, A influye en B y C, y luego B y C influyen en D. La red bayesiana se factoriza como:

P(A, B, C, D) = P(A) P(B | A) P(C | A) P(D | B, C)

Esta es una red pequeña, pero ya tiene un bucle si ignoramos la dirección de la flecha:

A − B − D − C − A

Ese bucle significa que la inferencia exacta es menos sencilla que en una cadena simple. Por ejemplo, supongamos que observamos:

y quiero calcular:

La evidencia sobre D debe fluir hacia atrás a través de B y C, luego combinarse en A. Los dos caminos están relacionados porque B y C comparten el mismo padre A.

Un árbol de unión maneja esto agrupando variables en camarillas. Para este modelo, un conjunto útil de camarillas es:

y:

El árbol de unión es:

La superposición entre las dos camarillas es:

Esa superposición se llama separador.

La idea ahora es más limpia. Un grupo maneja la parte del modelo que involucra a A, B y C. El otro grupo maneja la parte que involucra a B, C y D. Se comunican a través de las variables que comparten: B y C.

Puedes pensar en las dos tablas de camarilla como:

y:

La evidencia D = verdadera es absorbida por la segunda camarilla, porque D vive allí. La segunda camarilla luego envía un mensaje a la primera camarilla.

Un mensaje es sólo una tabla resumen. Dice:

Teniendo en cuenta todo lo que sé de mi lado del gráfico, esto es lo que quiero decir sobre las variables que compartimos.

La camarilla de la derecha no puede enviar su tabla completa a la camarilla de la izquierda, porque la camarilla de la izquierda no contiene D. El único lenguaje compartido entre las dos camarillas es B y C.

Entonces, la segunda camarilla comprime todo lo que sabe en una tabla que abarca solo B y C:

m₂→₁(B, C) = suma sobre D de ψ₂(B, C, D)

Si se ha observado D, digamos D = verdadero, entonces se ignoran los valores incompatibles de D. En ese caso el mensaje es esencialmente:

m₂→₁(B, C) = ψ₂(B, C, D = verdadero)

El mensaje podría verse así:

Esta tabla dice que, dado D = verdadero, la camarilla de la derecha piensa que la combinación B = verdadero, C = verdadero es la más plausible.

Luego, la camarilla de izquierda combina ese mensaje con su propia tabla local sobre A, B, C.

Supongamos que la tabla de la camarilla izquierda es:

El mensaje se utiliza multiplicando cada fila por el valor del mensaje para el par B, C de esa fila:

Ahora sume las puntuaciones combinadas para cada valor de A.

Para A = falso:

0,020 + 0,060 + 0,060 + 0,090 = 0,230

Para A = verdadero:

0,005 + 0,040 + 0,090 + 0,720 = 0,855

Entonces la creencia no normalizada es:

Ahora normaliza:

P(A = verdadero | D = verdadero) = 0,855 / (0,855 + 0,230) = 0,788 P(A = falso | D = verdadero) = 0,230 / (0,855 + 0,230) = 0,212

Entonces, después de recibir el mensaje de la camarilla derecha, la camarilla izquierda concluye:

Ésta es la idea del árbol de unión en miniatura. La evidencia sobre D se convierte en un mensaje sobre B y C. La camarilla izquierda combina ese mensaje con su propia relación local entre A, B y C. Luego suma B y C para obtener la creencia sobre A.

Figura 3: Un árbol de unión convierte una red bayesiana descabellada en un árbol de camarillas. La evidencia ingresa en D, se comprime en mensajes sobre variables compartidas y pasa a través del árbol para que el modelo pueda calcular creencias sobre A sin contabilizar dos veces la evidencia. 📖 Fuente: imagen del autor vía GPT5.5.

El método es exacto, pero tiene un coste. Cada camarilla necesita una tabla con todas sus variables. Si A, B, C y D son binarios, cada camarilla de tres variables tiene 2³ = 8 estados, lo cual es minúsculo. Si un árbol de unión crea una camarilla con 20 variables binarias, esa camarilla tiene 2²⁰= 1.048.576 estados. Ésa es la compensación. Los árboles de unión hacen que la inferencia exacta sea sistemática, pero sólo son prácticos cuando el grupo más grande no es demasiado grande. El tamaño de la camarilla más grande está relacionado con una propiedad del gráfico llamada ancho de árbol. Los gráficos con un ancho de árbol bajo se pueden manejar de manera eficiente. Los gráficos de gran ancho de árbol pueden hacer que la inferencia exacta sea inviable.

La lección práctica es que es más fácil razonar con las redes bayesianas cuando el gráfico es disperso y las dependencias son locales. El gráfico no es sólo un objeto explicativo. Afecta si la inferencia es manejable computacionalmente.

Generativo y discriminativo son diferentes actitudes de modelado.

Esta es una forma útil de colocar las redes bayesianas entre otros modelos de ML.

Una red bayesiana suele ser un modelo generativo. Intenta modelar cómo surgen conjuntamente las variables de un dominio. Una regresión logística o SVM suele ser discriminativa. Modela el límite o la relación condicional necesaria para la predicción.

Encuadre discriminatorio:

Encuadre generativo:

o más generalmente:

Los modelos generativos suelen ser más complicados porque modelan más del mundo. Esa estructura adicional puede ser útil cuando desea manejar datos faltantes, razonar hacia atrás desde los efectos hasta las causas, simular escenarios o incorporar conocimiento del dominio.

Los modelos discriminativos a menudo se ajustan bien a problemas de predicción limitados porque gastan su capacidad directamente en la decisión que le interesa. La pregunta clave es: ¿estás intentando predecir una etiqueta o representar un sistema?

Para muchas tareas de aprendizaje supervisado, comience con el modelo supervisado. Para la incertidumbre estructurada, las redes bayesianas se vuelven más interesantes.

Un pequeño ejemplo médico

Supongamos que modelamos la gripe, la fiebre, la tos y la fatiga. La suposición es simple: la gripe puede provocar fiebre, tos y fatiga.

La factorización es:

P(gripe, fiebre, tos, fatiga) = P(gripe) P(fiebre | gripe) P(tos | gripe) P(fatiga | gripe)

Este es un modelo de diagnóstico simple. Si observamos fiebre y tos, la gripe se vuelve más probable:

Si además observamos una prueba de gripe negativa, la probabilidad de gripe es menos probable. Si la prueba es ruidosa, es posible que no baje a cero. Si también observamos fatiga, ésta puede volver a aumentar.

El mismo modelo puede responder diferentes preguntas dependiendo de la evidencia disponible. Ese es el punto importante.

Un clasificador normalmente necesitaría un vector de características fijo compuesto por fiebre, tos, fatiga, resultado de la prueba y cualquier otro predictor disponible. Esto puede ser más sencillo y preciso si todas las funciones están presentes y la única cuestión es la predicción de la gripe. La red bayesiana ofrece un objeto más estructurado. Puede representar la confiabilidad de las pruebas, los síntomas faltantes, las causas compartidas y los diagnósticos competitivos.

Ahora amplíe el ejemplo. La gripe puede causar fiebre y tos. El COVID también puede provocar fiebre y tos.

La fiebre y la tos ahora pueden explicarse por diferentes enfermedades. La observación de los síntomas aumenta la creencia en ambos. Confirmar un diagnóstico cambia la probabilidad del otro. Este es exactamente el tipo de razonamiento para el que se construyeron las redes bayesianas.

Donde entran las redes de Markov

Las redes bayesianas utilizan bordes dirigidos. Las flechas importan. Apoyan una historia natural de dependencia condicional local y, a veces, una interpretación causal si el gráfico se construyó de esa manera.

Algunos dominios tienen relaciones en las que la dirección es complicada. Considere la posibilidad de eliminar el ruido de la imagen. Los píxeles cercanos tienden a tener etiquetas similares. Si un píxel está en primer plano, es más probable que sus vecinos también estén en primer plano. ¿Qué píxel causa cuál? Por lo general, ninguno de ellos. La relación es simétrica. Las etiquetas vecinas son mutuamente compatibles.

Aquí es donde las redes de Markov, también llamadas campos aleatorios de Markov, se vuelven naturales.

Una red de Markov es un modelo gráfico no dirigido. En lugar de flechas y tablas de probabilidad condicional, utiliza funciones de compatibilidad sobre grupos de variables conectados.

Para una cadena simple de tres variables A, B y C, donde A está conectado a B y B está conectado a C, podríamos escribir:

P(A, B, C) = (1 / Z) φ₁(A, B) φ₂(B, C)

Las funciones φ son potenciales. No son probabilidades en sí mismas. Son puntuaciones que dicen cuán compatibles son determinadas tareas. Por ejemplo:

Esto dice que A y B prefieren tener el mismo valor. El término Z es la función de partición. Normaliza todas las puntuaciones de compatibilidad no normalizadas en una distribución de probabilidad adecuada:

Z = suma de A, B, C de φ₁(A, B) φ₂(B, C)

Esa normalización suele ser costosa. En grandes redes de Markov, calcular Z puede ser una de las principales dificultades.

Generan redes bayesianas; Las redes de Markov limitan

Una intuición útil es:

Una red bayesiana describe cómo se generan las variables a partir de sus padres. Una red de Markov describe qué configuraciones de variables son compatibles.

Para una red bayesiana, un ejemplo médico parece natural: la enfermedad influye en los síntomas. Para una red de Markov, un ejemplo de imagen parece natural: las etiquetas de píxeles vecinos prefieren estar de acuerdo.

La red bayesiana parece una historia causal o de diagnóstico. La red de Markov se siente como un sistema de restricciones suaves.

Esta distinción no es absoluta. Las redes bayesianas pueden representar una estructura no causal y las redes de Markov se pueden utilizar en muchos entornos más allá de las limitaciones espaciales. Pero como primer modelo mental, resulta útil.

Utilice una red bayesiana cuando la dirección sea significativa. La nubosidad afecta la lluvia. La lluvia afecta la hierba mojada. La enfermedad afecta los síntomas. El estrés económico afecta los pagos atrasados.

Utilice una red de Markov cuando la compatibilidad sea más natural que la dirección. Los píxeles vecinos normalmente deberían coincidir. Las palabras adyacentes deben tener etiquetas compatibles. Las ubicaciones cercanas deberían tener estados similares.

Los campos aleatorios condicionales se encuentran en esta familia. Modelos CRF:

donde Y suele ser una salida estructurada, como una secuencia de etiquetas, y X es la entrada observada. Se hicieron populares para tareas como el reconocimiento de entidades con nombre antes de que los modelos de secuencia neuronal ocuparan gran parte de ese territorio.

El punto conceptual sigue siendo útil: a veces la predicción está estructurada y las etiquetas deben modelarse juntas.

Donde encaja la lógica de Markov

Hay un paso más útil en esta familia: la lógica de Markov. Una red de Markov nos proporciona restricciones suaves de compatibilidad entre variables. La lógica de Markov añade un lenguaje para escribir esas restricciones como reglas.

Por ejemplo:

Amigos(x, y) → Preferencias similares(x, y)

o:

Trabaja en (x, c) Y ubicado en (c, ciudad) → Vive cerca de (x, ciudad)

En la lógica ordinaria, las reglas son frágiles. Una regla es verdadera o falsa. Si se rompe la regla, el mundo deja de ser válido.

Los dominios reales rara vez se comportan así. Los amigos suelen compartir preferencias, pero no siempre. La gente suele vivir cerca del trabajo, pero no siempre. Los clientes que se quejan repetidamente tienen más probabilidades de abandonar, pero no siempre. Estos son patrones útiles, no leyes.

Las redes lógicas de Markov atribuyen pesos a las reglas. Una regla de alto peso es una preferencia fuerte. Una regla de bajo peso es una preferencia débil. Los mundos que satisfacen muchas reglas de alto peso reciben una mayor probabilidad. Mundos que los violen siguen siendo posibles, pero menos probables.

La forma habitual es:

P(X = x) = (1 / Z) exp(suma sobre i de wᵢ nᵢ(x))

dónde:

wᵢ es el peso de la regla i nᵢ(x) es el número de veces que se cumple la regla i en el mundo x Z es la función de partición

La intuición es simple: los mundos que satisfacen muchas reglas de alto peso tienen mayor probabilidad.

Supongamos que escribimos:

w: Fuma(x) Y Amigos(x, y) → Fuma(y)

Esto no significa que los amigos deban compartir el comportamiento de fumar. Dice que, en igualdad de condiciones, los mundos en los que los amigos tienen un comportamiento similar al de fumar deberían ser más probables que los mundos en los que esa tendencia se viola repetidamente.

Ésa es la idea de la red de Markov expresada mediante la lógica. Las reglas definen las restricciones suaves. Los pesos indican cuán importante es cada restricción. La distribución de probabilidad resultante es una red de Markov basada en los objetos y relaciones del dominio.

Esto resulta útil cuando el dominio tiene una estructura relacional: personas, organizaciones, productos, documentos, citas, transacciones, cuentas, dispositivos, eventos. La misma regla puede aplicarse repetidamente en muchas entidades.

Por ejemplo:

Menciones (Documento, Empresa) Y Adquiere (Empresa, Destino) → Relevante (Documento, Destino)

Ese tipo de patrón es complicado de expresar como un vector de características planas. La lógica de Markov le brinda una manera de escribir el patrón relacional directamente, manteniendo la incertidumbre.

La progresión es natural:

Las redes bayesianas representan dependencia dirigida. Las redes de Markov representan compatibilidad no dirigida. Las redes lógicas de Markov representan reglas lógicas ponderadas como una estructura probabilística no dirigida.

Este es el puente entre los modelos gráficos y la lógica probabilística y la representación del conocimiento.

Por qué esto todavía importa

Es fácil tratar las redes bayesianas y las redes de Markov como maquinaria más antigua anterior a la era neuronal actual. En algunos entornos de producción, ese es un instinto justo. Si tiene un conjunto de datos enorme y etiquetado y una tarea de predicción limitada, estos métodos rara vez son la primera parada.

Las ideas detrás de ellos siguen siendo centrales. Nos brindan una forma disciplinada de pensar sobre la incertidumbre, la estructura, la evidencia, la independencia, la explicación y el razonamiento relacional. Nos hacen hacernos preguntas que el simple aprendizaje supervisado puede ocultar:

¿Cuál es el objetivo? ¿Cuáles son las causas? ¿Cuáles son los efectos? ¿Qué variables se vuelven irrelevantes después de conocer otras? ¿Dónde puede entrar la evidencia al sistema? ¿Estamos prediciendo una cosa o razonando sobre muchas cosas? ¿Las relaciones son direccionales, simétricas o similares a reglas?

Estas preguntas son importantes incluso cuando el modelo final no es una red bayesiana, una red de Markov o una red lógica de Markov.

En el ML aplicado, es fácil aplanar el mundo en una matriz de características y dejar que el modelo lo ordene. A veces esa es exactamente la elección de ingeniería correcta. Todavía viene con suposiciones. Esas suposiciones pasan al proceso de datos, al conjunto de características, al proceso de muestreo y a la capa de interpretación.

Los modelos gráficos obligan a que los supuestos vuelvan a ser visibles. Ése es su valor duradero.

La conclusión práctica

Utilice la regresión logística cuando desee un clasificador simple e interpretable.

Utilice una SVM cuando desee un límite de decisión sólido, especialmente en entornos de tamaño mediano y dimensiones altas.

Utilice árboles potenciados o redes neuronales cuando el objetivo principal sea el rendimiento predictivo y tenga suficientes datos.

Utilice una red bayesiana cuando necesite razonar sobre un sistema estructurado incierto, especialmente cuando la evidencia puede llegar a diferentes lugares, el conocimiento del dominio es importante, los datos faltantes son comunes o la explicación es parte del trabajo.

Utilice una red de Markov cuando las relaciones tengan menos que ver con la dirección y más con la compatibilidad, el acuerdo o las restricciones suaves entre variables vecinas.

Utilice la lógica de Markov cuando el dominio tenga objetos, relaciones y reglas imperfectas. Le brinda una manera de expresar el conocimiento relacional sin pretender que cada regla sea absoluta.

La distinción central es:

Un clasificador se construye alrededor de una pregunta de predicción. Un modelo gráfico se construye alrededor de un sistema incierto. La lógica de Markov amplía ese sistema con reglas ponderadas sobre objetos y relaciones.

Una vez que esa distinción queda clara, las redes bayesianas, las redes de Markov y la lógica de Markov se vuelven más fáciles de ubicar. Las redes bayesianas son útiles cuando la dirección conlleva significado. Las redes de Markov son útiles cuando la compatibilidad es la mejor representación. La lógica de Markov es útil cuando esas compatibilidades son más fáciles de escribir como reglas imperfectas sobre objetos y relaciones.

Descargo de responsabilidad: Los puntos de vista y opiniones expresados ​​en este artículo son míos y no representan los de mi empleador ni los de ninguna organización afiliada. El contenido se basa en la experiencia y la reflexión personal y no debe tomarse como consejo profesional o académico.

📚Referencias

Perla, J. (1988). Razonamiento probabilístico en sistemas inteligentes: redes de inferencia plausible. Morgan Kaufman. Fundamentos clásicos de las redes bayesianas, la propagación de creencias y el razonamiento probabilístico en condiciones de incertidumbre. Koller, D. y Friedman, N. (2009). Modelos gráficos probabilísticos: principios y técnicas. Prensa del MIT. El libro de texto moderno estándar sobre redes bayesianas, redes de Markov, inferencia, aprendizaje y modelado probabilístico estructurado. Pueblo, C. (2004). Procesamiento de información visual basado en ontologías. Tesis doctoral, Universidad de Cambridge. Un ejemplo aplicado útil de combinación de evidencia visual, ontologías y razonamiento probabilístico para la comprensión de la escena. Pueblo, C. (2004). "Redes bayesianas basadas en ontologías para la comprensión dinámica de escenas". Taller CVPR sobre Detección y Reconocimiento de Eventos en Video. Un ejemplo compacto del mundo real de redes bayesianas aplicadas al reconocimiento dinámico de escenas y eventos. Richardson, M. y Domingos, P. (2006). “Redes lógicas de Markov”. Aprendizaje automático. El artículo central que presenta la lógica de Markov: lógica ponderada de primer orden basada en redes de Markov. Koller, D., Friedman, N., Getoor, L. y Taskar, B. (2007). “Modelos gráficos en pocas palabras”. Una descripción general concisa de los modelos gráficos y su papel en el aprendizaje relacional estadístico.