matematica:asd:asd_24:progetto_24
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
matematica:asd:asd_24:progetto_24 [16/06/2025 alle 18:44 (38 ore fa)] – Roberto Grossi | matematica:asd:asd_24:progetto_24 [16/06/2025 alle 22:14 (34 ore fa)] (versione attuale) – [Materiale utile] Roberto Grossi | ||
---|---|---|---|
Linea 4: | Linea 4: | ||
- | Le reti bayesiane sono modelli probabilistici che rappresentano un insieme di variabili aleatorie discrete e le loro dipendenze condizionate tramite un grafo aciclico orientato (DAG). Ogni nodo del grafo corrisponde a una variabile, mentre gli archi indicano relazioni di causalità o dipendenza statistica (CPT o tabelle di probabilità condizionale). La probabilità marginale di un nodo esprime la sua probabilità senza dipendenza. Le reti bayesiane sono ampiamente utilizzate in ambiti come diagnosi automatica, bioinformatica, | + | Le reti bayesiane sono modelli probabilistici che rappresentano un insieme di variabili aleatorie discrete e le loro dipendenze condizionate tramite un grafo aciclico orientato (DAG). Ogni nodo del grafo corrisponde a una variabile, mentre gli archi indicano relazioni di causalità o dipendenza statistica (tramite |
===== Obiettivi del progetto ===== | ===== Obiettivi del progetto ===== | ||
- | * Parsing: Leggere un file `.bif` che descrive una rete bayesiana con variabili | + | * //Parsing//: Leggere un file `.bif` che descrive una rete bayesiana con variabili |
- | * Build: Costruire il grafo aciclico orientato (DAG) associato alla rete. | + | * //Build//: Costruire il grafo aciclico orientato (DAG) associato alla rete, con i nodi annotati opportunamente per l' |
- | * Analyze: Per ogni variabile \( X \), calcolare la **probabilità marginale** \( P(X = x) \) per ciascun valore \( x \in \text{dom}(X) \). | + | * //Analyze//: Per ogni variabile \( X \), calcolare la **probabilità marginale** \( P(X = x) \) per ciascun valore \( x \in \text{dom}(X) \). |
| | ||
Nota: Verificare che la somma delle probabilità marginali di ciascuna variabile sia 1 (entro una tolleranza numerica). | Nota: Verificare che la somma delle probabilità marginali di ciascuna variabile sia 1 (entro una tolleranza numerica). | ||
Linea 16: | Linea 16: | ||
===== Struttura della rete bayesiana ===== | ===== Struttura della rete bayesiana ===== | ||
- | {{: | + | {{: |
Nell' | Nell' | ||
Linea 37: | Linea 37: | ||
</ | </ | ||
- | Le variabili sono booleane (`true`, `false`). Le tabelle CPT corrispondenti sono le seguenti: | + | Nella figura le variabili |
< | < | ||
Linea 71: | Linea 71: | ||
===== Calcolo della probabilità marginale ===== | ===== Calcolo della probabilità marginale ===== | ||
- | Per calcolare la probabilità marginale \( P(e = \text{true}) \), si può usare **enumerazione completa**. L'idea è quella di generare tutte le possibili configurazioni delle variabili | + | Per calcolare la probabilità marginale \( P(e = \text{true}) \), si può usare **l'enumerazione completa**. L'idea è quella di generare tutte le possibili configurazioni delle variabili |
- | + | ||
- | Esempio: | + | |
< | < | ||
Linea 82: | Linea 80: | ||
Dove: | Dove: | ||
* \( P(a) \) è la probabilità marginale di `a` (senza genitori) | * \( P(a) \) è la probabilità marginale di `a` (senza genitori) | ||
- | * \( P(b | a) \), \( P(c | a) \), \( P(d | b,c) \), \( P(e | a,c,d) \) sono lette dalle CPT | + | * \( P(b | a) \), \( P(c | a) \), \( P(d | b,c) \), \( P(e | a,c,d) \) sono le probabilità condizionali |
+ | |||
+ | // | ||
+ | |||
+ | Supponiamo di voler calcolare \( P(e = \text{true}) \). Consideriamo una configurazione: | ||
+ | |||
+ | < | ||
+ | a = true, b = true, c = false, d = true, e = true | ||
+ | </ | ||
+ | |||
+ | Il contributo alla somma sarà: | ||
+ | |||
+ | < | ||
+ | P(a) ⋅ P(b | a) ⋅ P(c | a) ⋅ P(d | b, c) ⋅ P(e = true | a, c, d) | ||
+ | = 0.5 ⋅ 0.8 ⋅ 0.4 ⋅ 0.7 ⋅ 0.75 | ||
+ | = 0.084 | ||
+ | </ | ||
+ | |||
+ | Si ripete questo calcolo per tutte le 16 combinazioni di (a, b, c, d), calcolando ogni volta il termine \( P(a)⋅P(b|a)⋅P(c|a)⋅P(d|b, | ||
**Passaggi consigliati: | **Passaggi consigliati: | ||
- | 1. Generare tutte le configurazioni booleane per le variabili \{a, b, c, d\} | ||
- | 2. Per ciascuna, calcolare la probabilità congiunta come prodotto dei termini | ||
- | 3. Sommare solo quelle in cui `e = true` | ||
- | Nota: Per ogni configurazione | + | - Costruire una funzione `joint_probability(assign)` che calcola la probabilità congiunta di una configurazione. |
+ | - Usare `visita topologica` per ordinare le variabili | ||
+ | - Generare tutte le configurazioni delle variabili rilevanti per `e`. | ||
+ | - Sommare solo quelle in cui `e = true`. | ||
- | ===== Requisiti tecnici ===== | + | Nota: Se la rete ha n variabili booleane, l’enumerazione completa ha complessità O(2^n). Per ridurre l’overhead computazionale, |
- | * Il DAG della rete sarà rappresentato con `vector< | ||
- | * Le tabelle di probabilità condizionate saranno lette dal file `.bif` e memorizzate in strutture C++ appropriate. | ||
- | * È consigliato l'uso di una visita topologica per ordinare le variabili nella corretta sequenza causale, per evitare la ricorsione. | ||
- | * Il codice dovrà essere leggibile e suddiviso in funzioni coerenti. | ||
===== Discussione ad alto livello sulla lettura del file .bif ===== | ===== Discussione ad alto livello sulla lettura del file .bif ===== | ||
Linea 124: | Linea 136: | ||
* Per ogni `probability`, | * Per ogni `probability`, | ||
- la variabile target; | - la variabile target; | ||
- | - i suoi genitori (se presenti); | + | - i suoi genitori (se presenti, costituiscono l' |
- la tabella CPT, che associa a ogni combinazione dei genitori un vettore di probabilità. | - la tabella CPT, che associa a ogni combinazione dei genitori un vettore di probabilità. | ||
Linea 165: | Linea 177: | ||
===== Materiale utile ===== | ===== Materiale utile ===== | ||
- | * Specifiche formato BIF: [[https:// | + | * Specifiche formato BIF: https:// |
* File zip di esempio : {{ : | * File zip di esempio : {{ : | ||
* Repository di reti bayesiane in vari formati, incluso BIF: [[https:// | * Repository di reti bayesiane in vari formati, incluso BIF: [[https:// |
matematica/asd/asd_24/progetto_24.1750099490.txt.gz · Ultima modifica: 16/06/2025 alle 18:44 (38 ore fa) da Roberto Grossi