Mattia Merenda
Logo

Saverio Mattia Merenda

Master's Student
University of Parma, Italy


1-introML.pdf

Introduce i concetti fondamentali dell’apprendimento automatico (Machine Learning).

1. Panoramica e Tipologie di Apprendimento

Il documento classifica l’apprendimento automatico classico in tre attività principali, distinte in base alla disponibilità di “dati di verità di base” (ground truth), ovvero la conoscenza preliminare dell’output corretto per un dato input:

2. Apprendimento Supervisionato

Questo approccio si divide generalmente in due contesti:

3. Concetti Fondamentali di Modellazione

Il documento approfondisce le sfide nella creazione dei modelli:

4. Apprendimento Semi-supervisionato

Questo metodo è utile quando etichettare tutti i dati è troppo costoso (es. rilevamento di messaggi inappropriati sui social network). Per funzionare, si basa su tre ipotesi fondamentali sui dati:

  1. Continuità: Punti vicini hanno probabilmente la stessa etichetta.
  2. Cluster: I dati formano gruppi discreti e i punti nello stesso gruppo condividono l’etichetta.
  3. Presupposto molteplice (Manifold): I dati ad alta dimensione si trovano approssimativamente su uno spazio di dimensioni inferiori.

5. Apprendimento Non Supervisionato

In assenza di etichette, non esiste un modo diretto per misurare le prestazioni. Le tecniche principali discusse sono:


2-classificazione-intro.pdf

Introduce i concetti chiave della classificazione nell’apprendimento supervisionato.

1. Concetti Fondamentali ed Esempi Introduttivi

Il documento inizia illustrando il concetto di classificazione attraverso esempi pratici.

2. Esempi di Domini Applicativi

Il testo presenta diversi scenari per spiegare la varietà dei problemi di classificazione:

3. Il Processo di Apprendimento (Training)

La classificazione automatica simula il processo di apprendimento biologico (come un topo che impara ad evitare una mattonella rossa che causa dolore).

4. Problemi Critici: Overfitting, Rumore e Outliers

5. Validazione e Costo degli Errori

Per valutare un classificatore non basta il Training Set:

6. Ciclo di Design di un Classificatore

Il documento conclude descrivendo le fasi operative per costruire un classificatore:

  1. Sensing: Raccolta dati dal mondo fisico.
  2. Segmentazione: Isolamento delle informazioni rilevanti.
  3. Estrazione delle Feature: Misurazione delle caratteristiche. È cruciale scegliere feature invarianti (es. il peso è meglio del colore se la luce cambia) e rilevanti.
  4. Classificazione: Esecuzione dell’algoritmo decisionale.
  5. Post-processing: Valutazione dei costi e degli errori.
  6. Decisione: Utilizzo finale del sistema.

3-classificazione-validazione.pdf

1. Differenza tra Regressione e Classificazione

Il documento inizia distinguendo i due compiti principali dell’apprendimento supervisionato:

2. Il Processo di Validazione

Per valutare un modello, i dati vengono divisi in Training Set (per addestrare il modello) e Test Set (per valutarne le performance su dati non visti). Oltre all’accuratezza, si considerano altri indici computazionali come la robustezza (gestione del rumore), la velocità (di training e predizione), la scalabilità e l’interpretabilità.

3. Matrice di Confusione e Metriche di Base

La valutazione si basa sul confronto tra la classe reale e quella predetta. Per un problema binario (classi A e B), si definiscono quattro casistiche nella Matrice di Confusione:

Da questi valori derivano gli indici di qualità fondamentali:

4. Il Problema dell’Accuratezza

L’Accuratezza (somma delle predizioni corrette diviso il totale) è una misura comune ma rischiosa in caso di dataset sbilanciati (es. 95% negativi e 5% positivi). In tali casi, un classificatore che predice sempre “negativo” avrebbe un’accuratezza del 95% pur essendo inutile. Si preferisce quindi l’Accuratezza Bilanciata, definita come la media aritmetica tra Sensitività (TPR) e Specificità (TNR).

5. Curve ROC e AUC

6. Valutazione Multi-classe

Quando ci sono più di due classi, le metriche devono essere aggregate:

7. Strategie di Cross-Validazione

Per validare la capacità di generalizzazione e evitare il Selection Bias (campionamento non rappresentativo), si usano tecniche di cross-validazione:


4-classificazione-algoritmi.pdf

Il documento analizza le principali famiglie di algoritmi per la classificazione, partendo dalla distinzione tra approcci Eager e Lazy, per poi approfondire alberi di decisione, metodi ensemble, SVM e classificatori probabilistici.

1. Approcci alla Classificazione: Eager vs Lazy

2. Algoritmi Lazy: k-Nearest Neighbors (kNN)

3. Alberi di Decisione

4. Metodi Ensemble

Questi metodi combinano più modelli per migliorare accuratezza e stabilità.

5. Support Vector Machines (SVM)

  1. Classificatori Probabilistici (Analisi Discriminante)
    • Teorema di Bayes: Usato per stimare la probabilità a posteriori che un dato appartenga a una classe.
    • LDA (Linear Discriminant Analysis): Assume che le classi seguano una distribuzione normale e abbiano la stessa matrice di covarianza. Produce frontiere di decisione lineari. È stabile e riduce la varianza.
    • QDA (Quadratic Discriminant Analysis): Assume che ogni classe abbia una propria matrice di covarianza. Produce frontiere non lineari (più flessibile della LDA ma richiede più dati).
    • MDA (Mixture Discriminant Analysis): Modella ogni classe come una miscela di gaussiane.

5-distribuzioni.pdf

Esplora il legame tra genomica, statistica e teoria dell’informazione.

1. Il Genoma come Informazione

Il documento introduce il DNA non solo come macromolecola biologica, ma come un “nastro” di memoria scritto nel linguaggio dei nucleotidi ($A, C, G, T$).

2. Teoria dell’Informazione e Cenni Storici

Viene tracciato un parallelo tra crittografia e analisi genomica.

3. Analisi delle Stringhe (String Analysis)

Vengono definite le proprietà formali delle sequenze genomiche:

4. Tipologie di Distribuzioni

Il documento classifica diversi modi di rappresentare quantitativamente i dati genomici:

5. Indici Statistici (Momenti)

Vengono descritti i momenti statistici per analizzare le distribuzioni:

6. Indici di Diversità

Mutuati dall’ecologia per misurare la “biodiversità” dei k-meri nel genoma:

7. Misure di Similarità e Distanza

Metodi per confrontare vettori, insiemi o stringhe:

8. Divergenze e Informazione Avanzata

Misure per confrontare distribuzioni di probabilità:


6-clustering-algoritmi.pdf

Il documento copre in modo approfondito le tecniche di Clustering (raggruppamento), una forma di apprendimento non supervisionato utilizzata per scoprire strutture nascoste nei dati senza l’uso di etichette predefinite.

1. Fondamenti del Clustering

2. Principali Famiglie di Algoritmi

Il documento classifica gli algoritmi in tre categorie principali: Partizionamento, Gerarchici e Basati sulla Densità.

A. Algoritmi di Partizionamento

Questi metodi dividono i dati in $k$ gruppi cercando di ottimizzare una funzione obiettivo (solitamente basata sulla distanza).

B. Algoritmi Gerarchici

Creano una decomposizione gerarchica dei dati, rappresentabile tramite un dendrogramma,.

C. Algoritmi Basati sulla Densità

Definiscono i cluster come regioni ad alta densità separate da regioni a bassa densità.

3. Algoritmi e Concetti Avanzati


7-clustering-valutazione.pdf

Il documento affronta la problematica della validazione del clustering, definita come la parte più difficile e frustrante dell’analisi dei cluster, ma essenziale per evitare che l’analisi rimanga un’“arte nera” basata solo sull’esperienza.

1. Obiettivi e Necessità della Validazione

L’obiettivo principale di un buon clustering è ottenere gruppi con alta similarità intra-classe (coesione) e bassa similarità inter-classe (separazione). La validazione è necessaria per:

2. Tipologie di Indici di Validazione

Gli indici si dividono principalmente in due categorie:

3. Validazione Interna (Senza Ground Truth)

Questi metodi usano solo i dati stessi per valutare la bontà del raggruppamento.

Determinazione del numero ottimale di cluster ($k$)

4. Validazione Gerarchica

Per i metodi gerarchici, si valuta quanto il dendrogramma rappresenti bene le distanze originali.

5. Validazione Esterna (Con Ground Truth)

Questi metodi confrontano i cluster ottenuti con una classificazione reale preesistente (“classi”).

6. Rilevamento degli Outlier

Il documento conclude trattando gli outlier, definiti come oggetti molto differenti dagli altri (es. frodi, errori medici).


8-grafi.pdf

Il documento copre la teoria dei grafi partendo dalle origini storiche fino agli algoritmi moderni per l’analisi di reti complesse, con un focus particolare sul rilevamento delle comunità (Community Detection).

1. Cenni Storici e Definizioni Fondamentali

Il testo individua la nascita della teoria dei grafi nel 1736 con la soluzione di Eulero al problema dei Sette Ponti di Königsberg, dimostrando l’impossibilità di attraversare tutti i ponti una sola volta e tornare al punto di partenza (circuito euleriano) se i nodi hanno grado dispari. Vengono introdotti altri problemi classici:

Definizioni: Un grafo $G=(V,E)$ è composto da vertici e lati. Il Lemma delle strette di mano stabilisce che la somma dei gradi è il doppio dei lati.

2. Modelli di Rete

Il documento distingue tra diverse tipologie di reti:

3. Misure di Centralità

Per identificare l’importanza topologica dei nodi, vengono definite diverse misure:

4. Algoritmi di Flusso su Grafi

Si analizza il problema del flusso massimo (es. acqua in tubature o dati in reti), dove ogni arco ha una capacità massima.

5. Random Walks e PageRank

Il documento introduce le Catene di Markov e i Random Walks (camminate casuali) sui grafi.

6. Community Detection (Rilevamento di Comunità)

Gran parte del documento è dedicata alla scoperta di strutture di comunità (gruppi densamente connessi) nelle reti.

Principali Algoritmi trattati:

  1. Algoritmo di Girvan-Newman (Divisivo): Rimuove iterativamente gli archi con la più alta betweenness centrality, poiché i ponti tra comunità sono attraversati da molti cammini minimi.
  2. MCL (Markov Cluster Algorithm): Simula flussi stocastici. Alterna fasi di Expansion (potenza della matrice) e Inflation (accentuazione delle differenze di probabilità) per separare i cluster.
  3. Algoritmo di Louvain: Metodo greedy veloce che ottimizza la modularità in due fasi ripetute: spostamento locale dei nodi e aggregazione della rete in meta-nodi. Tende però a trovare comunità disconnesse.
  4. Algoritmo di Leiden: Miglioramento di Louvain. Aggiunge una fase di raffinamento per garantire che le comunità siano ben connesse e accelera la convergenza.
  5. Clique Percolation (CFinder): Trova comunità sovrapposte basandosi sull’unione di k-clique (sottografi completi) adiacenti.
  6. Label Propagation (LPA): Ogni nodo adotta l’etichetta di maggioranza dei suoi vicini. È molto veloce e non richiede parametri a priori.
  7. Approcci Gerarchici: Usano matrici di similarità (es. sovrapposizione topologica) e tecniche di clustering gerarchico (single/complete linkage) per costruire dendrogrammi delle comunità.

11-ricerca.pdf

Tratta il tema del Problem Solving e degli Algoritmi di Ricerca nell’ambito dell’Intelligenza Artificiale.

1. Il Problem Solving e l’Approccio Razionale

Il documento definisce il Problem Solving (PS) come un processo intellettuale fondamentale che implica induzione, sussunzione e ragionamento. Viene introdotta la distinzione tra:

Esistono due approcci principali per costruire un Problem Solver:

  1. Human oriented (Cognitivista): Mira a simulare l’attività intelligente umana (es. General Problem Solver basato sull’Analisi Mezzi-Fini).
  2. Machine oriented (Comportamentale): Mira a manifestare attività intelligente, risolvendo il problema nel modo migliore possibile (approccio ingegneristico).

2. Formalizzazione come Ricerca nello Spazio degli Stati

Il Problem Solving viene formalizzato come una ricerca all’interno di uno “spazio degli stati”. Un problema è definito da una 5-tupla $P = {X, SCS, x_0, g, t}$ dove:

Una sfida cruciale è l’esplosione combinatoria: la forza bruta non è sufficiente per problemi complessi (es. il gioco del 15, scacchi, commesso viaggiatore).

Questi algoritmi esplorano lo spazio senza conoscenze specifiche sul dominio (euristiche).

Per migliorare l’efficienza, si utilizzano euristiche ($h(n)$), ovvero stime del costo rimanente per raggiungere l’obiettivo. La funzione di valutazione diventa $f(n) = g(n) + h(n)$, dove $g(n)$ è il costo per arrivare al nodo corrente e $h(n)$ è il costo stimato per arrivare alla fine.

Proprietà delle euristiche:

Algoritmi Euristici Principali:

5. Gestione della Memoria e Varianti Avanzate

Dato che A* consuma molta memoria, sono state sviluppate varianti:

6. Ricerca Bidirezionale

Consiste nell’avviare due ricerche simultanee: una dallo stato iniziale ($x_0$) in avanti e una dallo stato finale ($t$) all’indietro.

7. Ricerca Online e Real-Time

In scenari in cui l’agente non conosce l’intero spazio degli stati a priori ma lo scopre muovendosi (es. navigazione robotica):


13-metaeuristiche.pdf

Tratta gli algoritmi di ottimizzazione basati su euristiche avanzate, ispirati spesso a fenomeni naturali.

1. Definizione e Caratteristiche Generali

Le metaeuristiche sono procedure di alto livello progettate per risolvere problemi di ottimizzazione difficili, specialmente quando si hanno informazioni incomplete o capacità di calcolo limitate.

2. Algoritmi Basati su Soluzione Singola

3. Algoritmi Basati su Popolazione (Algoritmi Evolutivi)

4. Swarm Intelligence (Intelligenza di Sciame)

Si ispirano al comportamento collettivo di animali (insetti, uccelli) che, pur semplici individualmente, risolvono problemi complessi cooperando.


14-giochi.pdf

Analizza l’applicazione dell’Intelligenza Artificiale alla Teoria dei Giochi, passando dagli algoritmi di ricerca classici alle moderne tecniche di Reinforcement Learning.

1. Introduzione e Classificazione dei Giochi

Il documento introduce il Game Playing come un’estensione del Problem Solving in cui sono presenti agenti in competizione. Si fa riferimento alla “Teoria dei Giochi” (Von Neumann & Morgenstern, 1944) per analizzare comportamenti in cui le azioni di un individuo dipendono dalle scelte degli altri. I giochi vengono classificati in base a:

2. Giochi come Ricerca nello Spazio degli Stati

Per i giochi deterministici a informazione perfetta, si utilizza un albero di ricerca dove due giocatori, MAX (l’agente) e MIN (l’avversario), si alternano.

3. Euristiche e Ottimizzazione (Alpha-Beta Pruning)

Per gestire la complessità, si limita la ricerca a una certa profondità e si usano funzioni di valutazione euristica (es. peso dei pezzi negli scacchi) per stimare l’utilità dei nodi non terminali.

4. Varianti: Giochi Stocastici e Multigiocatore

5. Apprendimento per Rinforzo (Reinforcement Learning - RL)

L’approccio si sposta dal fornire regole al far apprendere un agente tramite interazione con l’ambiente (trial and error) per massimizzare una ricompensa cumulativa.

6. Monte Carlo Tree Search (MCTS)

Una famiglia di algoritmi che combina la ricerca ad albero con le simulazioni casuali. È asimmetrica: esplora più a fondo le parti “promettenti” dell’albero. Le 4 fasi di MCTS sono:

  1. Selezione: Si scende nell’albero usando una Tree Policy.
  2. Espansione: Si aggiunge un nuovo nodo foglia.
  3. Simulazione (Rollout): Si gioca una partita simulata (spesso casuale) fino alla fine.
  4. Retropropagazione (Backpropagation): Si aggiornano le statistiche dei nodi attraversati con il risultato.

7. Caso di Studio: AlphaGo

Il documento conclude citando AlphaGo, il sistema che ha battuto i campioni umani di Go.