I NFORME T ECNICO CIFASIS- Centro Internacional Franco Argentino de Ciencias de la Información y de Sistemas. CCT –Rosario –CONICET 27 de Febrero 210bis S2000EZP Rosario
EDES BAYESIANAS R EDES Leonardo Ornella, Pilar Bulacio, Elizabeth Tapia. Actualizado Julio 2011 2011
MOTIVACIÓN Muchos de los datos del mundo real ( real-world data) son heterogéneos y ricamente interconectados. Ejemplos de esto son Internet, un hipertexto, información de un ecosistema y redes sociales. En particular, la interpretación de un sistema agroecológico como un conjunto de sistemas y/o variables que actúan en forma acoplada (y generalmente no lineal) resulta de particular interespara el desarrollo sostenible. Al mismo tiempo, la mayoría de los métodos de aprendizaje estadísticos utilizan representaciones lineales (“ flat ”) de los datos; forzando al analista a convertir los mismos en formas que pierden mucha de la estructura subyacente. Como alternativa se plantea lo que se conoce como redes bayesianas: un modelo probabilístico multivariado que permite explicitar las relaciones causales entre las distintas variables mediante grafos. El objetivo del presente trabajo es realizar una breve introducción a las redes bayesianas. Las mismas pueden resultar una herramienta de suma utilidad para investigadores del área agropecuaria no familiarizados con el área de aprendizaje supervisado. En la primera parte se presenta la definición de las mismas junto con alguna de sus propiedades más relevantes. También se exponen dos ejemplos que intentan exhibir las ventajas (y dificultades) de las redes para analizar relaciones causales. En la segunda parte se realiza una breve sinopsis de algunos programas o entornos de minería de datos que poseen implementaciones de redes bayesianas.
DEFINICIÓN Una red bayesiana o BN (Bayes Network) es un grafo dirigido acíclico que codifica una distribución de probabilidad conjunta de un grupo de variables aleatorias (Friedman et al., 1997; Russell and Norvig, 2002). Si en la estructura de grafo se encuentra un arco dirigido (o arco) desde el nodo A al nodo B, se dice que A es padre de B o que B es hijo de A 1. Cada 1Los arcos indican restricciones sobre la certeza de los nodos que unen: p (A / B) cuantifica la certeza de B ® A.
arco indica una relación causal y cada variable x i es independiente de su no-descendientes dado sus padres (Condición de Markov). Además de la topología del grafo, la información relevante de los datos, para cada nodo, se encuentra indicada en tablas de probabilidad condicional o CPTs (conditional probability tables), que relacionan cada variable con sus padres. Por ejemplo, de la tabla 1 se deduce que la probabilidad de que E sea cierta, dado que B y D son verdaderas: P(E=V/B=V D = V) = 0.10. Es importante resaltar que el grafo es dirigido y acíclico, i.e., que no se encuentra dentro de la red ningún ciclo dirigido 2. Esta estructura define una regla única para expandir la distribución conjunta en términos de probabilidades condicionales más simples (regla de la cadena).
Por ejemplo, una distribución conjunta como la presentada en la figura 1 puede ser expresada como: )))) Se puede ver que la distribución conjunta como el producto de las probabilidades
condicionales y siguiendo la semántica de la red (Figura 1); en el caso de los nodos A y D, que no tienen padres, solo se indican las probabilidades de ocurrencia. Finalmente, en la tabla 1 se muestra un ejemplo de tabla de probabilidad condicional, la variable analizada corresponde al nodo E y los padres a los nodos B y D.
F IGURA 1. R ED B AYESIANA PARA UN CONJUNTO DE 5 VARIABLES. 2 Una regla práctica para interpretar un grafo acíclico dirigido consiste en que si se parte de un nodo cualquiera del grafo y se sigue el sentido de los arcos no se puede regresar por ningún camino al nodo original.
B F V F V
D F F V V
P(E+) 0.50 0.90 0.95 0.10
P(E-) 0.50 0.10 0.05 0.90
T ABLA 1- T ABLA DE PROBABILIDAD CONDICIONAL QUE RELACIONA LA VARIABLE E DE LA FIGURA 1 CON LOS NODOS PADRES *Para facilitar la presentación, se analiza un ejemplo donde las variables (E, B y D) son dicotómicas.
CONDICIÓN DE MARKOV Una propiedad muy importante de las redes bayesianas es lo que se define como condición o propiedad de Markov (ver figura 2 como ejemplo): Dado sus padres (P 1, P2), un nodo (X) es condicionalmente independiente de sus no-descendientes (non-descendants): ND1, ND2.
F IGURA 2. C ONDICIÓN DE MARKOV PARA EL NODO X. Es importante resaltar la distinción entre modelos causales y modelos diagnósticos. Russel y Norvig (2002, pag. 498) indican que si uno se acota a establecer una red basada en un modelo causal, se requiere establecer menor número de arcos entre los nodos (modelo más simple y más fácil para trabajar). Los autores añaden que en el dominio de la medicina, por ejemplo, los expertos prefieren emitir juicios de probabilidad para reglas causales antes que juicios para reglas de diagnóstico.
EJEMPLOS DE GRAFOS CON ESTRUCTURA DE LA RED CONOCIDA Para profundizar un poco más en el estudio de redes bayesianas en esta sección se plantearán dos ejemplos de redes bayesianas con estructura (topología) del grafo ya conocida, la idea es presentar algunas de las características más representativas de las mismas y en particular mostrar algunos problemas con las que tienen que lidiar los algoritmos reportados en la bibliografía.
EJEMPLO 1: PROBLEMA DEL CLIMA. Este problema planteado en este caso involucra el análisis de 4 variables (Figura 3): Pasto húmedo ( WetGrass), lluvia (Rain), Tiempo Nuboso ( Cloudly ) y riego por Aspersor (Sprinkler ). El objetivo principal del planteo es tratar de trasmitir el concepto de red causal. Se puede interpretar del grafo de la derecha que el evento "el pasto está mojado" (W = true) tiene dos posibles causas: o bien los aspersores de agua está en (S = true) o está lloviendo (R = true). La fuerza de esta relación se muestra en la tabla. Por ejemplo, vemos que Pr (W = true | S = true, R = false) = 0,9 (segunda fila), y por lo tanto, Pr (W = false | S = true, R = false) = 1 - 0.9 = 0.1, ya que cada fila deben sumar a uno. Dado que el nodo Cloudly no tiene padres, su CPT especifica la probabilidad de que este nublado (en este
caso, 0,5). Conviene pensar en C como la representación de la temporada: si se trata de una temporada de nube es más probable que llueva y es menos probable que el riego esté encendido.
F IGURA 3. D OS ALTERNATIVAS DE RED BAYESIANA PARA UN PROBLEMA CON 4 VARIABLES. De la misma manera, la ausencia de un arco de Nuboso a PastoHúmedo implica que el valor de la variable Nuboso (Tiempo) no tiene influencia directa sobre el valor de PastoMojado, solo una influencia indirecta a través de Aspersor y Lluvia. Mas
formalmente, PastoMojado, es condicionalmente independiente de ( Tiempo) Nuboso, dado Aspersor y Lluvia. La red de la izquierda fue construida utilizando algoritmos de agrupamiento (clustering) también conocidos como join tree algorithms. La idea básica es reunir varios nodos en un grupo de tal manera que la red resultante es un poliárbol, la ventaja es que en tiempo de procesamiento de estos árboles se reduce a O(n). Por ejemplo, en la red de la izquierda, los dos nodos booleanos ( Aspersor y Lluvia) son reemplazados por un meganodo que puede asumir cuatro valores posible: TT, T F, FT, and FF. El meganodo tiene solo un padre, de tal manera que solo hay dos casos condicionantes.
EJEMPLO 2: PROBLEMA DE LA ALARMA Y LOS TERREMOTOS. En este segundo caso también se tiene por objetivo trasmitir el concepto de red causal y simultáneamente plantear algunos problemas concretos asociados al análisis de los datos.
Una casa tiene una alarma que se activa ante intento de robo ( Burglary ), pero puede activarse ante temblores ( Earthquake) ya que el escenario ocurre en Los Ángeles. Dos vecinos, Juan y María se han ofrecido a llamar al dueño si escuchan la alarma. Juan a veces confunde el sonido de la alarma con otros sonidos, pero llama de todos modos y María a veces no la escucha por otras fuentes de sonido que tiene encendida (TV, Música).
F IGURA 4.R ELACIONES DE INDEPENDENCIA CONDICIONAL EN R EDES B AYESIANAS. La topología de la red de la figura 4 indica que tanto Robo y Terremoto son causas directas para Alarma y también que Robo y Terremoto son causas para Juanllama ( JohnCalls) y para MariaLlama (MaryCalls), pero esa influencia solo se produce a través de Alarma: ni Juan ni María detectan directamente el robo ni los temblores de tierra. De la misma manera, si bien en esta red no se hace referencia directa a las causas por las cuales María podría no oír la alarma: las mismas están implícitas en la tabla de probabilidades: P(Mariallama/ Alarma). La ausencia de un arco entre Robo y Terremoto (o viceversa) significa que teniendo información sobre Robo no es de utilidad para predecir el valor de Terremoto. De la misma manera, y como en el caso anterior, la estructura de la red permite establecer relaciones de independencia condicional, por ejemplo: P(M / J, A, T, R) = P(M / A).
Es decir, conocido el estado de la alarma, para predecir el estado de María (llamó) no importa saber si hubo un terremoto, un robo o Juan llamó. Si la Red Bayesiana es una representación de la probabilidad conjunta, sirve para responder consultas del dominio. Muchas de las preguntas pueden ser respondidas aplicando la regla de Bayes y/o unos pocos axiomas de probabilidad (los que están indicados Apéndice), la dificulta principal es el número de operaciones requerido para resolver el problema, especialmente si el número de variables es grande.
Ejemplo: calcular la probabilidad del evento de que suene la alarma, sin que se haya producido robo ni temblor, habiendo llamado Juan solamente: P(J Ù ØM Ù A Ù ØR ÙØT ) = P(J/A) P(ØM/A) P(A/ ØR ÙØT) P(ØR) P(ØT) = 0.90A × 0.30B × 0.001C × 0.99D × 0.98E 0.000262 A. Directo de tabla 3.4 • • B. de tabla 3.5. P(ØM/A) = 1- P(M/A) = 1 – 0.70 = 0.30 • C. Directo de tabla 3.3 D. Directo de tabla 3.1 • • E. Directo de tabla 3.2 Cuál es la probabilidad de que haya habido un robo, dado que Juan llamó y María llamó? . P(B/JÙM) ??. Eq. 1 Siguiendo la estructura de la red, el numerador de la derecha resulta: = 0.90 × 0.70 ×.9402* × 0.001 + 0.05 × 0.01 × 0.9402*× 0.001 = 0.000592326
*Cálculo de = =
= 0.9402
= 0.63 P(A)+0.0005
Cálculo de P(A/B,E)P(B) P(E) + P(A/B,E) P(B)P(E) + P(A/B,E)P(B) P(E) + P(A/B,E)P(B) P(E)
0.002516442
P( P( 0.99748356 = 0.63 * 0.002516442+0.0005 * = 0.00208410024 0.002084
Finalmente, reemplazando en la ecuación 1 resulta:
0.2842
La solución anterior fue encontrada teniendo en cuenta la semántica de la red y computando directamente las probabilidades condicionales a partir de las tablas CPTs, sin representar la distribución conjunta. En el capítulo 14 de Russell and Norvig (2002, pags.504-506) se enuncia una forma general para este tipo de situaciones.
APLICACIONES DE REDES BAYESIANAS EN EL CONTEXTO DE MINERÍA DE DATOS Como se mencionó anteriormente, el campo de aplicación de BNs es muy grande y variado. Otras áreas de aplicación, aparte de las mencionadas anteriormente, son: bioinformática, tanto análisis de microarray como proteómica y metabolómica (Werhli et al., 2006); sicología (López Puga et al.2007), diagnóstico clínico (Li et al., 2010) y datos georeferenciados (Walker et al., 2005; Ornella y Tapia, 2008), entre otros. Existen diversos entornos de minería de datos que permiten utilizar redes bayesianas. Entre los más reconocidos se puede mencionar: WEKA (Waikato Environment for Knowledge Analysis) (disponible en www.cs.waikato.ac.nz/ml/weka/ ), RapidMiner, anteriormente YALE (Yet Another Learning Environment) (disponible en http://rapidi.com/) y diversos paquetes implementados para el entorno R ( http://cran.r-project.org ).
WEKA-GENERACIÓN DE REDES BAYESIANAS A PARTIR DE DATOS REALES.
En muchas de las áreas de aplicación es muy difícil fijar a priori las relaciones entre las distintas variables. En este caso, primero se determina el esqueleto del grafo, para calcular posteriormente las tablas de dependencia. Como ejemplo se presentarán las alternativas que presenta el entorno WEKA para generar una red bayesiana a partir de un conjunto de datos de entrenamiento (Bouckaert, 2008). De hecho tanto RapidMiner como Knime solo poseen una implementación de Naive Bayes (una versión muy simple de red bayesiana), aunque ambas pueden implementar redes bayesianas utilizando las librarías de WEKA 3. Dado un conjunto de datos, lo primero que se realiza en WEKA es la búsqueda del esqueleto que mejor ajuste a los datos. Dicho ajuste se puede cuantificar por distintas métricas. Entre las más relevantes se puede mencionar 4: • • •
Bayes (valor por defecto). Entropía. longitud de descripción mínima ( minimun description lenght o MDL). Las métricas antes mencionadas (métricas locales) tienen la ventaja de que el
puntaje de toda la red puede ser descompuesto como la suma (o el producto) de los puntajes de cada uno de los nodos. Esto permite utilizar métodos de búsqueda locales. De la misma manera, la búsqueda del mejor esqueleto involucra una heurística de búsqueda determinado (la búsqueda exhaustiva de todos los esqueletos posibles es un problema intratable para un número relativamente grande de variables) y un estimador de la métrica seleccionada. El algoritmo de búsqueda por defecto en Weka es K2, una variante de ascenso de colina ( Hill cimbling) que añade o elimina arcos del grafo sin establecer un orden determinado en los nodos. Al estimador por defecto el autor de la clase lo denomina Estimador simple ( SimpleEstimator), que estima las probabilidades condicionales directamente de los datos. Una alternativa interesante de búsqueda interesante para mencionar es un algoritmo de búsqueda genético: una BN puede ser representada mediante un arreglo de bits de orden n n (n = número de nodos). El bit en la posición (i, j) indica si existe o no un arco del nodo j al nodo i (j
→
i). La heurística del algoritmo genético busca distintas variantes del arreglo
3 Verificado en la versión 5.0.001 de RapidMiner y la versión 2.2.0 de Knime. 4 Una desventaja de BN en WEKA Es que solo puede trabajar con variables discretas.
(grafos) mediante operaciones derivadas de la biología de poblaciones: mutaciones, entrecruzamientos, etc. (Witten and Eibe, 2005). Otros métodos implementados, también reportados en la bibliografía son Tabu Search (búsqueda tabú) y Recocido Simulado o SA (Simulated Annealing). Aprendizaje basado en un puntaje global. Muchas de las implementaciones de minería de datos están orientadas a lo que se conoce como aprendizaje supervisado. En aprendizaje supervisado, y particularmente en clasificación, el algoritmo debe aprender una función que relaciona los atributos con la clase a partir de un cierto número de ejemplos de entrenamiento (Russell and Norvig, 2002). Más formalmente, cada ejemplo se puede definir como un par ( x, f(x)), donde x es un vector de (n-1) atributos de entrada y f( x) es lo que se denomina variable de clase. El objetivo del algoritmo de aprendizaje es encontrar una función h que mejor aproxime a f (aprendizaje inductivo) a partir de datos de entrenamiento 5. En métodos de selección basados en un puntaje global, el algoritmo selecciona el esqueleto no en función del ajuste a los datos de entrenamiento, sino en que tan bien una red en particular puede predecir el valor de clase de ejemplos desconocidos. En Weka, dichos ejemplos de prueba son generados (la mayoría de las veces) mediante validación cruzada k -fold o validación cruzada acumulada (Bouckaert, 2008). En particular, para generar utilizar una red bayesiana como clasificador, el algoritmo de búsqueda selecciona una red B:P B(A1, A2, . . . , An, C), que mejor ajusta a los datos de entrenamiento de acuerdo a algún puntaje (Friedman et al., 1997). Ante un ejemplo de prueba, la red B devuelve el valor de la clase C que maximiza la probabilidad posterior PB(c/a 1, . . . , an).
EJEMPLO: IRIS DATASET. Como ejemplo de esta sección se analizara en WEKA el conjunto de datos denominado iris dataset. Esos datos fueron recopilados por Fisher a principios de siglo y han sido ampliamente utilizados como ejemplo en la literatura estadística y de reconocimiento de patrones. El conjunto consta de 150 instancias, 4 atributos (numéricos) y la clase (nominal). Se encuentra en formato arff (Attribute-Relation File Format) como 5 Mientras que los atributos pueden ser tanto variables continuas como discretas, la clase solo puede tomar valores discretos o nominales Si la variable se clase es continua se lo denomina regresión.
datos
de
ejemplo
en
Weka
o
en
el
sitio
http://www.cs.waikato.ac.nz/~ml/weka/index_datasets.html . La clase indica 3 especies de lirios (Iris Setosa, Iris Versicolor, Iris Virginica) y los atributos indican valores de medidas del pétalo (ancho y largo) y del sépalo (ancho y largo).
F IGURA 5. I NTERFAZ GRÁFICA DE WEKA CON LOS DATOS DE LIRIO YA CARGADOS . En una primera etapa se puede analizar los datos presentados directamente desde la interfaz gráfica de Weka (Figura 5). Un análisis más exhaustivo de los datos (optimización de parámetros de los clasificadores, validación cruzada Montecarlo, etc.) requiere programar los scripts adecuados en java u otro lenguaje adecuado. Desde java (utilizando por ejemplo el entorno Eclipse) se pueden invocar las clases de Weka, utilizando como librería externa el archivo .jar de Weka (Witten y Eibe, 2005). Luego de cargar los datos, se selecciona el clasificador que se quiere evaluar y se editan los parámetros del mismo. Por ejemplo, de la figura 6 se puede observar que se seleccionó el clasificador Red Bayesiana con los parámetros por defecto: algoritmo de búsqueda K2 y estimador Simple Estimator. Una explicación más exhaustiva de las opciones disponibles en Weka se puede encontrar en Bouckaert (2008).
F IGURA 6. E DICIÓN DE LOS PARÁMETROS DE LA R ED B AYESIANA IMPLEMENTADA EN W EKA. Normalmente, se evalúa el clasificador mediante validación cruzada k -fold, donde k generalmente asume el valor de 10 (Figura 7). Esta es una de las alternativas de evaluación más utilizadas en la bibliografía. Durante la misma, los datos son particionados en 10 subconjuntos del mismo tamaño. 9 de los 10 conjuntos son utilizados para el entrenar el algoritmo y la función obtenida es evaluada con la décima partición. Esto se realiza 10 veces en total, utilizando como conjunto de prueba cada una de las particiones. Los valores de tasa de error y otros indicadores de la capacidad predictiva del algoritmo (matriz de confusión, coeficiente Kappa, etc.) son presentados en la interfaz al finalizar las 10 evaluaciones (Figura 7). En este caso se puede ver que se obtuvo aproximadamente un 93% de aciertos, un resultado relativamente bueno. De todas maneras, es muy común realizar una optimización de los parámetros del algoritmo. Como se mencionó anteriormente en estas situaciones es más conveniente implementar scripts en java u otro lenguaje que pueda invocar las clases de Weka.
F IGURA 7. R ESULTADOS DE LA EVALUACIÓN CRUZADA 10- FOLD DEL CLASIFICADOR ). RED BAYESIANA SOBRE LOS DATOS DE LIRIO (I RIS DATASET Por último, se puede solicitar el grafo de la mejor red bayesiana con mejor puntaje (Figura 8). Se puede observar en la figura que la variable correspondiente a la clase no tiene nodos padres. Esta ordenación, i.e., colocar la variable de clase como variable independiente (nodo sin padre), es la que utiliza WEKA para utilizar las redes bayesianas como clasificadores.
F IGURA 8. R ED B AYESIANA GENERADA A PARTIR DE LOS DATOS IRIS.
PAQUETES IMPLEMENTADOS EN EL ENTORNO R. A diferencia del WEKA y las otras librerías antes mencionada, en el entorno R no existe una interfaz gráfica que permita un análisis rápido de los datos. De la misma manera, y dado que el lenguaje utilizado en el entorno está orientado a objeto, la utilización de la mayoría de los paquetes disponibles requiere un conocimiento más profundo de lenguajes de programación*. Tanto en la ayuda de consola como en el sitio WEB del proyecto (http://www.r-project.org) se encuentra disponible numerosa bibliografía de cómo utilizar el entorno. También para cada paquete específico se encuentra disponible un manual escrito por el autor (http://cran.r-project.org/mirrors.html ). * R es un sistema para análisis estadísticos y gráficos creado por Ross Ihaka y Robert Gentleman. T iene una naturaleza doble de programa y lenguaje de programación y es considerado como un dialecto del lenguaje S creado por los Laboratorios AT&T Bell. R se distribuye gratuitamente bajo los términos de la GNU General Public Licence; Si bien su desarrollo y distribución son llevados a cabo por varios estadísticos conocidos como el Grupo Nuclear de Desarrollo de R, numerosos grupos del mundo contribuyen con paquetes de funciones específicas. Otro proyecto muy reconocido asociado al entorno R es Bioconductor (http://www.bioconductor.org).
En esta presentación se hará un breve resumen de 3 paquetes de R que permiten obtener Redes Bayesianas mediante distintos métodos de búsqueda y mediante distintos
estimadores. De todas maneras, el números de paquetes disponibles es mayor; siendo en algunos casos diseñados para un dominio de aplicación específico.
CATNET PACKAGE. Si bien este paquete del entorno R fue diseñado para la reconstrucción de redes de genes y proteínas (Balov and Salzman, 2010), los autores plantean que su diseño permitiría ser utilizado en otros dominios. La clase básica de este paquete se llama catNetwork (por categorical network). Esto significa que los nodos del grafo solo pueden ser variables categóricas. Entre una de las ventajas más importante, Catnet permite comparar dos grafos mediante dos grupos de métricas: las métricas del primer grupo permiten comparar la topología de los dos grafos; mientras que las del segundo grupo (probabilísticas) comparan las distribuciones asociadas a las redes. Esto puede ser particularmente útil cuando se quieren evaluar redes bayesianas obtenidas mediante diferentes heurísticas y/o estimadores. Finalmente, con respecto al aprendizaje de la red a partir de un conjunto de datos, catnet implementa un algoritmo de puntaje global, y realiza una búsqueda exhaustiva de las redes de acuerdo al criterio de estimador de máxima verosimilitud o MLE (Maximum Likelihood Estimator). Si el orden de los nodos no es conocido, la función cnSearchSA permite realizar una búsqueda estocástica basada en el algoritmo de recocido simulado o SA (Simulated Annealing), derivado del algoritmo Metrópolis. Para visualización y/manipulación de los grafos, se requiere de otros paquetes de R, tales como Graphviz o igraph. Al igual que la mayoría de los paquetes de R, las funciones se encuentran descriptas en detalle en el manual disponible en el repositorio público.
BNLEARN : BAYESIAN NETWORK STRUCTURE LEARNING. Bnlearn (Scutari, 2010) permite aprender la estructura de la red a través de aprendizaje bayesiano basado en restricciones (o basado en tests de 'independencia condicional'), algoritmos por score (puntaje) y algoritmos híbridos. Para el primer grupo, este paquete tiene implementado los algoritmos GS ( Grow-Shrink ) , el algoritmo de Asociación incremental (IAMB), el algoritmo intercalado-IAMB (Inter-IAMB) y el IAMB rápido. Estos algoritmos utilizan test de independencia condicional para detectar las mantas de Markov ( Markov blankets) de los nodos (variables), que a su vez son utilizadas para
computar la estructura de la red. Con respecto a algoritmos basado en un puntaje de la red se encuentran implementados hill climbing y taboo search; y finalmente, algoritmos híbridos tales como Max-Min Hill-Climbing (mmhc) y maximización restringida ( Restricted Maximization), una implementación mas general del mmhc que permite utilizar cualquier combinación de algoritmos de los primeros dos grupos. Este paquete permite analizar tanto datos discretos como redes gaussianas. Dentro de los scores utilizados para evaluar las redes discretas se encuentran 6: logaritmo de la verosimilitud multinomial (equivalente a la medida de entropía usada en Weka), criterio de información de Akaike (aic) y puntaje basado en el criterio de información bayesiano (bic), que es equivalente a la longitud de descripción mínima o Minimum Description Length (MDL) y también es conocido como criterio de información de Schwarz. Dentro de los puntajes utilizados para evaluar redes gaussianas se encuentran: logaritmo de la verosimilitud, criterio de información de Akaike y criterio de información Bayesiano. Otras funciones de utilidad son: comparación y manipulación de modelos (distancia de Hamming estructural), generación aleatoria de datos y finalmente, validación cruzada para evaluar la capacidad predictiva de la red para un nodo en particular. También se encuentran disponibles funciones graficas avanzadas, que requieren de la instalación de los paquetes Rgraphviz y lattice.
DEAL. Deal (Autores: Susanne Bottcher y Claus Dethlefsen) permite aprender y comparar redes bayesianas a partir de datos con variables continuas y/o discretas utilizando el algoritmo reportado por Bottcher (2001). Dentro de las funciones más relevantes se puede mencionar: autosearch, es una búsqueda codiciosa ( Greedy search) donde en cada paso se crea una lista de redes agregando o eliminando arcos (evitando que se genere un ciclo); la red de la lista con mejor puntaje se selecciona para el próximo paso en la búsqueda, si no se encuentra una red con mejor puntaje que la obtenida en el paso anterior, se termina la búsqueda. Y Drawnetwork, que permite especificar la estructura del grafo.
6 Estas métricas también se encuentran en WEKA.
Otra función que se puede mencionar es rnetwork, donde dada una red de topología y distribución de probabilidad conjunta conocida permite simular un conjunto de datos proveniente de dicha distribución. Algunas de estas funciones y otras reportadas en el manual se analizarán en el siguiente ejemplo.
EJEMPLO: ANÁLISIS DE DATOS CON EL PAQUETE DEAL. En este ejemplo se obtiene red bayesiana utilizando el paquete Deal y el conjunto de datos “rats”. Los datos son un conjunto de datos artificial de 24 ratas (12 hembras y 12 machos) aleatorizados para el uso de una de tres drogas. Las otras dos variables indican la pérdida de peso luego de 1 o 2 semanas.
install.packages("deal") ## Instala el paquete desde un repositorio de la WEB o de un archivo local. library("deal") # # Carga el paquete data(rats) fit <- network(rats) ##Genera un objeto de la clase network a partir de los datos. Entre las propiedades
del objeto se encuentran el número y tipo de nodos (discreto o continuo), el puntaje de la red, la lista de arcos prohibidos, etc. fit.prior <- jointprior(fit,12) ##Genera la distribución de probabilidad conjunta. fit <- getnetwork(learn(fit,rats,fit.prior)) ##Genera una nueva red a partir de la distribución conjunta y mediante al algoritmo de Bottcher (2001). fit <- getnetwork(insert(fit,2,1,rats,fit.prior)) ##Inserta o remueve un arco de la red (en este caso del nodo 2 al nodo 1). fit <- getnetwork(insert(fit,1,3,rats,fit.prior)) ##Idem anterior pero del nodo 1 al 3. hisc <- autosearch(fit,rats,fit.prior,trace=FALSE) ## autosearch realiza una búsqueda codiciosa de la red con mejor puntaje. hisc <- autosearch(fit,rats,fit.prior,trace=FALSE,removecycles=TRUE) # removecycles=TRUE devuelve todas las redes analizadas excepto las que contengan un ciclo, si es FALSE devuelve todas. SALIDA DE LA ULTIMA EXPRESIÓN [Autosearch (1) -170.0867 [Sex|Drug][Drug][W1|Sex:W2][W2] (2) -166.3658 [Sex|Drug][Drug][W1|Sex:Drug:W2][W2] (3) -163.5749 [Sex|Drug][Drug][W1|Drug:W2][W2] (4) -161.4324 [Sex|Drug][Drug][W1|Drug][W2|W1] (5) -160.2244 [Sex][Drug][W1|Drug][W2|W1] Total 0.16 add 0.06 rem 0.01 turn 0.02 sort 0 choose 0.05 rest 0.02 ]
plot(getnetwork(hisc)) ## Grafica la red obtenida
hisc2 <- heuristic(fit,rats,fit.prior,restart=10,trace=FALSE) ##heuristic reinicia la búsqueda perturbando la red y llamando la función autosearch. La perturbación se logra agregando o eliminando un número determinado de arcos. plot(getnetwork(hisc2)) ##Genera un objeto de la clase network a partir de los datos.
print(modelstring(getnetwork(hisc2))) ##Genera un objeto de la clase network a partir de los datos. SALIDA DE MODELSTRING "[Sex][Drug][W1|Drug][W2|W1]"
makenw(gettable(hisc2),fit) ##Genera un objeto de la clase network a partir de los datos SALIDA DE PARCIAL DE makenw Discrete: Sex(2),Drug(3) Continuous:W1,W2 log(Score) |Relscore |Network -----------------------------------------------------------1. -160.2244 1 [Sex][Drug][W1|Drug][W2|W1]
2. -160.6097 0.6802642 [Sex][Drug][W1|Drug][W2|SexW1] 3. -161.4324 0.2987972 [Sex|Drug][Drug][W1|Drug][W2|W1] 4. -161.4324 0.2987972 [Sex][Drug|Sex][W1|Drug][W2|W1] 5. -161.8177 0.2032610 [Sex|Drug][Drug][W1|Drug][W2|SexW1] 6. -161.8177 0.2032610 [Sex][Drug|Sex][W1|Drug][W2|SexW1] 7. -162.3077 0.1245122 [Sex][Drug][W1|Drug][W2|DrugW1] ... 89. -177.3214 3.757134e-08 [Sex|Drug][Drug][W1|Sex][W2|Sex] 90. -178.071 1.775455e-08 [Sex][Drug|Sex][W1|Sex][W2|SexDrug] 91. -178.071 1.775455e-08 [Sex|Drug][Drug][W1|Sex][W2|SexDrug]
## Ploteo las 9 primeras redes obtenidas por gettable
G = makenw(gettable(hisc2),fit) op <- par(mfrow = c(3, 3) ,mar = c(2,0, 1, 1) + 0.1) for(i in 1:9) plot(G[[i]]) par(op)
*Score es un puntaje bayesiano que cuantifica que tan bien la red ajusta a los datos (verosimilitud) y RelScore es un valor relativo, el puntaje de la red comparado con el mejor puntaje de la familia.
BIBLIOGRAFÍA Balov, N. and Salzman,P. (http://rwiki.sciviews-.org).
(2010)
Presentación
del
paquete
CATNET
Bottcher, S.G. (2001). Learning Bayesian Networks with Mixed Variables. Artificial Intelligence and Statistics 2001, Morgan Kaufmann, San Francisco, CA, USA, 149-156. Bouckaert R.R (2008). Bayesian Network Classifiers in Weka for Version 3-5-8 (http://www.cs.wa-ikato.ac.nz/ml/weka/ ). Friedman, N.; Geiger, D. and Goldszmidt, M. (1997). Machine Learning 29: 131–163. Li, J.; Gursel Serpen, G.; Steven Selman,S.; Matt Franchetti,M.; Mike Riesen,M. and Cynthia Schneider,C. (2010) Bayes Net Classifiers for Prediction of Renal Graft Status and Survival Period. International Journal of Biological and Biomedical Sciences 2:4. López Puga, J. Juan García García,J.; de la Fuente Sánchez, L. y de la Fuente Solana, E.I. (2007) Las redes bayesianas como herramientas de modelado en psicología. Anales de psicología 23(2): 307-316. Ornella, L. y Tapia, E (2008) Técnicas de Aprendizaje Computacional para Integrar Información de Áreas Rurales en un Contexto GIS. pp. Jornadas de Informática Industrial: Agroinformática - JII 2008. Santa Fe, Argentina, 8-12 setiembre 2008. ISSN 1850-2849. pp. 168-179. Russell S.J. and Norvig P. (2002) Artificial Intelligence A Modern Approach Second Edition. Prentice Hall. Scutari, M. (2010). Learning Bayesian Networks with the bnlearn R Package. Journal of Statistical Software, 35(3), 1–22. Walker, A.; Pham, B. and Moody, M. (2005) Spatial Bayesian learning algorithms for Geographic information retrieval. In Proceedings 13th annual ACM international workshop on Geographic information systems, pages pp. 105-114, Bremen, German (Disponible en http://eprints.qut.edu.au/3637/1/. Witten, I. H. & Eibe, F. E. (2005) Data Mining: Practical machine learning tools and techniques. 2nd ed. Morgan Kaufmann San Francisco. Werhli, A.V.; M. Grzegorczyk, M. and D. Husmeier, D. (2006). Comparative evaluation of reverse engineering gene regulatory networks with relevance networks, graphical Gaussian models and Bayesian networks. Bioinformatics 22:2523–2531.
APÉNDICE: C ONCEPTOS BÁSICOS DE PROBABILIDAD
Algunos axiomas de probabilidad. P: PROB ® [0,1] P(A Ú B) = P(A)+P(B)- P(AÙB) P( ¬A) = 1- P(A) P(A/B) = P(AÙB) / P(B) (Probabilidad Condicional). Regla de Bayes (Reverendo Thomas Bayes, 1763). • P(A/B) = P(B/A)×P(A) / P(B) Es común pensar en la regla de Bayes en términos de la actualización de la creencia ( belief ) acerca de una hipótesis A la luz de nuevas pruebas B. En concreto, nuestra creencia posterior P (A | B) se calcula multiplicando nuestra creencia antes de P (A) por el probabilidad P (B | A) que B se producirá si A es verdad. Independencia Condicional. Se dice que dos variables aleatorias X e Y que son independientes si se cumple: • P(X,B) = P(A) P(B) • P(Y | X) = P(X) • P(X | Y) = P(Y) Se dice que dos variables A y B son condicionalmente independientes dado C si se cumplen cualquiera de los siguientes requisitos: • P(A, B | C) = P(A | C) P(B | C) • P(A | B, C) = P(A | C) • P(B | A, C) = P(B | C)