Me gustaría construir una red bayesiana en clojure, ya que no he encontrado ningún proyecto similar.Clojure DAG (red bayesiana)
He estudiado mucha teoría de la BN, pero aún no veo cómo implementar la red (no soy lo que la gente llama "gurú" para nada, pero especialmente no para la programación funcional).
Sé que un BN no es más que un DAG y una tabla de muchas probabilidades (una para cada nodo) pero ahora no tengo pegamento para implementar el DAG.
Mi primera idea era un gran conjunto (el DAG) con algunos mapas pequeños (el nodo del DAG), cada mapa debe tener un nombre (probablemente una clave) una tabla de probabilidades (¿otro mapa?) Un vector de padres y finalmente un vector de no -descendiente.
Ahora no sé cómo implementar la referencia de los padres y los no descendientes (lo que debería poner en los dos vectores). Supongo que un puntero debería ser perfecto, pero la ausencia de él; Podría poner en el vector el: nombre del otro nodo, pero va a ser lento, ¿no?
Estaba pensando que en lugar de un vector podría usar más conjunto, de esta manera sería más rápido encontrar los descendientes de un nodo.
Problema similar para la tabla de probabilidades donde todavía necesito alguna referencia en los otros nodos.
Finalmente también me gustaría aprender el BN (construir la red comenzando por los datos) esto significa que voy a cambiar mucho ambas tablas de probabilidad, borde y nodos.
¿Debo usar tipos mutables o solo aumentarían la complejidad?
Esta [ASUNTA] [1] puede ayudarlo. [1]: http: // stackoverflow.com/questions/3127890/clojure-or-scheme-bayesian-classification-libraries/3128224 # 3128224 – Ankur
Chas Emerick tiene una [charla sobre redes bayesianas] (http://blip.tv/clojure/chas-emerick-modeling-the -world-probabilistically-using-bayesian-networks-in-clojure-5961126) que dio un ClojureConj. Tenía información útil que puede responder algunas de las preguntas que tiene. – jszakmeister
... ahora en https://www.youtube.com/watch?v=xoSFcSqo1jQ – Thumbnail