Sviluppo software per il learning di reti Bayesiane gerarchiche
Creators: name: Posillico, Vincenzo
Publisher: name: Scuola Universitaria della Svizzera Italiana (SUPSI)
Year: 2020

description: Le reti Bayesiane rappresentano un metodo probabilistico di machine learning flessibile e adatto a rappresentare in modo sintetico, per mezzo di un grafo, relazioni multivariate tra numerose variabili. Recentemente è stata proposta una estensione, chiamata reti Bayesiane gerarchiche, che permette di imparare le relazioni tra variabili nel caso i dati derivino da una collezione di dataset correlati ma non identici tra di loro, che possono differire tra loro per esempio nel modo in cui i dati sono stati raccolti. Esempi possono essere trovati in trial clinici multi-centro, genomica e scienze ambientali. Questa estensione permette di imparare un grafo comune per i diversi gruppi di dati, tenendo però in considerazione le differenze tra i gruppi, e dei parametri specifici per ogni gruppo. Un codice prototipale per imparare i parametri e la struttura di reti Bayesiane gerarchiche è disponibile in R. In questo lavoro viene richiesto che venga tradotto in C e integrato all’interno della libreria R bnlearn per il learning delle reti Bayesiane. Parte del codice prototipale è stato quindi convertito in C o, nel caso di alcuni file R, adattato per renderlo compatibile a questo cambiamento. Rispettando la struttura della libreria bnlearn, è stata effettuata una corretta integrazione di questi elementi. Inoltre, le funzioni convertite, hanno portato a un miglioramento dell’88% nella velocità di esecuzione del codice. Bayesian networks are a flexible probabilistic machine learning method that represent in a synthetic way, by means of a graph, the multivariate relationship between different variables. A new extension of these models, named hierarchical Bayesian networks, was recently proposed. This extension allows to learn the relationships between variables when data are taken from a collection of related but not identical datasets, which may differ e.g. in the way data was collected. Such examples can be found in multicenter clinical trials, genomic ones and environmental science. This extension allows to learn of a common graph for different groups of data, by taking into consideration the differences among groups and by providing group specific parameters. Prototype code dedicated to hierarchical parameters and structure learning was already available in R. The aim of this project is the conversion of the prototype code in C and its integration into the bnlearn R package for Bayesian networks learning. Part of the prototype code was converted to C or, in the case of some R files, made compatible with the changes made. The integration of all the elements with the bnlearn library structure was successful. In addition, the converted functions led to an 88% performance improvement in the code execution speed. Le reti Bayesiane rappresentano un metodo probabilistico di machine learning flessibile e adatto a rappresentare in modo sintetico, per mezzo di un grafo, relazioni multivariate tra numerose variabili. Recentemente è stata proposta una estensione, chiamata reti Bayesiane gerarchiche, che permette di imparare le relazioni tra variabili nel caso i dati derivino da una collezione di dataset correlati ma non identici tra di loro, che possono differire tra loro per esempio nel modo in cui i dati sono stati raccolti. Esempi possono essere trovati in trial clinici multi-centro, genomica e scienze ambientali. Questa estensione permette di imparare un grafo comune per i diversi gruppi di dati, tenendo però in considerazione le differenze tra i gruppi, e dei parametri specifici per ogni gruppo. Un codice prototipale per imparare i parametri e la struttura di reti Bayesiane gerarchiche è disponibile in R. In questo lavoro viene richiesto che venga tradotto in C e integrato all’interno della libreria R bnlearn per il learning delle reti Bayesiane. Parte del codice prototipale è stato quindi convertito in C o, nel caso di alcuni file R, adattato per renderlo compatibile a questo cambiamento. Rispettando la struttura della libreria bnlearn, è stata effettuata una corretta integrazione di questi elementi. Inoltre, le funzioni convertite, hanno portato a un miglioramento dell’88% nella velocità di esecuzione del codice. Bayesian networks are a flexible probabilistic machine learning method that represent in a synthetic way, by means of a graph, the multivariate relationship between different variables. A new extension of these models, named hierarchical Bayesian networks, was recently proposed. This extension allows to learn the relationships between variables when data are taken from a collection of related but not identical datasets, which may differ e.g. in the way data was collected. Such examples can be found in multicenter clinical trials, genomic ones and environmental science. This extension allows to learn of a common graph for different groups of data, by taking into consideration the differences among groups and by providing group specific parameters. Prototype code dedicated to hierarchical parameters and structure learning was already available in R. The aim of this project is the conversion of the prototype code in C and its integration into the bnlearn R package for Bayesian networks learning. Part of the prototype code was converted to C or, in the case of some R files, made compatible with the changes made. The integration of all the elements with the bnlearn library structure was successful. In addition, the converted functions led to an 88% performance improvement in the code execution speed.