Redes Bayesianas para la generación de datos sintéticos

Las redes Bayesianas se basan en las reglas de probabilidad, y mas concretamente en el Teoremas de Bayes:

Este teorema nos permite crear estructuras de redes que codifican las relaciones que hay entre las diferentes variables (maravillosas las matemáticas). Esto se representa con nodos (que simbolizan a las variables) y flechas (que simbolizan las relaciones entre las variables). Los nodos desde los que se originan las flechas se consideran los padres, y los nodos a los que apuntan sus hijos.

En estas estructuras, la probabilidad de un nodo la describimos como la probabilidad de esa variable dadas las probabilidades de sus padres únicamente. Por ejemplo, en la imagen, la probabilidad de «suelo mojado» viene dada como P(M|L,A), es decir, condicional de «Lluvia» y «Aspersores», pero por ejemplo la probabilidad del nodo «Escurrirse» es P(E|M), es decir, de su único nodo padre.

La manera correcta de definir esto es que cada variable es condicionalmente independiente de sus no-descendientes dados los padres. Esto lo formalizamos con de la siguiente manera:
Texto

El contenido generado por IA puede ser incorrecto.

Si dos variables X, Y son condicionalmente independientes dado Z, entonces:

P(X, Y | Z) = P(X | Z) P(Y |Z)

El objetivo con este tipo de estructuras es inferir las probabilidades de ciertas variables o eventos, es decir, si tenemos datos que por ejemplo describen P(X,Y,Z), poder inferir que es P(Z).

La estructura mas sencilla de este tipo de redes es jerárquica simple, con nodos que dependen unicamente de un padre anterior, pero puede convertirse en una jerarquía compleja con múltiples padres o relaciones entre ellos, incluso las relaciones entre nodos pueden ser estáticas o dinámicas dependiendo de una variable como el tiempo, por lo que el modelo puede complicarse mucho.

Estos modelos pueden usarse para describir una serie de datos que hayamos recogido, pero en este caso nos centramos en el uso de estos modelos para la generación de datos sintéticos, en este caso seguimos una serie de pasos:

  • Definimos la estructura de la red y su complejidad: Poniendo los nodos, las relaciones entre ellos y fijando estas relaciones como estáticas o dinámicas
  • Se definen las probabilidades de cada relación, que podemos fijar como discretas o continuas
  •  Comienza la generación de datos: En la que primero se simulan datos de los nodos sin padres, y se continua simulando datos de los siguientes nodos que están condicionados por estos padres, continuando el proceso hasta llegar a todos los nodos.

Si hemos creado una estructura correcta, podemos repetir estos pasos de tal manera que generaremos datos diferentes con las relaciones que hemos establecido.

Llevamos ya muchos modelos interesantes y nos queda alguno mas por mostraros para la generación de datos sintéticos, ¡Estad antentos!