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 (4 mesi fa)] – Roberto Grossi | matematica:asd:asd_24:progetto_24 [16/06/2025 alle 22:14 (4 mesi 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 (4 mesi fa) da Roberto Grossi
