SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
Análisis del Proyecto “TETRAD V”
Programación 3 Grupo # 2
Freddy L. Abad Leon, Jonnathan D. Cuvi Brito., Carlos R. Muñoz Godoy
Abstract— This article was written with the purpose of explaining the functionality of the TETRAD V Project: its
implementation, the issues it tries to solve and the utilities it provides to the user. Being a Project with a lifespan of
more than 25 years, it is considered a strong Computer System. Which has taken the appropriate standards for the
codification, using as paradigm of development the object-oriented paradigm, using the concepts of programming
by layers, and some design patterns of software, becomes an appropriate Project for the analysis of its code by the
students of programming.
Resumen— Este artículo fue escrito con la finalidad de explicar la funcionalidad del Proyecto TETRAD V: su
implementación, las temáticas que trata de resolver y las utilidades que brinda al usuario. Siendo un Proyecto con
un tiempo de vida de más de 25 años se considera un Sistema informático fuerte para fines pedagógicos. El cual
ha llevado los estándares apropiados para la codificación, usando como paradigma de desarrollo el paradigma
orientado a objetos, empleando los conceptos de programación por capas, y algunos patrones de diseño de
software, estas y demás razones hacen que este proyecto se convierta en un Proyecto apropiado para el análisis
de su código por parte de los estudiantes de programación.
Términos de Index—
I.D.E. = Integrated Development Environment o Entorno de Desarrollo Integrado
U.M.L.= Unified Modeling Language o Lenguaje de Modelado Unificado
P.C.=Algoritmo Peter & Clark
V.M = Virtual Machine
O.R.B = Object Request Broker
CORBA= Common Object Request Broker Architecture.
M.L = Machine Learning
I.A.=Inteligencia Artificial
P.A. G= Partial Artificial Graph
GFCI = Algoritmo de Inferencia Causal Rápida Avanzada
FGES= Algoritmo de Búsqueda de Equivalencia Rápida Avanzada
G.E.S. = Greedy Equivalence Search
B.I.C=Criterio Bayesiano de Información
A.P.I=Application Programming Interface
——————————  ——————————
1 Introducción
L proyecto TETRAD, (proyecto de Licencia Pública General Menor GNU GPL v. 2) se centra en el
descubrimiento causal , particularmente el problema de aprender acerca de la causalidad a partir de la
evidencia estadística. Los alcances teóricos e informáticos del Proyecto se plasmaron en el software TETRAD
(desde la versión I hasta la V). Este software se desarrolló con la finalidad de construir algoritmos eficaces y
prácticamente útiles para el descubrimiento causal es tanto la informática como la filosofía. Este fue un gran
esfuerzo en la construcción y la investigación de la eficacia del software educativo.
El programa TETRAD V (Versión 5.3.0) se define como un sistema informático que crea, simula datos de
estimaciones, pruebas, y predice o busca modelos causales y estadísticos. El objetivo principal del programa
es proporcionar sofisticados métodos en una interfaz amigable que requiere muy poca sofisticación
estadística del usuario y sin conocimientos de programación. El sistema TETRAD fue el resultado de la
colaboración de Clark Glymour, Richard Scheines, Peter Spirtes, Joseph Ramsey, junto a estudiantes de
posgrado de la Universidad de Carnegie
Mellon. TETRAD es sistema único en el
conjunto de algoritmos de búsqueda de
principios que tiene la capacidad de buscar
cuando puede haber confundidores no
observados de variables medidas, tiene a su vez
la capacidad de buscar modelos de estructura
————————————————
 Abad, Freddy. Author is from the University of Cuenca, Av. 12 de abril,
Av. Loja. E-mail: freddy.abadl@ucuenca.ec
 Cuvi, Jonnathan. Author is from the University of Cuenca, Av. 12 de abril,
Av. Loja. E-mail: jinnothan.cuvi @ucuenca.ec
 Muñoz, Carlos. Author is from the University of Cuenca, Av. 12 de abril,
Av. Loja. E-mail: carlos.munozg @ucuenca.ec
E
2
latente y buscar modelos de retroalimentación lineal - y en la capacidad de calcular predicciones de los
efectos de intervenciones o experimentos basados en un modelo. Todos sus procedimientos de búsqueda son
coherentes con los puntos ya que se garantiza que convergen casi con toda seguridad para corregir la
información sobre la estructura verdadera en el límite de la muestra grande, siempre que la estructura y los
datos de la muestra satisfagan varios supuestos. TETRAD se limita a modelos de datos categóricos y a
modelos lineales (modelos de ecuaciones estructurales) con una distribución de probabilidad Normal,
debido a que son un tipo de clase muy limitada de modelos de series temporales. Los modelos causales se
procesan en tres etapas distintas: una imagen, que representa un grafo dirigido que especifica hipotéticas
relaciones causales entre las variables, una especificación de la familia de distribuciones de probabilidad y
tipos de parámetros asociados con el modelo gráfico y una especificación de los valores numéricos de
Parámetros.
El Proyecto TETRAD V analizado en este ensayo se divide en distintas partes:
1.- Descarga e implementación en un IDE (Netbeans & Eclipse).
2.- Análisis del código de las tres capas en las cuales fueron desarrolladas el Proyecto (tetrad-lib, tetrad-gui,
causal-cmd).
3.- Elaboración de los apropiados diagramas para el entendimiento del código implementado, usando el
plugin ObjectAid UML Explorer para Eclipse IDE.
4.- Análisis de la clase PC-Stable con las recurrentes clases asociadas por relaciones de uso, agregación o
composición.
3.- Elaboración de los apropiados diagramas para el entendimiento de la clase PCStable, usando el plugin
ObjectAid UML Explorer para Eclipse IDE.
4.- Generación de conclusiones respecto al proyecto, las metodologías de uso, y las recomendaciones de
manipulación del software.
2 Procedimiento
Como primera parte del análisis, se procedió a clonar el repositorio de github.org en el IDE elegido
(Netbeans), siguiendo la táctica preferida de clonación. Al tener listo el proyecto integrado en el IDE, se
detectó la incertidumbre de que clase contenga el main que llame a ejecución todos los packages del
proyecto, y en general la clase que contenga el main ‘principal’ del proyecto. En este punto, la clase que
manda a ejecutar el main principal es la clase Tetrad.java, perteneciente a la capa tetrad-gui (la jerarquía de
la clase se detalla en la figura 1).
Esta etapa de análisis del proyecto, pueden referenciar una buena práctica de análisis, desarrollo y
programación de código, que es revisar las dependencias requeridas por el sistema. Estas dependencias,
internas o externas, se referencian mediante la palabra reservada “import”, estas dependencias son de
extremada importancia.
Las dependencias internas, son importantes debido a los métodos que son implementados mediante
relaciones de uso (herencia), agregación o composición, generando el destacado concepto de la
Programación Orientada a Objetos, el POLIMORFISMO, ayudando a desarrollados a la reutilización de
código, nombres de métodos, nombres de procedimientos, funciones entre otras.
Las dependencias externas, mas importantes aun, ya que el desarrollador puede conocer a profundidad, pero
los lectores del código, pueden llegar a tener conceptos erróneos de este, debido a que no están
implementados en código explícitamente en el proyecto escrito por los desarrolladores, es decir, referencia
a una dependencia que esta subido en un servidor, a disposición del público mediante internet, dos ejemplos
de dependencias utilizadas son: xml-apis y xercesimpl.
El análisis de estas dependencias, internas o externas, ayudara a conocer los posibles errores entre máquina
y máquina, las pruebas heurísticas en un grupo de estudiantes evidencio este punto, ya que las variantes de
arquitectura de computador, los procesadores o simplemente las dependencias instaladas previamente, en los
3
computadores, hacen que entre la máquina de un estudiante A y la máquina de un estudiante B, no corra
satisfactoriamente el proyecto.
A partir de este momento, el proyecto TETRAD V corrió sin ningún problema, pudiendo analizar la
funcionalidad desde el punto de vista de usuario, permitiéndonos elaborar la simulación que se detalla en la
sección 2.3, a partir de distintos nodos y tablas de datos, previstos de determinados errores.
Para la comprensión del código, las jerarquías de clase y las distintas capas (tetrad-lib, tetrad-gui, causal-
cmd) se hizo uso del plugin easyUML para Netbeans, creando un diagrama de clase de las “clases” que se
relacionan directamente en uso, composición o agregación con la clase PCStable. Esta herramienta presenta
muchas limitaciones, es por eso que emigramos al IDE Eclipse y a su herramienta de diagramación,
ObjectAISD UML, bastante completa y de mayor usabilidad que el plugin de Netbeans, easyUML. El
diagrama de clases de las clases adyacentes a la clase PCStable se detalla en la figura 2 de la sección Figuras.
Entre las clases que hacen una funcionalidad optima a la clase PCStable están las siguientes clases:
1. PCStable
2. TetradLogger
3. GraphSearch
4. PrintStream
5. SepsetMap
6. IKnowledge
7. IndependenceTest
8. Graph
9. Object
10. PCStable (Clase de conexión con la capa de interfaz gráfica)
11. Algorithm
12. HasKnowledge
13. IndependenceWrapper
14. TakesInitialGraph
A continuación, se hará un análisis de cada clase con su respectiva funcionalidad:
PCStable: Clase que implementa el algoritmo Peter Clark y toda la formulación para elaboración las
simulaciones correspondientes y las fórmulas que reflejan el “Causal Learning” o aprendizaje en base de la
estadística. Esta clase refleja relaciones de uso (debido a la herencia de la clase Object), y la implementación
de los métodos y procedimientos de la clase GraphSearch. (La clase, con sus métodos y atributos se detallan
en la figura 4) El seudocódigo del algoritmo Peter-Clark (PC) se encuentra explicada en la figura 15.
TetradLogger: Es utilizado como registro por tetrad. Diferenciando con un logger, uno puede fijar los
acontecimientos que necesitan ser registrados. Esto se hace dando al registrador un TetradLoggerConfig que
se usará para determinar si algún evento debe ser registrado.
Aunque se puede construir explícitamente instancia de TetradLoggerConfig y establecerlas en el registrador,
Esta clase detalla la configuración de la mayoría de los modelos que se definen en el archivo
configuration.xml y se agregan al registrador al inicio. Además, el registrador admite el registro en una
secuencia de archivos en algún directorio. En la práctica para iniciar el registro en un nuevo archivo en el
directorio de registro (asumiendo que se ha establecido), se llama a setNextOutputStream para eliminar esta
secuencia de la llamada de registrador removeNextOutputStream. (La clase, con sus métodos y atributos se
detallan en la figura 5).
GraphSearch: Interfaz contenedora del método que retornara un grafo a la clase PCStable. (La clase, con
sus métodos y atributos se detallan en la figura 6).
4
PrintStream: Agrega funcionalidad a otro flujo de salida, teniendo la capacidad de imprimir
representaciones de varios valores de datos convenientemente. Esta clase de flujo de salida nunca lanza una
IOException, simplemente establece un indicador interno que puede probarse a través del método
checkError. Este método de descarga se invoca automáticamente después de escribir una matriz de bytes, se
invoca uno de los métodos println o se escribe un carácter de nueva línea o byte (' n'). Todos los caracteres
impresos por un PrintStream se convierten en bytes utilizando la codificación de caracteres por defecto de
la plataforma. (La clase, con sus métodos y atributos se detallan en la figura 7).
Object: Es una clase abstracta, interfaz, que es una referencia de un objeto CORBA, siendo un identificador
para un determinado objeto CORBA implementado por un servidor. Una referencia de objeto CORBA
identifica el mismo objeto cada vez que se utiliza la referencia para invocar un método en el objeto. Un
objeto CORBA puede tener referencias de objetos múltiples y distintos. Un objeto CORBA puede ser local
o remoto. Si es un objeto local (es ejecutado en la misma VM –virtual machine- que el cliente), las
invocaciones pueden ser atendidas directamente por la instancia del objeto y la referencia del objeto podría
apuntar a la instancia real de la clase de implementación del objeto. Si un objeto CORBA es un objeto remoto
(es ejecutado en una máquina virtual diferente del cliente), la referencia del objeto apunta a un stub (proxy)
que utiliza la maquinaria ORB para realizar una invocación remota en el servidor donde reside la
implementación del objeto. (La clase, con sus métodos y atributos se detallan en la figura 8).
Object: En este ensayo no se menciona a profundidad a la clase Object (SUPERCLASE) ya que es la madre
de todas las jerarquías creadas para un sistema, en TETRAD V, se utiliza en casi su completitud y sobrescribe
métodos (toString y una gran cantidad de métodos) para sus uso por algunas clases.
SepsetMap: Esta clase almacena un mapa de pares de nodos a conjuntos de separación, es decir, para cada
par no desordenado de nodos {node1, node2} en una gráfica, almacena un conjunto de nodos condicionales
en los que el nodo1 y el nodo2 son independientes (donde los nodos se consideran como variables) o
almacena null si el par no fue juzgado como independiente. (Tenga en cuenta que, si un sepset es no nulo y
vacío, que debería significar que los nodos comparados se encontraron independientes condicionales en el
conjunto vacío, mientras que, si un sepset es nulo, lo que debería significar que no se encontró ningún
conjunto, pero condicional en el que los nodos comparados son independientes. Así al final de la búsqueda,
un sepset nulo lleva información diferente de un sepset vacío.) (La clase, con sus métodos y atributos se
detallan en la figura 9).
Graph: Implementa un gráfico capaz de almacenar bordes. Esta clase se estipula extendiendo
TetradSerializable, en la cual todos los gráficos donde se implementan esta interfaz son Serializable. Esto es
porque para Tetrad deben ser serializable. por RandomUtil, para poder cancelar todas las operaciones, deben
ser Serializable. (La clase, con sus métodos y atributos se detallan en la figura 10).
IKnowledge: Interfaz para el conocimiento de bordes prohibidos y requeridos. En el transcurso del proyecto
es implementado, de diversas maneras, en distintas clases de distintos paquetes. (La clase, con sus métodos
y atributos se detallan en la figura 11).
IndependenceTest: Interfaz implementada por clases que hacen pruebas de independencia condicional.
Estas clases son capaces de servir como independencia condicional "Oracle" para búsquedas basadas en
restricciones. (La clase, con sus métodos y atributos se detallan en la figura 12).
El análisis de la clase PCStable junto a las clases directamente asemejadas mediante “relaciones” de uso,
agregación y/o composición, junto con la documentación provista por el creador, mediante los libros dieron
como resultado el entendimiento de la manera en que se resuelven los problemas de Causal Learning, y como
se puede implementar en un software para realizar el aprendizaje automático, y posiblemente utilizarlo en
futuros proyectos tales como el desarrollo de máquinas de estado finito, o autómatas independientes, que
aprendan de la heurística, a pesar de ser un campo ya desarrollado, aún quedan investigaciones que mejoraran
este campo de la Informática.
En la figura 13, se aprecia las dependencias relacionadas en segundo grado a la clase PCStable,
evidenciándose la complejidad que conlleva el proyecto y lo conveniente para los estudiantes en el análisis
de código para el aprendizaje de buenas prácticas de programación.
ANALISIS TEORICO DE LOS ALGORITMOS IMPLEMENTADOS.
Para entender el porqué del proyecto analizado, se debe empezar a analizar el entorno en el cual fue
5
planteado, es por eso que resulta importante analizar el aprendizaje causal. Este concepto define en el cómo
aprendemos por qué ocurren las cosas se encuentra entre las habilidades más útiles que nuestra mente y la
de otros animales es capaz de exhibir. Este concepto nos ayuda a entender cómo reaccionan los seres
humanos y animales antes las acciones realizadas, y así implantarlas como un algoritmo para el desarrollo
en la informática. Este planteamiento lleva a describir algunos datos experimentales obtenidos en el
laboratorio que muestran que animales y humanos acertamos y erramos de manera similar a la hora de
aprender relaciones causales.
Para esclarecer este concepto se propone estos ejemplos: “Si colocamos una olla de agua en el fuego para
cocinar, lo hacemos con la seguridad de que el fuego hará que el agua se caliente hasta hervir, aunque no
podamos observar directamente el mecanismo por el que el fuego hace hervir el agua. Cuando un ratón come
un alimento en mal estado y enferma, evitará en el futuro los alimentos con ese olor, aunque no haya nada
en la sensación olfativa concreta que diga que sea la ingestión de la comida lo que ha originado el dolor de
estómago.” Esta habilidad para realizar inferencias causales es muy útil para realizar predicciones e
imprescindible para la supervivencia. En la informática se implementa mediante la aplicación de ciertos
datos estadísticos, que puedan prever el comportamiento en el futuro, siendo este mayormente seguro, pero
no totalmente seguro de que suceda.
El concepto de Aprendizaje Causal se aplica en el Aprendizaje Automático el cual es aplicado en el campo
de investigación y práctica de la inteligencia artificial donde se experimentan los agentes informáticos y
como pueden mejorar su percepción, conocimiento y acción con la experiencia.
Otro concepto que considera el proyecto en su desarrollo e implementación es el Algoritmo de Inferencia
Causal Rápida Avanzada (GFCI) para Variables Continuas, el cual es un algoritmo que toma como entrada
un conjunto de datos de variables continuas y genera un modelo gráfico llamado PAG, que es una
representación de un conjunto de redes causales que pueden incluir factores de confusión ocultos. El PAG
que GFCIc devuelve sirve como una hipótesis soportada por datos sobre las relaciones causales que existen
entre las variables en el conjunto de datos. Tales modelos pretenden ayudar a los científicos a formular
hipótesis y guiar el diseño de experimentos para investigar estas hipótesis. Como se mencionó, GFCIc no
presupone que no haya factores de confusión ocultos.
GFCIc tiene los siguientes requisitos para la entrada de datos:
 Los datos (de entrenamiento) están en una tabla en la que las columnas representan variables, las
filas representan muestras y el valor de cada variable en una muestra es continuo.
 La primera fila de la tabla enumera los nombres de las variables, que deben ser únicos; Los datos y
los nombres de las variables están separados por un delimitador.
Algunos de los parámetros clave tomados por GFCI son los siguientes:
 Alpha: Nivel de significancia utilizado en las pruebas de independencia condicional.
 Data: El archivo de datos.
 Exclude-variables: Un archivo que contiene variables que se deben excluir.
 Fidelidad-asumida: Si se establece en "sí", significa que siempre que dos variables sean
marginalmente independientes, entonces FGESc no considerará la posibilidad de añadir un borde
entre ellos. En ese caso, el algoritmo se acelera, pero puede producir errores adicionales en la salida
en ciertas circunstancias inusuales. El valor predeterminado es "sí".
 Conocimiento: El usuario puede especificar el conocimiento proporcionando un archivo que
describe la precedencia y los bordes requeridos y / o prohibidos en la estructura que se emite. Por
defecto, el algoritmo no asume ningún conocimiento previo sobre la estructura del diagrama causal
 Grado máximo: El grado máximo del gráfico permitido en la fase FGES del GFCI.
 Out: Directorio de salida del archivo que contiene la salida PAG.
 Penalty-discount: La especificación de un parámetro de penalización de complejidad c que se utiliza
en la ecuación BIC en FGESc. El valor predeterminado es 4.
 Hilo: Número de subprocesos a utilizar en la ejecución de GFCI cuando hay varios núcleos
disponibles.
6
Otro de los algoritmos implementados en el proyecto y que refleja los conocimientos propuestos por el
algoritmo Peter Clark es el Algoritmo de búsqueda rápida de equivalencia codiciosa (FGES) para variables
continuas. Según refleja Heckerman [2], este es un algoritmo que toma como entrada un conjunto de datos
de variables continuas, procede en la búsqueda ávida de las estructuras (modelos) seleccionadas de la red
bayesiana causal (modelos) y genera el modelo de puntuación más alto que encuentra. El modelo FGSc
devuelve sirve como una hipótesis soportada por datos sobre las relaciones causales que existen entre las
variables en el conjunto de datos. Tales modelos pretenden ayudar a los científicos a formular hipótesis y
guiar el diseño de experimentos controlados para investigar estas hipótesis.
Según Lagani [3] y CCD-FGES [6], FGESc utiliza el Criterio Bayesiano de Información (BIC) [Raftery,
1995] para anotar modelos, lo que aproxima la probabilidad marginal de los datos dados una estructura
gráfica M: P. precisamente, se aproxima al logaritmo natural de la probabilidad marginal. En particular, BIC
se define como sigue: 300 px
“Donde M denota una estructura CBN, denota el valor de los parámetros CBN (por ejemplo, coeficientes y
términos de error en un modelo de regresión) que maximizan los datos, k son el número de parámetros en el
CBN, n es el número de muestras (casos), Yc es una constante que es 1 en la definición tradicional de BIC,
pero que permitimos ser cualquier número mayor que uno; Los números más altos tienden a producir
estructuras más pequeñas de CBN. “[3]
Los criterios bayesianos de información son algoritmos que buscan heurísticamente el espacio de CBNs y
devuelve el modelo con la puntuación más alta que encuentra. En particular, GES comienza su búsqueda con
el gráfico vacío. A continuación, realiza una búsqueda progresiva en el que los bordes se añaden entre los
nodos con el fin de aumentar la puntuación Bayesiana. Este proceso continúa hasta que ninguna adición de
borde único aumenta la puntuación. Finalmente, realiza una búsqueda de pasos hacia atrás que elimina los
bordes hasta que ninguna eliminación de borde único puede aumentar la puntuación
“Los algoritmos FGES también son usadas para variables discretas, definiéndose como FGESd, el cual se
define como un algoritmo que toma como entrada un conjunto de datos de variables discretas, busca con avidez
las estructuras de la red bayesiana causal seleccionada (CBN) y genera el modelo de puntuación más alto que
encuentra. El modelo que FGESd devuelve sirve como una hipótesis soportada por datos sobre las relaciones
causales que existen entre las variables en el conjunto de datos. Tales modelos pretenden ayudar a los
científicos a formular hipótesis y guiar el diseño de experimentos para investigar estas hipótesis. “[6]
Una estructura CBN es un grafo acíclico dirigido en el que los nodos representan variables y los arcos
representan la causación directa entre los nodos, donde el significado de directo es relativo a los nodos en el
CBN.
A parte del aprendizaje causal antes tratado, uno de los temas que también participan en este ensayo de
análisis del proyecto TETRAD con su respectivo software es el aprendizaje supervisado. Este concepto,
Kotsiantis [18], define como una técnica para deducir una función a partir de datos de entrenamiento. Estos
datos de entrenamiento consisten de pares de objetos (por lo general vectores): una componente del par son
los datos de entrada y el otro, los resultados deseados. La salida de la función puede ser un valor numérico
(como en problemas de regresión) o una etiqueta de clase (como en los de clasificación). El objetivo del
aprendizaje supervisado es el de crear una función capaz de predecir el valor correspondiente a cualquier
objeto de entrada válida después de haber visto una serie de ejemplos, los datos de entrenamiento. Para ello,
tiene que generalizar a partir de los datos presentados a las situaciones no vistas previamente.
El aprendizaje supervisado puede generar modelos de dos tipos. Por lo general, genera una función que
transforma los datos de entrada en los resultados deseados.
Con el fin de resolver un determinado problema de aprendizaje supervisado uno tiene que considerar varios
pasos:
1. Determinar el tipo de ejemplos de entrenamiento. Antes de hacer cualquier otra cosa, hay que decidir
qué tipo de datos se va a utilizar para entrenar el modelo. Por ejemplo, podría ser un único carácter
a mano, una palabra completa escrita a mano, o toda una línea de escritura a mano.
7
2. Reunir un conjunto de entrenamiento. El conjunto de necesidades de formación a las características
propias del uso del mundo real de la función. Por lo tanto, un conjunto de objetos de entrada que se
recopila y salidas correspondientes se recogen también, ya sea humana o de los expertos a partir de
mediciones.
3. Determinar la función de ingreso de la representación de la función aprendido. La precisión de la
función aprendida depende en gran medida de cómo el objeto de entrada está representado.
Normalmente, el objeto de entrada se transforma en un vector de características, que contiene una
serie de características que son descriptivos del objeto. El número de características no debe ser
demasiado grande, a causa de la maldición de la dimensionalidad, pero debe ser lo suficientemente
grande como para predecir con precisión la salida.
4. Determinar la estructura de la función adecuada para resolver y el problema y la técnica de
aprendizaje correspondiente. Por ejemplo, se podría optar por utilizar red neuronal artificial o
un árbol de decisión.
5. Completar el diseño. El ingeniero a continuación, ejecuta el algoritmo de aprendizaje en el conjunto
de la formación obtenida. Parámetros del algoritmo de aprendizaje puede ser ajustado mediante la
optimización de rendimiento en un subconjunto de ellas (llamado conjunto de validación) del
conjunto de entrenamiento, o por medio de la validación cruzada. Después del ajuste de parámetros
y de aprendizaje, el desempeño del algoritmo se puede medir utilizando un conjunto de pruebas
independiente del de entrenamiento.
Otro término para el aprendizaje supervisado es la clasificación. Una amplia gama de clasificadores está
disponible, cada uno con sus fortalezas y debilidades. Clasificador rendimiento depende en gran medida de
las características de los datos que deben clasificarse. No hay una clasificación única que funciona mejor en
todos los problemas dados, lo que también se conoce como el No hay almuerzo gratis teorema. Diversas
pruebas empíricas se han realizado para comparar el rendimiento del clasificador y para encontrar las
características de los datos que determinan el rendimiento del clasificador. La determinación de un
clasificador adecuado para un problema dado, sin embargo, aún más un arte que una ciencia. [Kotsiantis, 18]
Los clasificadores más utilizados son las redes neuronales, como él (perceptrón multicapa); las máquinas de
vectores de soporte; el algoritmo de los K-vecinos más cercanos, los modelos de mixturas; el clasificador
bayesiano ingenuo, el cual se analizó con anterioridad; los árboles de decisión y las funciones de base radial.
Todos los conceptos antes mencionados fueron los necesarios para entender el proyecto de una manera
superficial, ya que cada tipo de aprendizaje (causal y supervisado), en conjunto de los algoritmos antes
definidos y sus subyacentes subtemas conllevan una complejidad equiparable a los 25 años de desarrollo de
todo este sistema que incorpora el aprendizaje para inteligencia artificial.
PROCEDIMIENTO PARA CREAR UNA SIMULACION
Para dar inicio al procedimiento para efectuar una simulación, dados unos datos recolectados por heurística,
se detallan con imágenes que relatan el paso a paso. Esto se realiza para no dificultar la comprensión ni el
aprendizaje del lector.
8
PASOS:
1.- Creación de distintos nodos según los tipos de modelos apropiados
2.-Modificación de los Nodos y aristas pertenecientes al modelo de ecuación estructural del grafo.
9
3.-Cotas SIN Errores:
4.- Agregacion de Errores a las Cotas :
10
5.- Eleccion del adecuado tipo de modelo de instanciacion.
6.- Eleccion de los parametros estativos para estructura SEM IM (Motores de busqueda).
7.- Variacion del Modelo de Instanciacion con respecto al inicial, mediante los datos de relacion entre los
nodos del grafo realizado.
11
8.- Variacion del modelo de Instanciacion con respecto al inicial con numeros elegidos apegados a la
realidad, para tener una simulacion apegada a situaciones del diario vivir.
12
9.-Cambio de parámetros del Modelo de Instanciacion SEM, ingreso de datos reales.
10.- Obtencion del grafo dirigido, con relaciones univocas entre nodos.
11- Resultado de las Simulación
13
.
6 Graficos de ayuda.
6.1 Figuras y Tablas
Figura 1: Jerarquía de la clase Tetrad.java.
Figura 2: Diagrama de clases de PCStable
14
Figura 4: Implementación de la clase PCStable
Figura 5: Implementación de la clase TetradLogger
15
Figura 6: Implementación de la interfaz GraphSearch.
Figura 7: Implementación de la interfaz PrintStream.
16
Figura 8: Implementación de la interfaz Object.
Figura 9: Implementación de la clase SepsetMap.
17
Figura 10: Implementación de la clase Graph.
Figura 11: Implementación de la interfaz IKnowledge.
18
Figura 12: Implementación de la interfaz IndependenceTest.
Figura 13: Clases dependientes en segundo grado a PCStable
0
19
Figura 14: Seudocódigo del algoritmo PC
7 Sección Final
7.1 Materiales & Métodos
Las herramientas utilizadas para el análisis y precedentemente el entendimiento y aislamiento de la clase
mencionada con anterioridad fueron las siguientes, para consultar tales herramientas, se detalla el
hipervínculo en la sección de Bibliografía:
 GITHUB: Repositorio Git o de control de versiones basado en web y servicio de alojamiento de
Internet
 NETBEANS IDE: Entorno de desarrollo integrado libre, hecho principalmente para el lenguaje de
programación Java.
 OBJECTAID UML for ECLIPSE: Plugin para Eclipse IDE para la elaboración de diagramas UML a
partir de código.
 ECLIPSE IDE: Plataforma de software compuesto por un conjunto de herramientas de
programación de código abierto multiplataforma para desarrollar lo que el proyecto llama
"Aplicaciones de Cliente Enriquecido".
 EasyUML: Herramienta para crear diagrama UML para Netbeans, proporciona funciones para crear
y trabajar fácilmente con diagramas UML.
 Mendeley for Mozilla Firefox: Herramienta que facilita al escritor el referenciación bibliográfico en
la norma deseada, en el caso del ensayo, se cita con la norma IEEE-ACM.
DOCUMENTACION PROVISTA POR LOS AUTORES COMO PARTE DE DOCUMENTACION DEL
PROYECTO (Las más usadas en este ensayo se añadieron a la Bibliografía)
 Apache Maven: Herramienta de gestión de proyectos de software y de comprensión, basado en el
concepto de un modelo de objeto de proyecto (POM), gestiona la compilación, elaboración de
informes y documentación de un proyecto a partir de una información central.
20
 Herramienta de documentación:
Plugins Apache Maven:
Maven Clean Plugin
Maven Deploy Plugin
Maven Install Plugin
Maven Javadoc Plugin
Maven Project Info Reports Plugin
Maven Site Plugin
8 Conclusión
Concluimos después del análisis del proyecto diversos puntos, entre los cuales están:
 La implementación a pesar de ser engorrosa y amplia, a sido bien distribuida, documentada y
que permite un rápido entendimiento a comparación de un proyecto que hubiera sido mal
distribuido, o que hubiera tenido malos hábitos de análisis y programación.
 El ensayo analizo el proyecto TETRAD V, al iniciar las investigaciones para este ensayo estaba
disponible esta versión de TETRAD. Casi finalizando esta investigación los creadores del
proyecto TETRAD hicieron un cambio de versión, teniendo como resultado TETRAD VI. Este
cambio, puede generar otra investigación más avanzada que la explicada en este ensayo. Es
por eso que recomendamos a los lectores revisar esta nueva versión, sus mejoras y cambios en
la implementación.
 Concluimos a su vez, que antes del uso del proyecto como tal, el lector revise primero las
investigaciones realizadas, que explican el punto de vista de usuario, bastante distinto al de los
creadores con la documentación que ellos proveen. A si tendrá una experiencia de calidad en
el uso de esta.
 Se concluye que, a pesar de tener un exitoso desarrollo, el proyecto al hacer uso de Java, se
corta de recurso computacionales. Java al ser un lenguaje interpretado y compilado, y al no
manejar funciones por paso de referencia, hace uso de más recursos de memoria. Este paso de
parámetros, facilita a la hora de programar, pero hace engorroso el proceso de desarrollo con
sistemas grandes. Es por eso que el autor de este ensayo se guarda la siguiente preferencia, al
querer guardar el paradigma de desarrollo (P.O.O) se recomienda el uso de C++, una
aproximación a la filosofía de C, que maneja los recursos de una manera óptima. Pero os
recursos serían excelentemente usados si su usara la programación estructurada, haciendo uso
del lenguaje C.
 Concluimos y recomendamos la revisión de las herramientas utilizadas, Apache Maven a pesar
de ser una herramienta para procesos de automatización de compilación por excelencia, no es
el único ni el mejor, un ejemplo es la herramienta Gradle. Presenta ventajas tales como: Adaptar
convenciones de estructura de proyecto, los archivos se pueden modularizar, compartir e
importar. Ampliando la funcionalidad fácilmente, ya que tiene integración con sistemas de
integración continua tales como: Jenkins, ClinkerHQ, Consola. Conjuntamente con la
integración con la herramienta Maven, Ant, y demás, la flexibilidad, la posibilidad de
definición de nuevas tareas y el gestor de dependencias (Ivy), a comparación de las
características de Maven, hacen de Gradle una opción a considerar en el proceso de desarrollo
y documentación de un proyecto de software.
BIBLIOGRAFIA
HERRAMIENTAS UTILIZADAS EN EL ANÁLISIS DE LOS ALGORITMOS USADOS EN LA
IMPLEMENTACIÓN.
[1] ChickeringDM.Identificaciónóptimadelaestructuraconbúsqueda codiciosa. JournalofMachineLearningResearch3 (2002)507-554.
Http://www.jmlr.org/papers/volume3/chickering02b/chickering02b.pdf
[2] Heckerman D, Geiger D, Chickering M. Aprendizaje de redes Bayesianas: La combinación de conocimientos y datos estadísticos.
Aprendizaje Automático (1995) 197-243. Http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.222.5090&rep=rep1&type=pdf
[3] Lagani V, Triantafillou S, Bola G, Tegner J, Tsamardinos I. Descubrimiento causal computacional probabilístico para la biología de
sistemas. Incertidumbre en Biología 17 (2016) 33-73.
21
Http://www.mensxmachina.org/files/publications/Probabilistic%20Causal%20Discovery%20for%20Systems%20Biology_pr
ePrint.pdf
[4] Meek C. Inferencia causal y explicación causal con conocimiento de antecedentes. En: Actas de la Conferencia sobre Incertidumbre en
la Inteligencia Artificial (1995) 403-410. Https://arxiv.org/ftp/arxiv/papers/1302/1302.4972.pdf
[5] MeekC.ModelosGráficos: SeleccióndeModelosCausalesyEstadísticos. DoctorenFilosofía.Tesis,CarnegieMellonUniversity(1997).
[6] CCD-FGES (2016). Algoritmo de búsqueda rápida codiciosa (FGES) para variables continuas. Disponible en:
http://www.ccd.pitt.edu/wiki/index.php?title=Fast_Greedy_Search_(FGES)_Algorithm_for_Continuous_Variables
[7] Claasen T, Mooij JM, Heskes T (2013). El aprendizaje de modelos causales escasos no es NP-duro. Incertidumbre en la Inteligencia
Artificial, 29, 172-181. Colombo D, Maathuis MH, Kalisch M, Richardson TS (2012). Aprender gráficos acíclicos dirigidos de alta
dimensionalidad con variables latentes y de selección. Los AnalesdeEstadísticas, 40, 294-321. Lagani V, TriantafillouS, Bola G, Tegner
J, TsamardinosI (2016). El descubrimiento causal computacional probabilístico para la biología desistemas. Incertidumbreen Biología,
17, 33-73.
Http://www.mensxmachina.org/files/publications/Probabilistic%20Causal%20Discovery%20for%20Systems%20Biology_prePrint
.pdf
[8] Pete L. Clark. (2016) Research. Colombo D, Maathuis MH, Kalisch M, Richardson TS (2012)
http://alpha.math.uga.edu/~pete/papers.html
PLUGINS
[9] http://www.phil.cmu.edu/tetrad/maven/project-reports.html
[10] http://plugins.netbeans.org/plugin/55435/easyuml
[11] http://www.objectaid.com/
[12] http://alpha.math.uga.edu/~pete/papers.html
[13] http://www.phil.cmu.edu/index.html&usg=ALkJrhh6D0_meQ00n21drEiXQAxP5k2rVA
[14] https://www.cs.cmu.edu/afs/cs.cmu.edu/project/learn-43/lib/photoz/.g/scottd/fullbook.pdf
[15] http://www.ccd.pitt.edu/training/presentation-videos/
APRENDIZAJE CAUSAL
[16] Pete L. Clark. Probabilistic ideas and methods in analytic number theory (part I). (2013)
Http://paginaspersonales.deusto.es/matute/psicoteca/articulos/lopez&luque03.htm
APRENDIZAJE SUPERVISADO
[17] https://www.cs.cmu.edu/afs/cs.cmu.edu/project/learn-43/lib/photoz/.g/scottd/fullbook.pdf
[18] S. Kotsiantis, supervisado Aprendizaje Automático: Una Revisión de la Clasificación de las técnicas de Informática Diario
31 (2007) 249-268 (http://www.informatica.si/PDF/31-3/11_Kotsiantis% 20 -%%% 20Supervised 20Machine 20Learning
20% -% 20A% 20de% ... 20Review pdf).
[19] Lise Getoor y Taskar Ben: Introducciónaestadística de relación de aprendizaje, MIT Press, 2007

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
Fundamentos de programamacion c#
Fundamentos de programamacion c# Fundamentos de programamacion c#
Fundamentos de programamacion c#
 
Ensayo de programacion c
Ensayo de programacion cEnsayo de programacion c
Ensayo de programacion c
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Manual winqsb
Manual winqsbManual winqsb
Manual winqsb
 
Manual 2 mwinqsb
Manual 2 mwinqsbManual 2 mwinqsb
Manual 2 mwinqsb
 
Todo sobre C#
Todo sobre C#Todo sobre C#
Todo sobre C#
 
Programacion estructurada by Marcos Acosta
Programacion estructurada by Marcos AcostaProgramacion estructurada by Marcos Acosta
Programacion estructurada by Marcos Acosta
 
Javainv
JavainvJavainv
Javainv
 
Grupo 201
Grupo 201Grupo 201
Grupo 201
 
Lec11 metodos
Lec11 metodosLec11 metodos
Lec11 metodos
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
Consideraciones pragmatica
Consideraciones pragmaticaConsideraciones pragmatica
Consideraciones pragmatica
 
414
414414
414
 
Paradigmas de programacion
Paradigmas de programacionParadigmas de programacion
Paradigmas de programacion
 
FUNDAMENTOS DE PROGRAMACIÓN EN DISEÑO WEB
 FUNDAMENTOS DE PROGRAMACIÓN EN DISEÑO WEB FUNDAMENTOS DE PROGRAMACIÓN EN DISEÑO WEB
FUNDAMENTOS DE PROGRAMACIÓN EN DISEÑO WEB
 
P46 articulo gcc
P46 articulo gccP46 articulo gcc
P46 articulo gcc
 
Taller 2 conceptualizacion
Taller 2 conceptualizacionTaller 2 conceptualizacion
Taller 2 conceptualizacion
 
Correa correa juan_felipe
Correa correa juan_felipeCorrea correa juan_felipe
Correa correa juan_felipe
 

Similar a Analisis Proyecto TETRAD V

Arquitecturas y modelos de programación en computación grid (1)
Arquitecturas y modelos de programación en computación grid (1)Arquitecturas y modelos de programación en computación grid (1)
Arquitecturas y modelos de programación en computación grid (1)Tensor
 
Proyecto para programacion y estructura
Proyecto para programacion y estructuraProyecto para programacion y estructura
Proyecto para programacion y estructuraChristian Torres
 
U6 modelos para el diseño de hiperdocumentos
U6 modelos para el diseño de hiperdocumentosU6 modelos para el diseño de hiperdocumentos
U6 modelos para el diseño de hiperdocumentosSilvia Castañeda Quiroz
 
Framework en Software Libre para la implantación de aplicaciones web en el do...
Framework en Software Libre para la implantación de aplicaciones web en el do...Framework en Software Libre para la implantación de aplicaciones web en el do...
Framework en Software Libre para la implantación de aplicaciones web en el do...Manuel Mujica
 
Modelos y Lenguajes Para Computación Paralela
Modelos y Lenguajes Para Computación ParalelaModelos y Lenguajes Para Computación Paralela
Modelos y Lenguajes Para Computación ParalelaRicardo Montañana
 
Programacion multiagente con JADE
Programacion multiagente con JADEProgramacion multiagente con JADE
Programacion multiagente con JADEフ乇丂ひ丂
 
Actividad 14: Diseño de Algoritmos Paralelos
Actividad 14: Diseño de Algoritmos ParalelosActividad 14: Diseño de Algoritmos Paralelos
Actividad 14: Diseño de Algoritmos ParalelosCarlosHung9
 
diseno Componente3.ppt
diseno Componente3.pptdiseno Componente3.ppt
diseno Componente3.pptrafael405074
 

Similar a Analisis Proyecto TETRAD V (20)

Opcion 5 Certificacion
Opcion 5 CertificacionOpcion 5 Certificacion
Opcion 5 Certificacion
 
Programacion orientada a objetos Java
Programacion orientada a objetos JavaProgramacion orientada a objetos Java
Programacion orientada a objetos Java
 
Arquitecturas y modelos de programación en computación grid (1)
Arquitecturas y modelos de programación en computación grid (1)Arquitecturas y modelos de programación en computación grid (1)
Arquitecturas y modelos de programación en computación grid (1)
 
Manual de raptor
Manual de raptor Manual de raptor
Manual de raptor
 
MANUAL DE RAPTOR 2
MANUAL DE RAPTOR 2MANUAL DE RAPTOR 2
MANUAL DE RAPTOR 2
 
manual 12
manual 12manual 12
manual 12
 
Manual de raptor1
Manual de raptor1Manual de raptor1
Manual de raptor1
 
Manual de raptor
Manual de raptor Manual de raptor
Manual de raptor
 
Proyecto para programacion y estructura
Proyecto para programacion y estructuraProyecto para programacion y estructura
Proyecto para programacion y estructura
 
U6 modelos para el diseño de hiperdocumentos
U6 modelos para el diseño de hiperdocumentosU6 modelos para el diseño de hiperdocumentos
U6 modelos para el diseño de hiperdocumentos
 
Framework en Software Libre para la implantación de aplicaciones web en el do...
Framework en Software Libre para la implantación de aplicaciones web en el do...Framework en Software Libre para la implantación de aplicaciones web en el do...
Framework en Software Libre para la implantación de aplicaciones web en el do...
 
Diseño o.o
Diseño o.oDiseño o.o
Diseño o.o
 
Diseño o.o
Diseño o.oDiseño o.o
Diseño o.o
 
Modelos y Lenguajes Para Computación Paralela
Modelos y Lenguajes Para Computación ParalelaModelos y Lenguajes Para Computación Paralela
Modelos y Lenguajes Para Computación Paralela
 
Introduccion a haskell
Introduccion a haskellIntroduccion a haskell
Introduccion a haskell
 
Programacion o.o.
Programacion o.o.Programacion o.o.
Programacion o.o.
 
Pdf glo
Pdf gloPdf glo
Pdf glo
 
Programacion multiagente con JADE
Programacion multiagente con JADEProgramacion multiagente con JADE
Programacion multiagente con JADE
 
Actividad 14: Diseño de Algoritmos Paralelos
Actividad 14: Diseño de Algoritmos ParalelosActividad 14: Diseño de Algoritmos Paralelos
Actividad 14: Diseño de Algoritmos Paralelos
 
diseno Componente3.ppt
diseno Componente3.pptdiseno Componente3.ppt
diseno Componente3.ppt
 

Más de Universidad de Cuenca

Diapositivas GESTOR DE BASE DE DATOS UC::BD
Diapositivas GESTOR DE BASE DE DATOS UC::BDDiapositivas GESTOR DE BASE DE DATOS UC::BD
Diapositivas GESTOR DE BASE DE DATOS UC::BDUniversidad de Cuenca
 
Documentacion del Proyecto "Sistema de Monitoreo del Transito Vehicular en ev...
Documentacion del Proyecto "Sistema de Monitoreo del Transito Vehicular en ev...Documentacion del Proyecto "Sistema de Monitoreo del Transito Vehicular en ev...
Documentacion del Proyecto "Sistema de Monitoreo del Transito Vehicular en ev...Universidad de Cuenca
 
Documentacion del Proyecto "Sistema de Monitoreo del Transito Vehicular en ev...
Documentacion del Proyecto "Sistema de Monitoreo del Transito Vehicular en ev...Documentacion del Proyecto "Sistema de Monitoreo del Transito Vehicular en ev...
Documentacion del Proyecto "Sistema de Monitoreo del Transito Vehicular en ev...Universidad de Cuenca
 
Colecciones Parametrizadas, Mapas, Diccionarios
Colecciones Parametrizadas, Mapas, DiccionariosColecciones Parametrizadas, Mapas, Diccionarios
Colecciones Parametrizadas, Mapas, DiccionariosUniversidad de Cuenca
 
Colecciones Parametrizadas, Mapas, Diccionarios
Colecciones Parametrizadas, Mapas, DiccionariosColecciones Parametrizadas, Mapas, Diccionarios
Colecciones Parametrizadas, Mapas, DiccionariosUniversidad de Cuenca
 

Más de Universidad de Cuenca (16)

Web educativa
Web educativaWeb educativa
Web educativa
 
Practica 1 Electrizacion
Practica 1 Electrizacion Practica 1 Electrizacion
Practica 1 Electrizacion
 
PIM DM
PIM DMPIM DM
PIM DM
 
Diapositivas GESTOR DE BASE DE DATOS UC::BD
Diapositivas GESTOR DE BASE DE DATOS UC::BDDiapositivas GESTOR DE BASE DE DATOS UC::BD
Diapositivas GESTOR DE BASE DE DATOS UC::BD
 
Gestor de Base de Datos UC::BD
Gestor de Base de Datos UC::BDGestor de Base de Datos UC::BD
Gestor de Base de Datos UC::BD
 
Encriptacion HMAC
Encriptacion HMAC Encriptacion HMAC
Encriptacion HMAC
 
Algoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externoAlgoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externo
 
Algoritmos de Ordenamiento Externo.
Algoritmos de Ordenamiento Externo.Algoritmos de Ordenamiento Externo.
Algoritmos de Ordenamiento Externo.
 
Documentacion del Proyecto "Sistema de Monitoreo del Transito Vehicular en ev...
Documentacion del Proyecto "Sistema de Monitoreo del Transito Vehicular en ev...Documentacion del Proyecto "Sistema de Monitoreo del Transito Vehicular en ev...
Documentacion del Proyecto "Sistema de Monitoreo del Transito Vehicular en ev...
 
Documentacion del Proyecto "Sistema de Monitoreo del Transito Vehicular en ev...
Documentacion del Proyecto "Sistema de Monitoreo del Transito Vehicular en ev...Documentacion del Proyecto "Sistema de Monitoreo del Transito Vehicular en ev...
Documentacion del Proyecto "Sistema de Monitoreo del Transito Vehicular en ev...
 
Colecciones Parametrizadas, Mapas, Diccionarios
Colecciones Parametrizadas, Mapas, DiccionariosColecciones Parametrizadas, Mapas, Diccionarios
Colecciones Parametrizadas, Mapas, Diccionarios
 
Colecciones Parametrizadas, Mapas, Diccionarios
Colecciones Parametrizadas, Mapas, DiccionariosColecciones Parametrizadas, Mapas, Diccionarios
Colecciones Parametrizadas, Mapas, Diccionarios
 
Presentacion Resumen TETRAD V
Presentacion Resumen TETRAD VPresentacion Resumen TETRAD V
Presentacion Resumen TETRAD V
 
Pragmathematics 2014 lecture 4 (2)
Pragmathematics 2014 lecture 4 (2)Pragmathematics 2014 lecture 4 (2)
Pragmathematics 2014 lecture 4 (2)
 
Pragmathematics 2014 lecture 3 (2)
Pragmathematics 2014 lecture 3 (2)Pragmathematics 2014 lecture 3 (2)
Pragmathematics 2014 lecture 3 (2)
 
Pragmatehmatics bank-of-descriptors
Pragmatehmatics bank-of-descriptorsPragmatehmatics bank-of-descriptors
Pragmatehmatics bank-of-descriptors
 

Último

Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 

Último (7)

Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 

Analisis Proyecto TETRAD V

  • 1. Análisis del Proyecto “TETRAD V” Programación 3 Grupo # 2 Freddy L. Abad Leon, Jonnathan D. Cuvi Brito., Carlos R. Muñoz Godoy Abstract— This article was written with the purpose of explaining the functionality of the TETRAD V Project: its implementation, the issues it tries to solve and the utilities it provides to the user. Being a Project with a lifespan of more than 25 years, it is considered a strong Computer System. Which has taken the appropriate standards for the codification, using as paradigm of development the object-oriented paradigm, using the concepts of programming by layers, and some design patterns of software, becomes an appropriate Project for the analysis of its code by the students of programming. Resumen— Este artículo fue escrito con la finalidad de explicar la funcionalidad del Proyecto TETRAD V: su implementación, las temáticas que trata de resolver y las utilidades que brinda al usuario. Siendo un Proyecto con un tiempo de vida de más de 25 años se considera un Sistema informático fuerte para fines pedagógicos. El cual ha llevado los estándares apropiados para la codificación, usando como paradigma de desarrollo el paradigma orientado a objetos, empleando los conceptos de programación por capas, y algunos patrones de diseño de software, estas y demás razones hacen que este proyecto se convierta en un Proyecto apropiado para el análisis de su código por parte de los estudiantes de programación. Términos de Index— I.D.E. = Integrated Development Environment o Entorno de Desarrollo Integrado U.M.L.= Unified Modeling Language o Lenguaje de Modelado Unificado P.C.=Algoritmo Peter & Clark V.M = Virtual Machine O.R.B = Object Request Broker CORBA= Common Object Request Broker Architecture. M.L = Machine Learning I.A.=Inteligencia Artificial P.A. G= Partial Artificial Graph GFCI = Algoritmo de Inferencia Causal Rápida Avanzada FGES= Algoritmo de Búsqueda de Equivalencia Rápida Avanzada G.E.S. = Greedy Equivalence Search B.I.C=Criterio Bayesiano de Información A.P.I=Application Programming Interface ——————————  —————————— 1 Introducción L proyecto TETRAD, (proyecto de Licencia Pública General Menor GNU GPL v. 2) se centra en el descubrimiento causal , particularmente el problema de aprender acerca de la causalidad a partir de la evidencia estadística. Los alcances teóricos e informáticos del Proyecto se plasmaron en el software TETRAD (desde la versión I hasta la V). Este software se desarrolló con la finalidad de construir algoritmos eficaces y prácticamente útiles para el descubrimiento causal es tanto la informática como la filosofía. Este fue un gran esfuerzo en la construcción y la investigación de la eficacia del software educativo. El programa TETRAD V (Versión 5.3.0) se define como un sistema informático que crea, simula datos de estimaciones, pruebas, y predice o busca modelos causales y estadísticos. El objetivo principal del programa es proporcionar sofisticados métodos en una interfaz amigable que requiere muy poca sofisticación estadística del usuario y sin conocimientos de programación. El sistema TETRAD fue el resultado de la colaboración de Clark Glymour, Richard Scheines, Peter Spirtes, Joseph Ramsey, junto a estudiantes de posgrado de la Universidad de Carnegie Mellon. TETRAD es sistema único en el conjunto de algoritmos de búsqueda de principios que tiene la capacidad de buscar cuando puede haber confundidores no observados de variables medidas, tiene a su vez la capacidad de buscar modelos de estructura ————————————————  Abad, Freddy. Author is from the University of Cuenca, Av. 12 de abril, Av. Loja. E-mail: freddy.abadl@ucuenca.ec  Cuvi, Jonnathan. Author is from the University of Cuenca, Av. 12 de abril, Av. Loja. E-mail: jinnothan.cuvi @ucuenca.ec  Muñoz, Carlos. Author is from the University of Cuenca, Av. 12 de abril, Av. Loja. E-mail: carlos.munozg @ucuenca.ec E
  • 2. 2 latente y buscar modelos de retroalimentación lineal - y en la capacidad de calcular predicciones de los efectos de intervenciones o experimentos basados en un modelo. Todos sus procedimientos de búsqueda son coherentes con los puntos ya que se garantiza que convergen casi con toda seguridad para corregir la información sobre la estructura verdadera en el límite de la muestra grande, siempre que la estructura y los datos de la muestra satisfagan varios supuestos. TETRAD se limita a modelos de datos categóricos y a modelos lineales (modelos de ecuaciones estructurales) con una distribución de probabilidad Normal, debido a que son un tipo de clase muy limitada de modelos de series temporales. Los modelos causales se procesan en tres etapas distintas: una imagen, que representa un grafo dirigido que especifica hipotéticas relaciones causales entre las variables, una especificación de la familia de distribuciones de probabilidad y tipos de parámetros asociados con el modelo gráfico y una especificación de los valores numéricos de Parámetros. El Proyecto TETRAD V analizado en este ensayo se divide en distintas partes: 1.- Descarga e implementación en un IDE (Netbeans & Eclipse). 2.- Análisis del código de las tres capas en las cuales fueron desarrolladas el Proyecto (tetrad-lib, tetrad-gui, causal-cmd). 3.- Elaboración de los apropiados diagramas para el entendimiento del código implementado, usando el plugin ObjectAid UML Explorer para Eclipse IDE. 4.- Análisis de la clase PC-Stable con las recurrentes clases asociadas por relaciones de uso, agregación o composición. 3.- Elaboración de los apropiados diagramas para el entendimiento de la clase PCStable, usando el plugin ObjectAid UML Explorer para Eclipse IDE. 4.- Generación de conclusiones respecto al proyecto, las metodologías de uso, y las recomendaciones de manipulación del software. 2 Procedimiento Como primera parte del análisis, se procedió a clonar el repositorio de github.org en el IDE elegido (Netbeans), siguiendo la táctica preferida de clonación. Al tener listo el proyecto integrado en el IDE, se detectó la incertidumbre de que clase contenga el main que llame a ejecución todos los packages del proyecto, y en general la clase que contenga el main ‘principal’ del proyecto. En este punto, la clase que manda a ejecutar el main principal es la clase Tetrad.java, perteneciente a la capa tetrad-gui (la jerarquía de la clase se detalla en la figura 1). Esta etapa de análisis del proyecto, pueden referenciar una buena práctica de análisis, desarrollo y programación de código, que es revisar las dependencias requeridas por el sistema. Estas dependencias, internas o externas, se referencian mediante la palabra reservada “import”, estas dependencias son de extremada importancia. Las dependencias internas, son importantes debido a los métodos que son implementados mediante relaciones de uso (herencia), agregación o composición, generando el destacado concepto de la Programación Orientada a Objetos, el POLIMORFISMO, ayudando a desarrollados a la reutilización de código, nombres de métodos, nombres de procedimientos, funciones entre otras. Las dependencias externas, mas importantes aun, ya que el desarrollador puede conocer a profundidad, pero los lectores del código, pueden llegar a tener conceptos erróneos de este, debido a que no están implementados en código explícitamente en el proyecto escrito por los desarrolladores, es decir, referencia a una dependencia que esta subido en un servidor, a disposición del público mediante internet, dos ejemplos de dependencias utilizadas son: xml-apis y xercesimpl. El análisis de estas dependencias, internas o externas, ayudara a conocer los posibles errores entre máquina y máquina, las pruebas heurísticas en un grupo de estudiantes evidencio este punto, ya que las variantes de arquitectura de computador, los procesadores o simplemente las dependencias instaladas previamente, en los
  • 3. 3 computadores, hacen que entre la máquina de un estudiante A y la máquina de un estudiante B, no corra satisfactoriamente el proyecto. A partir de este momento, el proyecto TETRAD V corrió sin ningún problema, pudiendo analizar la funcionalidad desde el punto de vista de usuario, permitiéndonos elaborar la simulación que se detalla en la sección 2.3, a partir de distintos nodos y tablas de datos, previstos de determinados errores. Para la comprensión del código, las jerarquías de clase y las distintas capas (tetrad-lib, tetrad-gui, causal- cmd) se hizo uso del plugin easyUML para Netbeans, creando un diagrama de clase de las “clases” que se relacionan directamente en uso, composición o agregación con la clase PCStable. Esta herramienta presenta muchas limitaciones, es por eso que emigramos al IDE Eclipse y a su herramienta de diagramación, ObjectAISD UML, bastante completa y de mayor usabilidad que el plugin de Netbeans, easyUML. El diagrama de clases de las clases adyacentes a la clase PCStable se detalla en la figura 2 de la sección Figuras. Entre las clases que hacen una funcionalidad optima a la clase PCStable están las siguientes clases: 1. PCStable 2. TetradLogger 3. GraphSearch 4. PrintStream 5. SepsetMap 6. IKnowledge 7. IndependenceTest 8. Graph 9. Object 10. PCStable (Clase de conexión con la capa de interfaz gráfica) 11. Algorithm 12. HasKnowledge 13. IndependenceWrapper 14. TakesInitialGraph A continuación, se hará un análisis de cada clase con su respectiva funcionalidad: PCStable: Clase que implementa el algoritmo Peter Clark y toda la formulación para elaboración las simulaciones correspondientes y las fórmulas que reflejan el “Causal Learning” o aprendizaje en base de la estadística. Esta clase refleja relaciones de uso (debido a la herencia de la clase Object), y la implementación de los métodos y procedimientos de la clase GraphSearch. (La clase, con sus métodos y atributos se detallan en la figura 4) El seudocódigo del algoritmo Peter-Clark (PC) se encuentra explicada en la figura 15. TetradLogger: Es utilizado como registro por tetrad. Diferenciando con un logger, uno puede fijar los acontecimientos que necesitan ser registrados. Esto se hace dando al registrador un TetradLoggerConfig que se usará para determinar si algún evento debe ser registrado. Aunque se puede construir explícitamente instancia de TetradLoggerConfig y establecerlas en el registrador, Esta clase detalla la configuración de la mayoría de los modelos que se definen en el archivo configuration.xml y se agregan al registrador al inicio. Además, el registrador admite el registro en una secuencia de archivos en algún directorio. En la práctica para iniciar el registro en un nuevo archivo en el directorio de registro (asumiendo que se ha establecido), se llama a setNextOutputStream para eliminar esta secuencia de la llamada de registrador removeNextOutputStream. (La clase, con sus métodos y atributos se detallan en la figura 5). GraphSearch: Interfaz contenedora del método que retornara un grafo a la clase PCStable. (La clase, con sus métodos y atributos se detallan en la figura 6).
  • 4. 4 PrintStream: Agrega funcionalidad a otro flujo de salida, teniendo la capacidad de imprimir representaciones de varios valores de datos convenientemente. Esta clase de flujo de salida nunca lanza una IOException, simplemente establece un indicador interno que puede probarse a través del método checkError. Este método de descarga se invoca automáticamente después de escribir una matriz de bytes, se invoca uno de los métodos println o se escribe un carácter de nueva línea o byte (' n'). Todos los caracteres impresos por un PrintStream se convierten en bytes utilizando la codificación de caracteres por defecto de la plataforma. (La clase, con sus métodos y atributos se detallan en la figura 7). Object: Es una clase abstracta, interfaz, que es una referencia de un objeto CORBA, siendo un identificador para un determinado objeto CORBA implementado por un servidor. Una referencia de objeto CORBA identifica el mismo objeto cada vez que se utiliza la referencia para invocar un método en el objeto. Un objeto CORBA puede tener referencias de objetos múltiples y distintos. Un objeto CORBA puede ser local o remoto. Si es un objeto local (es ejecutado en la misma VM –virtual machine- que el cliente), las invocaciones pueden ser atendidas directamente por la instancia del objeto y la referencia del objeto podría apuntar a la instancia real de la clase de implementación del objeto. Si un objeto CORBA es un objeto remoto (es ejecutado en una máquina virtual diferente del cliente), la referencia del objeto apunta a un stub (proxy) que utiliza la maquinaria ORB para realizar una invocación remota en el servidor donde reside la implementación del objeto. (La clase, con sus métodos y atributos se detallan en la figura 8). Object: En este ensayo no se menciona a profundidad a la clase Object (SUPERCLASE) ya que es la madre de todas las jerarquías creadas para un sistema, en TETRAD V, se utiliza en casi su completitud y sobrescribe métodos (toString y una gran cantidad de métodos) para sus uso por algunas clases. SepsetMap: Esta clase almacena un mapa de pares de nodos a conjuntos de separación, es decir, para cada par no desordenado de nodos {node1, node2} en una gráfica, almacena un conjunto de nodos condicionales en los que el nodo1 y el nodo2 son independientes (donde los nodos se consideran como variables) o almacena null si el par no fue juzgado como independiente. (Tenga en cuenta que, si un sepset es no nulo y vacío, que debería significar que los nodos comparados se encontraron independientes condicionales en el conjunto vacío, mientras que, si un sepset es nulo, lo que debería significar que no se encontró ningún conjunto, pero condicional en el que los nodos comparados son independientes. Así al final de la búsqueda, un sepset nulo lleva información diferente de un sepset vacío.) (La clase, con sus métodos y atributos se detallan en la figura 9). Graph: Implementa un gráfico capaz de almacenar bordes. Esta clase se estipula extendiendo TetradSerializable, en la cual todos los gráficos donde se implementan esta interfaz son Serializable. Esto es porque para Tetrad deben ser serializable. por RandomUtil, para poder cancelar todas las operaciones, deben ser Serializable. (La clase, con sus métodos y atributos se detallan en la figura 10). IKnowledge: Interfaz para el conocimiento de bordes prohibidos y requeridos. En el transcurso del proyecto es implementado, de diversas maneras, en distintas clases de distintos paquetes. (La clase, con sus métodos y atributos se detallan en la figura 11). IndependenceTest: Interfaz implementada por clases que hacen pruebas de independencia condicional. Estas clases son capaces de servir como independencia condicional "Oracle" para búsquedas basadas en restricciones. (La clase, con sus métodos y atributos se detallan en la figura 12). El análisis de la clase PCStable junto a las clases directamente asemejadas mediante “relaciones” de uso, agregación y/o composición, junto con la documentación provista por el creador, mediante los libros dieron como resultado el entendimiento de la manera en que se resuelven los problemas de Causal Learning, y como se puede implementar en un software para realizar el aprendizaje automático, y posiblemente utilizarlo en futuros proyectos tales como el desarrollo de máquinas de estado finito, o autómatas independientes, que aprendan de la heurística, a pesar de ser un campo ya desarrollado, aún quedan investigaciones que mejoraran este campo de la Informática. En la figura 13, se aprecia las dependencias relacionadas en segundo grado a la clase PCStable, evidenciándose la complejidad que conlleva el proyecto y lo conveniente para los estudiantes en el análisis de código para el aprendizaje de buenas prácticas de programación. ANALISIS TEORICO DE LOS ALGORITMOS IMPLEMENTADOS. Para entender el porqué del proyecto analizado, se debe empezar a analizar el entorno en el cual fue
  • 5. 5 planteado, es por eso que resulta importante analizar el aprendizaje causal. Este concepto define en el cómo aprendemos por qué ocurren las cosas se encuentra entre las habilidades más útiles que nuestra mente y la de otros animales es capaz de exhibir. Este concepto nos ayuda a entender cómo reaccionan los seres humanos y animales antes las acciones realizadas, y así implantarlas como un algoritmo para el desarrollo en la informática. Este planteamiento lleva a describir algunos datos experimentales obtenidos en el laboratorio que muestran que animales y humanos acertamos y erramos de manera similar a la hora de aprender relaciones causales. Para esclarecer este concepto se propone estos ejemplos: “Si colocamos una olla de agua en el fuego para cocinar, lo hacemos con la seguridad de que el fuego hará que el agua se caliente hasta hervir, aunque no podamos observar directamente el mecanismo por el que el fuego hace hervir el agua. Cuando un ratón come un alimento en mal estado y enferma, evitará en el futuro los alimentos con ese olor, aunque no haya nada en la sensación olfativa concreta que diga que sea la ingestión de la comida lo que ha originado el dolor de estómago.” Esta habilidad para realizar inferencias causales es muy útil para realizar predicciones e imprescindible para la supervivencia. En la informática se implementa mediante la aplicación de ciertos datos estadísticos, que puedan prever el comportamiento en el futuro, siendo este mayormente seguro, pero no totalmente seguro de que suceda. El concepto de Aprendizaje Causal se aplica en el Aprendizaje Automático el cual es aplicado en el campo de investigación y práctica de la inteligencia artificial donde se experimentan los agentes informáticos y como pueden mejorar su percepción, conocimiento y acción con la experiencia. Otro concepto que considera el proyecto en su desarrollo e implementación es el Algoritmo de Inferencia Causal Rápida Avanzada (GFCI) para Variables Continuas, el cual es un algoritmo que toma como entrada un conjunto de datos de variables continuas y genera un modelo gráfico llamado PAG, que es una representación de un conjunto de redes causales que pueden incluir factores de confusión ocultos. El PAG que GFCIc devuelve sirve como una hipótesis soportada por datos sobre las relaciones causales que existen entre las variables en el conjunto de datos. Tales modelos pretenden ayudar a los científicos a formular hipótesis y guiar el diseño de experimentos para investigar estas hipótesis. Como se mencionó, GFCIc no presupone que no haya factores de confusión ocultos. GFCIc tiene los siguientes requisitos para la entrada de datos:  Los datos (de entrenamiento) están en una tabla en la que las columnas representan variables, las filas representan muestras y el valor de cada variable en una muestra es continuo.  La primera fila de la tabla enumera los nombres de las variables, que deben ser únicos; Los datos y los nombres de las variables están separados por un delimitador. Algunos de los parámetros clave tomados por GFCI son los siguientes:  Alpha: Nivel de significancia utilizado en las pruebas de independencia condicional.  Data: El archivo de datos.  Exclude-variables: Un archivo que contiene variables que se deben excluir.  Fidelidad-asumida: Si se establece en "sí", significa que siempre que dos variables sean marginalmente independientes, entonces FGESc no considerará la posibilidad de añadir un borde entre ellos. En ese caso, el algoritmo se acelera, pero puede producir errores adicionales en la salida en ciertas circunstancias inusuales. El valor predeterminado es "sí".  Conocimiento: El usuario puede especificar el conocimiento proporcionando un archivo que describe la precedencia y los bordes requeridos y / o prohibidos en la estructura que se emite. Por defecto, el algoritmo no asume ningún conocimiento previo sobre la estructura del diagrama causal  Grado máximo: El grado máximo del gráfico permitido en la fase FGES del GFCI.  Out: Directorio de salida del archivo que contiene la salida PAG.  Penalty-discount: La especificación de un parámetro de penalización de complejidad c que se utiliza en la ecuación BIC en FGESc. El valor predeterminado es 4.  Hilo: Número de subprocesos a utilizar en la ejecución de GFCI cuando hay varios núcleos disponibles.
  • 6. 6 Otro de los algoritmos implementados en el proyecto y que refleja los conocimientos propuestos por el algoritmo Peter Clark es el Algoritmo de búsqueda rápida de equivalencia codiciosa (FGES) para variables continuas. Según refleja Heckerman [2], este es un algoritmo que toma como entrada un conjunto de datos de variables continuas, procede en la búsqueda ávida de las estructuras (modelos) seleccionadas de la red bayesiana causal (modelos) y genera el modelo de puntuación más alto que encuentra. El modelo FGSc devuelve sirve como una hipótesis soportada por datos sobre las relaciones causales que existen entre las variables en el conjunto de datos. Tales modelos pretenden ayudar a los científicos a formular hipótesis y guiar el diseño de experimentos controlados para investigar estas hipótesis. Según Lagani [3] y CCD-FGES [6], FGESc utiliza el Criterio Bayesiano de Información (BIC) [Raftery, 1995] para anotar modelos, lo que aproxima la probabilidad marginal de los datos dados una estructura gráfica M: P. precisamente, se aproxima al logaritmo natural de la probabilidad marginal. En particular, BIC se define como sigue: 300 px “Donde M denota una estructura CBN, denota el valor de los parámetros CBN (por ejemplo, coeficientes y términos de error en un modelo de regresión) que maximizan los datos, k son el número de parámetros en el CBN, n es el número de muestras (casos), Yc es una constante que es 1 en la definición tradicional de BIC, pero que permitimos ser cualquier número mayor que uno; Los números más altos tienden a producir estructuras más pequeñas de CBN. “[3] Los criterios bayesianos de información son algoritmos que buscan heurísticamente el espacio de CBNs y devuelve el modelo con la puntuación más alta que encuentra. En particular, GES comienza su búsqueda con el gráfico vacío. A continuación, realiza una búsqueda progresiva en el que los bordes se añaden entre los nodos con el fin de aumentar la puntuación Bayesiana. Este proceso continúa hasta que ninguna adición de borde único aumenta la puntuación. Finalmente, realiza una búsqueda de pasos hacia atrás que elimina los bordes hasta que ninguna eliminación de borde único puede aumentar la puntuación “Los algoritmos FGES también son usadas para variables discretas, definiéndose como FGESd, el cual se define como un algoritmo que toma como entrada un conjunto de datos de variables discretas, busca con avidez las estructuras de la red bayesiana causal seleccionada (CBN) y genera el modelo de puntuación más alto que encuentra. El modelo que FGESd devuelve sirve como una hipótesis soportada por datos sobre las relaciones causales que existen entre las variables en el conjunto de datos. Tales modelos pretenden ayudar a los científicos a formular hipótesis y guiar el diseño de experimentos para investigar estas hipótesis. “[6] Una estructura CBN es un grafo acíclico dirigido en el que los nodos representan variables y los arcos representan la causación directa entre los nodos, donde el significado de directo es relativo a los nodos en el CBN. A parte del aprendizaje causal antes tratado, uno de los temas que también participan en este ensayo de análisis del proyecto TETRAD con su respectivo software es el aprendizaje supervisado. Este concepto, Kotsiantis [18], define como una técnica para deducir una función a partir de datos de entrenamiento. Estos datos de entrenamiento consisten de pares de objetos (por lo general vectores): una componente del par son los datos de entrada y el otro, los resultados deseados. La salida de la función puede ser un valor numérico (como en problemas de regresión) o una etiqueta de clase (como en los de clasificación). El objetivo del aprendizaje supervisado es el de crear una función capaz de predecir el valor correspondiente a cualquier objeto de entrada válida después de haber visto una serie de ejemplos, los datos de entrenamiento. Para ello, tiene que generalizar a partir de los datos presentados a las situaciones no vistas previamente. El aprendizaje supervisado puede generar modelos de dos tipos. Por lo general, genera una función que transforma los datos de entrada en los resultados deseados. Con el fin de resolver un determinado problema de aprendizaje supervisado uno tiene que considerar varios pasos: 1. Determinar el tipo de ejemplos de entrenamiento. Antes de hacer cualquier otra cosa, hay que decidir qué tipo de datos se va a utilizar para entrenar el modelo. Por ejemplo, podría ser un único carácter a mano, una palabra completa escrita a mano, o toda una línea de escritura a mano.
  • 7. 7 2. Reunir un conjunto de entrenamiento. El conjunto de necesidades de formación a las características propias del uso del mundo real de la función. Por lo tanto, un conjunto de objetos de entrada que se recopila y salidas correspondientes se recogen también, ya sea humana o de los expertos a partir de mediciones. 3. Determinar la función de ingreso de la representación de la función aprendido. La precisión de la función aprendida depende en gran medida de cómo el objeto de entrada está representado. Normalmente, el objeto de entrada se transforma en un vector de características, que contiene una serie de características que son descriptivos del objeto. El número de características no debe ser demasiado grande, a causa de la maldición de la dimensionalidad, pero debe ser lo suficientemente grande como para predecir con precisión la salida. 4. Determinar la estructura de la función adecuada para resolver y el problema y la técnica de aprendizaje correspondiente. Por ejemplo, se podría optar por utilizar red neuronal artificial o un árbol de decisión. 5. Completar el diseño. El ingeniero a continuación, ejecuta el algoritmo de aprendizaje en el conjunto de la formación obtenida. Parámetros del algoritmo de aprendizaje puede ser ajustado mediante la optimización de rendimiento en un subconjunto de ellas (llamado conjunto de validación) del conjunto de entrenamiento, o por medio de la validación cruzada. Después del ajuste de parámetros y de aprendizaje, el desempeño del algoritmo se puede medir utilizando un conjunto de pruebas independiente del de entrenamiento. Otro término para el aprendizaje supervisado es la clasificación. Una amplia gama de clasificadores está disponible, cada uno con sus fortalezas y debilidades. Clasificador rendimiento depende en gran medida de las características de los datos que deben clasificarse. No hay una clasificación única que funciona mejor en todos los problemas dados, lo que también se conoce como el No hay almuerzo gratis teorema. Diversas pruebas empíricas se han realizado para comparar el rendimiento del clasificador y para encontrar las características de los datos que determinan el rendimiento del clasificador. La determinación de un clasificador adecuado para un problema dado, sin embargo, aún más un arte que una ciencia. [Kotsiantis, 18] Los clasificadores más utilizados son las redes neuronales, como él (perceptrón multicapa); las máquinas de vectores de soporte; el algoritmo de los K-vecinos más cercanos, los modelos de mixturas; el clasificador bayesiano ingenuo, el cual se analizó con anterioridad; los árboles de decisión y las funciones de base radial. Todos los conceptos antes mencionados fueron los necesarios para entender el proyecto de una manera superficial, ya que cada tipo de aprendizaje (causal y supervisado), en conjunto de los algoritmos antes definidos y sus subyacentes subtemas conllevan una complejidad equiparable a los 25 años de desarrollo de todo este sistema que incorpora el aprendizaje para inteligencia artificial. PROCEDIMIENTO PARA CREAR UNA SIMULACION Para dar inicio al procedimiento para efectuar una simulación, dados unos datos recolectados por heurística, se detallan con imágenes que relatan el paso a paso. Esto se realiza para no dificultar la comprensión ni el aprendizaje del lector.
  • 8. 8 PASOS: 1.- Creación de distintos nodos según los tipos de modelos apropiados 2.-Modificación de los Nodos y aristas pertenecientes al modelo de ecuación estructural del grafo.
  • 9. 9 3.-Cotas SIN Errores: 4.- Agregacion de Errores a las Cotas :
  • 10. 10 5.- Eleccion del adecuado tipo de modelo de instanciacion. 6.- Eleccion de los parametros estativos para estructura SEM IM (Motores de busqueda). 7.- Variacion del Modelo de Instanciacion con respecto al inicial, mediante los datos de relacion entre los nodos del grafo realizado.
  • 11. 11 8.- Variacion del modelo de Instanciacion con respecto al inicial con numeros elegidos apegados a la realidad, para tener una simulacion apegada a situaciones del diario vivir.
  • 12. 12 9.-Cambio de parámetros del Modelo de Instanciacion SEM, ingreso de datos reales. 10.- Obtencion del grafo dirigido, con relaciones univocas entre nodos. 11- Resultado de las Simulación
  • 13. 13 . 6 Graficos de ayuda. 6.1 Figuras y Tablas Figura 1: Jerarquía de la clase Tetrad.java. Figura 2: Diagrama de clases de PCStable
  • 14. 14 Figura 4: Implementación de la clase PCStable Figura 5: Implementación de la clase TetradLogger
  • 15. 15 Figura 6: Implementación de la interfaz GraphSearch. Figura 7: Implementación de la interfaz PrintStream.
  • 16. 16 Figura 8: Implementación de la interfaz Object. Figura 9: Implementación de la clase SepsetMap.
  • 17. 17 Figura 10: Implementación de la clase Graph. Figura 11: Implementación de la interfaz IKnowledge.
  • 18. 18 Figura 12: Implementación de la interfaz IndependenceTest. Figura 13: Clases dependientes en segundo grado a PCStable 0
  • 19. 19 Figura 14: Seudocódigo del algoritmo PC 7 Sección Final 7.1 Materiales & Métodos Las herramientas utilizadas para el análisis y precedentemente el entendimiento y aislamiento de la clase mencionada con anterioridad fueron las siguientes, para consultar tales herramientas, se detalla el hipervínculo en la sección de Bibliografía:  GITHUB: Repositorio Git o de control de versiones basado en web y servicio de alojamiento de Internet  NETBEANS IDE: Entorno de desarrollo integrado libre, hecho principalmente para el lenguaje de programación Java.  OBJECTAID UML for ECLIPSE: Plugin para Eclipse IDE para la elaboración de diagramas UML a partir de código.  ECLIPSE IDE: Plataforma de software compuesto por un conjunto de herramientas de programación de código abierto multiplataforma para desarrollar lo que el proyecto llama "Aplicaciones de Cliente Enriquecido".  EasyUML: Herramienta para crear diagrama UML para Netbeans, proporciona funciones para crear y trabajar fácilmente con diagramas UML.  Mendeley for Mozilla Firefox: Herramienta que facilita al escritor el referenciación bibliográfico en la norma deseada, en el caso del ensayo, se cita con la norma IEEE-ACM. DOCUMENTACION PROVISTA POR LOS AUTORES COMO PARTE DE DOCUMENTACION DEL PROYECTO (Las más usadas en este ensayo se añadieron a la Bibliografía)  Apache Maven: Herramienta de gestión de proyectos de software y de comprensión, basado en el concepto de un modelo de objeto de proyecto (POM), gestiona la compilación, elaboración de informes y documentación de un proyecto a partir de una información central.
  • 20. 20  Herramienta de documentación: Plugins Apache Maven: Maven Clean Plugin Maven Deploy Plugin Maven Install Plugin Maven Javadoc Plugin Maven Project Info Reports Plugin Maven Site Plugin 8 Conclusión Concluimos después del análisis del proyecto diversos puntos, entre los cuales están:  La implementación a pesar de ser engorrosa y amplia, a sido bien distribuida, documentada y que permite un rápido entendimiento a comparación de un proyecto que hubiera sido mal distribuido, o que hubiera tenido malos hábitos de análisis y programación.  El ensayo analizo el proyecto TETRAD V, al iniciar las investigaciones para este ensayo estaba disponible esta versión de TETRAD. Casi finalizando esta investigación los creadores del proyecto TETRAD hicieron un cambio de versión, teniendo como resultado TETRAD VI. Este cambio, puede generar otra investigación más avanzada que la explicada en este ensayo. Es por eso que recomendamos a los lectores revisar esta nueva versión, sus mejoras y cambios en la implementación.  Concluimos a su vez, que antes del uso del proyecto como tal, el lector revise primero las investigaciones realizadas, que explican el punto de vista de usuario, bastante distinto al de los creadores con la documentación que ellos proveen. A si tendrá una experiencia de calidad en el uso de esta.  Se concluye que, a pesar de tener un exitoso desarrollo, el proyecto al hacer uso de Java, se corta de recurso computacionales. Java al ser un lenguaje interpretado y compilado, y al no manejar funciones por paso de referencia, hace uso de más recursos de memoria. Este paso de parámetros, facilita a la hora de programar, pero hace engorroso el proceso de desarrollo con sistemas grandes. Es por eso que el autor de este ensayo se guarda la siguiente preferencia, al querer guardar el paradigma de desarrollo (P.O.O) se recomienda el uso de C++, una aproximación a la filosofía de C, que maneja los recursos de una manera óptima. Pero os recursos serían excelentemente usados si su usara la programación estructurada, haciendo uso del lenguaje C.  Concluimos y recomendamos la revisión de las herramientas utilizadas, Apache Maven a pesar de ser una herramienta para procesos de automatización de compilación por excelencia, no es el único ni el mejor, un ejemplo es la herramienta Gradle. Presenta ventajas tales como: Adaptar convenciones de estructura de proyecto, los archivos se pueden modularizar, compartir e importar. Ampliando la funcionalidad fácilmente, ya que tiene integración con sistemas de integración continua tales como: Jenkins, ClinkerHQ, Consola. Conjuntamente con la integración con la herramienta Maven, Ant, y demás, la flexibilidad, la posibilidad de definición de nuevas tareas y el gestor de dependencias (Ivy), a comparación de las características de Maven, hacen de Gradle una opción a considerar en el proceso de desarrollo y documentación de un proyecto de software. BIBLIOGRAFIA HERRAMIENTAS UTILIZADAS EN EL ANÁLISIS DE LOS ALGORITMOS USADOS EN LA IMPLEMENTACIÓN. [1] ChickeringDM.Identificaciónóptimadelaestructuraconbúsqueda codiciosa. JournalofMachineLearningResearch3 (2002)507-554. Http://www.jmlr.org/papers/volume3/chickering02b/chickering02b.pdf [2] Heckerman D, Geiger D, Chickering M. Aprendizaje de redes Bayesianas: La combinación de conocimientos y datos estadísticos. Aprendizaje Automático (1995) 197-243. Http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.222.5090&rep=rep1&type=pdf [3] Lagani V, Triantafillou S, Bola G, Tegner J, Tsamardinos I. Descubrimiento causal computacional probabilístico para la biología de sistemas. Incertidumbre en Biología 17 (2016) 33-73.
  • 21. 21 Http://www.mensxmachina.org/files/publications/Probabilistic%20Causal%20Discovery%20for%20Systems%20Biology_pr ePrint.pdf [4] Meek C. Inferencia causal y explicación causal con conocimiento de antecedentes. En: Actas de la Conferencia sobre Incertidumbre en la Inteligencia Artificial (1995) 403-410. Https://arxiv.org/ftp/arxiv/papers/1302/1302.4972.pdf [5] MeekC.ModelosGráficos: SeleccióndeModelosCausalesyEstadísticos. DoctorenFilosofía.Tesis,CarnegieMellonUniversity(1997). [6] CCD-FGES (2016). Algoritmo de búsqueda rápida codiciosa (FGES) para variables continuas. Disponible en: http://www.ccd.pitt.edu/wiki/index.php?title=Fast_Greedy_Search_(FGES)_Algorithm_for_Continuous_Variables [7] Claasen T, Mooij JM, Heskes T (2013). El aprendizaje de modelos causales escasos no es NP-duro. Incertidumbre en la Inteligencia Artificial, 29, 172-181. Colombo D, Maathuis MH, Kalisch M, Richardson TS (2012). Aprender gráficos acíclicos dirigidos de alta dimensionalidad con variables latentes y de selección. Los AnalesdeEstadísticas, 40, 294-321. Lagani V, TriantafillouS, Bola G, Tegner J, TsamardinosI (2016). El descubrimiento causal computacional probabilístico para la biología desistemas. Incertidumbreen Biología, 17, 33-73. Http://www.mensxmachina.org/files/publications/Probabilistic%20Causal%20Discovery%20for%20Systems%20Biology_prePrint .pdf [8] Pete L. Clark. (2016) Research. Colombo D, Maathuis MH, Kalisch M, Richardson TS (2012) http://alpha.math.uga.edu/~pete/papers.html PLUGINS [9] http://www.phil.cmu.edu/tetrad/maven/project-reports.html [10] http://plugins.netbeans.org/plugin/55435/easyuml [11] http://www.objectaid.com/ [12] http://alpha.math.uga.edu/~pete/papers.html [13] http://www.phil.cmu.edu/index.html&usg=ALkJrhh6D0_meQ00n21drEiXQAxP5k2rVA [14] https://www.cs.cmu.edu/afs/cs.cmu.edu/project/learn-43/lib/photoz/.g/scottd/fullbook.pdf [15] http://www.ccd.pitt.edu/training/presentation-videos/ APRENDIZAJE CAUSAL [16] Pete L. Clark. Probabilistic ideas and methods in analytic number theory (part I). (2013) Http://paginaspersonales.deusto.es/matute/psicoteca/articulos/lopez&luque03.htm APRENDIZAJE SUPERVISADO [17] https://www.cs.cmu.edu/afs/cs.cmu.edu/project/learn-43/lib/photoz/.g/scottd/fullbook.pdf [18] S. Kotsiantis, supervisado Aprendizaje Automático: Una Revisión de la Clasificación de las técnicas de Informática Diario 31 (2007) 249-268 (http://www.informatica.si/PDF/31-3/11_Kotsiantis% 20 -%%% 20Supervised 20Machine 20Learning 20% -% 20A% 20de% ... 20Review pdf). [19] Lise Getoor y Taskar Ben: Introducciónaestadística de relación de aprendizaje, MIT Press, 2007