descripción del programa elviraleo.ugr.es/elvira/meetings/albacete2002/acu.pdfal leer un fichero...
TRANSCRIPT
Descripción del programa ElviraAndres Cano Utrera
Descripcion del programa Elvira– p.1/29
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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