29
Descripción del programa Elvira Andr ´ es Cano Utrera Descripci ´ on del programa Elvira– p.1/29

Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Descripción del programa ElviraAndres Cano Utrera

Descripcion del programa Elvira– p.1/29

Page 2: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquetes Java de Elvira (1)

El programa Elvira está escrito en Java y está organizado en lossiguientes 15 paquetes que contienen 211 clases y un total de 117516líneas de código a fecha 14-06-2002.

Paquete elvira

Paquete elvira.potential

Paquete elvira.parser

Paquete elvira.database

Paquete elvira.inference

Paquete elvira.inference.elimination

Paquete elvira.inference.clustering

Paquete elvira.inference.approximate

Paquete elvira.inference.abduction

Descripcion del programa Elvira– p.2/29

Page 3: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquetes Java de Elvira (2)

Paquete elvira.learning

Paquete elvira.fusion

Paquete elvira.translator.bif2elv

Paquete elvira.translator.hugin2elv

Paquete elvira.tools

Paquete elvira.gui

Descripcion del programa Elvira– p.3/29

Page 4: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira

Contiene entre otras, las clases que permiten almacenar en RAM unared Bayesiana o un diagrama de influencia.

Clase Graph:Representa un grafo (dirigido o no) con una lista de nodos y unalista de enlaces.

protected NodeList nodeList;

protected LinkList linkList;

private int kindOfGraph;(DIRECTED, UNDIRECTED, MIXED)

Clase Network extends Graph:Representa un grafo (objeto Graph) al que se le añade una listade relaciones (Relation)

private Vector relationList: Vector de relaciones dela red. quizás habría que cambiar Vector porRelationList)

Descripcion del programa Elvira– p.4/29

Page 5: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira

Clase Bnet extends Network:Clase usada para almacenar una red Bayesiana.

Clase Node:Clase abstracta para almacenar un nodo de un objeto Network.

Las subclases de ésta contienen los distintos tipos de nodos(FiniteStates y Continuous).private int typeOfVariable: Puede ser CONTINUOUS,FINITE_STATES, INFINITE_DISCRETE o MIXED.private int kindOfNode: Puede valer CHANCE,DECISION o UTILITY

Descripcion del programa Elvira– p.5/29

Page 6: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira

Clase FiniteStates extends Node:Clase para almacenar nodos correspondientes a variablesaleatorias (kindOfNode=CHANCE) con un número finito deposibles valores (typeOfVariable=FINITE_STATES). Es usadatambién para nodos de decisión (kindOfNode=DECISION).

private Vector states: Vector con los nombres (strings)de los nombres de estados.private int numStates: Número de estados.private static final double UNDEFVALUE: Valor deuna variable discreta cuyo valor es desconocido. Todas lasvariables discretas usan el mismo valor (-1.0) para indicarvalor desconocido.

Descripcion del programa Elvira– p.6/29

Page 7: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira

Clase Continuous extends Node:Clase para almacenar nodos correspondientes a variablesaleatorias (kindOfNode=CHANCE) con dominio continuo(typeOfVariable=CONTINUOUS). Es usada también para nodosde utilidad (kindOfNode=UTILITY)

private double max

private double min

private double undefVal: Valor de esta variable continuacuyo valor es desconocido. Cada variable continua puedetener un valor diferente en este campo.

Descripcion del programa Elvira– p.7/29

Page 8: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira

Clase Link:Almacena un enlace entre dos nodos de un grafo (Graph).

private Node head:private Node tail:private boolean directed: true o false.

Descripcion del programa Elvira– p.8/29

Page 9: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira

Clase Relation:Representa una relación entre variables en la que aparecen lasvariables implicadas junto con información numérica representadocon un Potential.

private NodeList variables: Lista de variables de larelación.private Potential values: Potencial (subclase dePotential) de la relación.private String kind: Tipo de relación(CONDITIONAL_PROB, UTILITY,CONSTRAINT, POTENTIAL,OR, MAX, etc).private boolean active,

Descripcion del programa Elvira– p.9/29

Page 10: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira

Clase Configuration:Implementa una configuración de variables discretas. O sea unalista de variables FiniteState y una lista de valores (enteros).

private Vector variables

private Vector values

ClaseContinuousConfiguration extends Configuration:Configuración de variables discretas y continuas.

private Vector continuousVariables

private Vector continuousValues

Descripcion del programa Elvira– p.10/29

Page 11: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira

Clase Evidence extends ContinuousConfiguration:Representa un conjunto de evidencia (observaciones) en una redBayesiana.

boolean isObserved(Node node)

void save(java.io.FileWriter f)

Clase Finding:Representa una observación para una sola variableFiniteStates. Es usada sobre todo en las clases del interfazgráfico.

private FiniteStates node

private int state

Descripcion del programa Elvira– p.11/29

Page 12: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira

Clase CaseList extends Potential:Clase abstracta que representa una lista de casos (caso=un valorpara cada una de las variables) de una red Bayesiana.

Clases CaseListMem extends CaseList:Representa una lista de casos almacenada en RAM (en unVector) para variables discretas.

private Vector cases:

ClasesContinuousCaseListMem extends CaseListMem:Representa una lista de casos almacenada en RAM paravariables discretas y continuas.

Clase CaseListOutMem extends CaseList:Representa una lista de casos almacenada en disco (en unRandomAccessFile).

private RandomAccessFile cases:

Descripcion del programa Elvira– p.12/29

Page 13: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira.potential

Contiene las clases que permiten almacenar información numéricapara un conjunto de variables.

Clase Potential:Clase abstracta que actúa como superclase de los distintos tiposde potenciales.

private Vector variables

Potential addVariables(FiniteStates var)

Potential combine(Potential pot)

Potential restrictVariable(Configuration conf)

Clase PotentialTable extends Potential:Potencial para un conjunto de variables discretas, representadocomo una tabla (array de doubles), con un valor por cadaconfiguración de las variables.

private double[] values

Descripcion del programa Elvira– p.13/29

Page 14: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira.potential

Clase PotentialTree extends Potential:Potencial para un conjunto de variables discretas, representadocomo un árbol de probabilidad.

ProbabilityTree values

X_1

X_2

X_3

X_1

0.2 0.8

0.5 0.7 0.3

1 1 1 0.2 1 1 2 0.5 1 2 1 0.7 1 2 2 0.7 2 1 1 0.8 2 1 2 0.5 2 2 1 0.3 2 2 2 0.3

X_1 X_2 X_3 P(X_1|X_2,X_3)

Descripcion del programa Elvira– p.14/29

Page 15: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira.potential

Clase PotentialFunction extends Potential:Potencial para un conjunto de variables discretas, representadomediante una función.

private Vector arguments: Vector de argumentos de lafunción. Un argumento que puede ser un Double u otroPotential.private Function function: Es la función concretausada para obtener los valores del potencial a partir del valorde las variables del potencial y de los argumentos de lafunción.public void setFunction(String s)

double getValue(Configuration conf)

Descripcion del programa Elvira– p.15/29

Page 16: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira.potential

Un PotentialFunction permite que en un fichero en formato Elviratengamos cosas del tipo:

relation n1 n2{

active = false;

name-of-relation = name1;

values = table { 0.2, 0.8, 0.3, 0.7}

}

relation n1 n2 n3{

values = function OneFunction(0.3, 0.8,name1);

}

Descripcion del programa Elvira– p.16/29

Page 17: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira.potential

Para la puerta Or podriamos tener:relation Efecto Causa1 Causa2{

active=true;

values= function NoisyOr(EfectoR,EfectoCausa1R,EfectoCausa2R);

}

relation Efecto{ % leakyparameters

active=false;

name-of-relation = EfectoR;

values = table (0.2 0.8);

}

relation Efecto Causa1{

active=false;

name-of-relation = EfectoCausa1R;

values = table (0.2 0.8 0.3 0.7 0.4 0.6);

}

relation Efecto Causa2{

active=false;

name-of-relation = EfectoCausa2R;

values = table (0.3 0.7 0.5 0.5);

} Descripcion del programa Elvira– p.17/29

Page 18: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira.potential

Clase ListPotential extends Potential:Representa un potencial a través de una lista de potenciales. Sesupone que el potencial globlal se obtiene con la combinación detodos los de la lista.

Vector list

Clase PotentialContinuousPT extends Potential:Representa una función de probabilidad que depende de variablesdiscretas y continuas. Es como un PotentialTree pero ahoralos nodos internos pueden representar variables discretas ycontinuas, y los nodos hoja son funciones de densidad mixtura deexponenciales.

private ContinuousProbabilityTree values

Descripcion del programa Elvira– p.18/29

Page 19: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira.potential

��

��Ejemplo de PotentialContinuousPT

� � ��� ��� ��� �� � ��������

��������

�� ��� � � �! � "# $ � "% & � '

if

� ( � � ) *

� '� � � �! � "# $ � � "% & � +

if

* ( � � ( + �,�-

. if

�� � yes

� /� � �! 0 "% $ � � "1 & � +

if

�� � no

243

265

798 :<; = > ?A@ B C# D ?A@ 3 C% E 7 8 F 798 F; = > ?A@ G C# D ?A@ G C% E 7 8 H798 I<; = ?@ J C% D ?@ 5 C1 E 798 H

yes no

7K 2 5 L M M K 2 5 K H 7

Descripcion del programa Elvira– p.19/29

Page 20: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira.parser

Contiene las clases para los parsers de ficheros Elvira, ficheros deevidencia, ficheros de bases de datos y ficheros de resultados depropagación.

Estas clases son generadas con el programa javacc a partir deficheros .jj que describen la sintaxis y semántica de los ficherosde más arriba.

Cuando el programa Elvira lee un fichero Elvira (.elv) se crea unobjeto de la clase Bnet o bien IDiagram.

Al leer un fichero de evidencia (.evi) se crea un objetoEvidence.

Al leer un fichero base de datos (.dbc) se crea un objetoDataBaseCases.

Descripcion del programa Elvira– p.20/29

Page 21: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira.database

Contiene la clase DataBaseCases derivada de Bnet.

Esta clase representa una base de datos de casos (un valor paracada variable) para una red Bayesiana.

Al leer una base de datos tenemos la opción de mantenerlos enmemoria (con CaseListMem) o bien en fichero(CaseListOutMem).

Actualmente se pueden leer bases de datos con variablesdiscretas y continuas.

Es posible utilizar el símbolo ? cuando no conocemos el valor deuna variable en algún caso.

Descripcion del programa Elvira– p.21/29

Page 22: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira.inference

Contiene la clase Propagation que es la superclase de todoslos métodos de propagación en redes Bayesianas y diagramas deinfluencia.

Esta clase contiene métodos que permiten calcular el error de lapropagación en métodos aproximados (si disponemos también delos exactos).

También tiene métodos para leer y guardar el resultado de lapropagación en ficheros.

Descripcion del programa Elvira– p.22/29

Page 23: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira.inference.elimination

Contiene clases que implementan métodos de propagación por elmétodo de eliminación de variables en redes Bayesianas y diagramasde influencia.

Clases VariableElimination y VEWithPotentialTree:Método de propagación (exacto) de eliminación de variables pararedes Bayesianas y diagramas de influencia.

Clase ArcReversal: Método de inversión de arcos paradiagramas de influencia.

Descripcion del programa Elvira– p.23/29

Page 24: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira.inference.clustering

Contiene las clases para almacenar en memoria un árbol de grupos ocliques, así como métodos de triangulación necesarios paraconstruirlo.

Clase JoinTree: Representa un árbol de grupos.

Clase NodeJoinTree: Representa uno de los nodos (grupos) delárbol.

NeighbourTreeList neighbourList: Este camporepresenta la lista de vecinos del grupo

Clase Triangulation: Contiene métodos de triangulación degrafos, usados en la construcción del árbol de grupos.

Descripcion del programa Elvira– p.24/29

Page 25: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira.inference.clustering

Además, contiene clases que implementan métodos exactos yaproximados de propagación en tales árboles de grupos o cliques.

Clase HuginPropagation: Implementa el algoritmo depropagación Hugin. Puede usar, de forma opcional, árboles deprobabilidad, permitiendo propagación exacta o aproximada.

Clases Penniless y SimplePenniless: Usan un árbol degrupos binario, y árboles de probabilidad para construir unalgoritmo aproximado (el algoritmo penniless). Este algoritmopuede realizar más de dos recorridos por el árbol de grupos con laintención de mejorar cada vez más la aproximación conseguida.

Clases LazyPenniless y SimpleLazyPenniless:Implementan el método de propagación penniless, pero ahora losmensajes entre grupos son representados en forma factorizada(con listas de potenciales).

Descripcion del programa Elvira– p.25/29

Page 26: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira.inference.approximate

Contiene clases que implementan métodos aproximados depropagación en redes Bayesianas mediante algoritmos de MonteCarlo.

Clase SimulationProp: Superclase de los siguientes métodosde propagación. Contiene datos y métodos comunes a todos.

Clases ImportanceSampling, ImportanceSamplingTable,ImportanceSamplingTree, ImportanceSamplingTreeAV yImportanceSamplingFunctionTree: Implementan distintostipos del método de propagación de muestreo por importancia(por algoritmo de eliminación de variables).

Clases MarkovChainMonteCarlo y ContinuousMCMC:Implementan algoritmos de Monte Carlo con cadenas de Markov.

Clases SystematicSamplingTable ySystematicSamplingTree: Método de muestreo sistemático.

Descripcion del programa Elvira– p.26/29

Page 27: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Paquete elvira.learning

Contiene clases que implementan métodos de construcción de redesBayesianas a partir de bases de datos (ficheros .dbc).

La clase Learning es la superclase de todos los métodos deaprendizaje.

Existen dos tipos de métodos implementados en Elvira:Basados en tests de independencia: PCLearning,PC01Learning, etc.Basados en búsqueta y una métrica: BBenedict,BICLearning, K2Learning, etc

La clase Metrics es la superclase de las métricas usadas enalgunos algoritmos de aprendizaje: BICMetrics, K2Metrics

Descripcion del programa Elvira– p.27/29

Page 28: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Otros paquetes

Paquete elvira.inference.abduction: Contiene clases queimplementan métodos exactos y aproximados de abducción total yparcial en redes Bayesianas.

Paquete elvira.fusion: Contiene clases para llevar a cabofusión de redes Bayesianas.

Paquete elvira.translator.bif2elv: Traductor del formatobif a Elvira.

Paquete elvira.translator.hugin2elv: Traductor delformato Hugin a Elvira.

Paquete elvira.tools:Clases de utilidad tales como DSeparation, Crono,JoinTreeStatistics, PropagationStatistics.También contiene otras clases que quizás estaría mejor enotro paquete: ContinuousFunction, LinearFunction,RealFunction, QuadraticFunction,

Paquete elvira.gui: Clases del interfaz gráfico.Descripcion del programa Elvira– p.28/29

Page 29: Descripción del programa Elviraleo.ugr.es/elvira/Meetings/Albacete2002/acu.pdfAl leer un fichero de evidencia (.evi) se crea un objeto Evidence. Al leer un fichero base de datos

Formato Elvira

El formato Elvira puede representar redes, redes Bayesianas ydiagramas de Influencia.Existen cuatro apartados básicos en un fichero de especificación deredes Elvira (normalmente con extensión .elv)

1. Descripción de la Red

2. Descripción de los nodos de la red.

3. Descripción de los enlaces entre los nodos.

4. Descripción de las relaciones de la red.

Descripcion del programa Elvira– p.29/29