# BOOK DI STUDIO CERTIFICAZIONE IT SPECIALIST IN AI
## Approfondimenti, Esempi e Spiegazioni Dettagliate

---

## CAPITOLO 1: FONDAMENTI DI MACHINE LEARNING

### 1.1 I Tre Pilastri del Machine Learning

#### **1.1.1 APPRENDIMENTO SUPERVISIONATO (Supervised Learning)**

**Definizione Completa:**
L'algoritmo apprende da dataset etichettati dove ogni esempio ha sia l'input (features) che l'output corretto (label/target). L'algoritmo trova la relazione tra inputs e outputs per fare previsioni su nuovi dati.

**Analogia del Mondo Reale:**
Immagina di insegnare ai bambini a riconoscere le mele. Mostri loro 100 immagini etichettate come "mela" o "non mela". I bambini imparano a riconoscere le caratteristiche comuni delle mele (forma rotonda, colore rosso/verde, rugosità della pelle). Quando vedono un'immagine nuova, possono dire se è una mela.

**Componenti Essenziali:**
- **Features**: variabili di input (es. temperatura, pressione, umidità)
- **Label**: output atteso (es. "farà pioggia" o "no pioggia")
- **Training Data**: esempi etichettati per imparare
- **Test Data**: dati mai visti per valutare il modello

**Sottocategorie Importanti:**

**A) Classificazione**
- **Output**: categoria discreta (classi finite)
- **Domanda che risponde**: "A quale categoria appartiene?"
- **Esempi concreti:**
  - Email spam: Sì/No (2 classi)
  - Riconoscimento specie di uccelli: Airone/Gabbiano/Falco (3+ classi)
  - Approvazione prestito: Approva/Nega (2 classi)
  - Diagnosi malattia: Malato/Sano (2 classi)

- **Metriche di valutazione**: Accuracy, Precision, Recall, F1-Score, Confusion Matrix

**B) Regressione**
- **Output**: valore continuo (qualsiasi numero)
- **Domanda che risponde**: "Quale valore numerico?"
- **Esempi concreti:**
  - Previsione numero clienti giornalieri: 45, 127, 89, 156 clienti
  - Previsione prezzo casa: €250.000, €385.000
  - Previsione popolazione città: 1.245.000 abitanti
  - Previsione prezzo azione: €45,32
  - Previsione temperatura domani: 18,5°C

- **Metriche di valutazione**: RMSE (Root Mean Squared Error), MAE (Mean Absolute Error), R²

**Caso Studio: Concessionario Auto (Domanda 1)**
- **Problema**: Predire numero clienti giornalieri per pianificare inventario e staff
- **Tipo**: REGRESSIONE (output = numero continuo di clienti)
- **Dati storici**: Vendite giorni precedenti, stagionalità, eventi speciali
- **Perché funziona**: Dati etichettati disponibili, relazione chiara tra fattori passati e clienti futuri
- **Metrica di successo**: Predizioni accurabili che massimizzano profitti (non semplicemente "previsioni stabili")
- **Errore frequente**: Confondere stabilità delle previsioni con accuratezza

---

#### **1.1.2 APPRENDIMENTO NON SUPERVISIONATO (Unsupervised Learning)**

**Definizione Completa:**
L'algoritmo scopre pattern nascosti e strutture nei dati SENZA etichette. Non sa cosa sta cercando, ma identifica raggruppamenti, correlazioni, anomalie.

**Analogia del Mondo Reale:**
Immagina di entrare in una biblioteca disorganizzata con migliaia di libri mescolati. Tu (l'algoritmo unsupervised) non sai che categorie usare, ma noti che alcuni libri hanno copertine simili, altri parlano di argomenti correlati, altri sembrano fuori posto (anomalie). Organicamente, li raggruppi per tema senza istruzioni esplicite.

**Sottocategorie Importanti:**

**A) Clustering (Raggruppamento)**
- **Obiettivo**: Dividere dati in gruppi simili
- **Domanda che risponde**: "Quali elementi sono simili tra loro?"
- **Algoritmo principale**: K-Means (definisci K=numero cluster in anticipo)

**Esempi concreti:**
1. **Segmentazione Clienti Bancaria**
   - Banca ha 500.000 clienti, niente etichette
   - Clustering scopre: Clienti giovani attivi online, Clienti anziani conservatori, Clienti business ad alto reddito
   - Uso: Strategie marketing personalizzate per ogni segmento

2. **Organizzazione Prodotti E-commerce**
   - Catalogo con 100.000 prodotti
   - K-means scopre cluster: Elettronica, Abbigliamento, Casa, Libri
   - Uso: Navigazione più intuitiva del sito

3. **Rilevamento Anomalie**
   - Monitorare sensori di una fabbrica
   - Scopre: 99% funzionamento normale, 1% comportamento anomalo
   - Uso: Avvisare tecnici di malfunzionamenti prima che causino danni

**Caso Studio: Banca Frodi (Domanda 4) - Attenzione all'Inganno**
- **Problema enunciato**: "Banca vuole rilevare frodi"
- **Dati disponibili**: Ammontare, articolo acquistato
- **Risposta CORRETTA**: "Unsupervised learning, clustering" ❌ SBAGLIATO!
- **Spiegazione dell'inganno**: 
  - La domanda presenta un VERO problema di frodi (che normalmente è classificazione supervisionata)
  - MA i dati storici non sono etichettati ("frode"/"legittimo")
  - Quindi tecnicamente è unsupervised clustering
  - La banca userebbe il clustering per trovare transazioni DIVERSE dal pattern normale

**Caso Studio: Organizzazione Prodotti (Domanda 5)**
- **Problema**: Azienda vuole raggruppare prodotti per strategie marketing diverse
- **Tipo**: Unsupervised learning, clustering
- **Motivo**: Non ha etichette pre-assegnate di "categoria"; scopre cluster automaticamente
- **Output**: Gruppi di prodotti simili (es. alta gamma, budget, stagionali)

---

#### **1.1.3 APPRENDIMENTO PER RINFORZO (Reinforcement Learning)**

**Definizione Completa:**
L'algoritmo apprende attraverso INTERAZIONE con l'ambiente. Prende azioni, riceve rewards (premi) o penalties (punizioni), e modifica il comportamento per massimizzare reward totale nel tempo.

**Analogia del Mondo Reale:**
Immagina di addestrare un cane. Non gli dici esattamente cosa fare, ma:
- Quando si siede: gli dai una ricompensa (treats)
- Quando morde: lo rimproveri (penalty)
- Nel tempo, il cane impara quali azioni portano ricompense

**Componenti Essenziali:**
- **Agent**: l'AI che prende decisioni (es. il cane, il videogame AI)
- **Environment**: il mondo in cui opera (stanza, arena di gioco)
- **State**: situazione attuale (posizione, visione del nemico)
- **Action**: cosa l'agent può fare (sedersi, mangiare, attaccare)
- **Reward**: feedback numerico positivo/negativo
- **Goal**: massimizzare reward totale nel lungo termine

**Esempi Concreti:**

1. **Videogame AI Avversario (Domanda 6)**
   - **Ambiente**: Arena di gioco, nemici, obiettivi
   - **Azioni**: Movimento, attacco, difesa
   - **Rewards**: +10 punti per vittoria, -5 per danno ricevuto
   - **Apprendimento**: Gioca migliaia di partite, migliora strategia nel tempo

2. **Robot Aspirapolvere**
   - **Ambiente**: Casa con ostacoli
   - **Azioni**: Avanti, indietro, gira
   - **Rewards**: +1 per ogni cm² pulito, -10 se urta muro
   - **Risultato**: Impara percorsi ottimali per pulire case

3. **AlphaGo (AI per il Gioco di Go)**
   - **Ambiente**: Scacchiera 19x19
   - **Azioni**: Posizionare pietre
   - **Rewards**: Vince/perde partita
   - **Risultato**: Sconfisse campioni umani

**Quando Usare Reinforcement Learning:**
- ✅ Sistemi con feedback continuo dall'ambiente
- ✅ Decisioni sequenziali dove azioni attuali influenzano future
- ✅ Obiettivo: massimizzare reward cumulativo nel tempo
- ❌ NON usare per: problemi statici con dati storici fissi (usa supervised/unsupervised)

---

### 1.2 QUANDO NON USARE AI - Il Contesto Critico

**Domanda 2: Il Caso dell'Assicurazione**
- **Scenario**: Azienda assicurativa determina sconto based on 10 Yes/No questions
- **Opzioni proposte**: Clustering, Neural Network, Decision Statements, ML generico
- **Risposta CORRETTA**: "AI NON è la soluzione più efficiente"
- **Ragionamento fondamentale**:
  
  ```
  10 domande Yes/No = 2^10 = 1.024 possibili combinazioni
  
  REGOLA SEMPLICE:
  If Risposta1=Yes AND Risposta3=No AND Resposta7=Yes → Sconto 10%
  If Risposta2=No AND Risposta5=No → Niente Sconto
  ... (poche semplici regole)
  
  vs.
  
  NEURAL NETWORK COMPLESSO:
  - Dati di training: 100.000+ applicazioni
  - Tempo development: settimane
  - Difficile spiegare decisioni (black box)
  - Manutenzione complessa
  - Costi computazionali
  ```

**Principio Generale: Simplicità First**
- Se il problema è risolvibile con <50 regole decisionali semplici → NON usare ML
- ML aggiunge complessità che non è giustificata
- Regole decisionali sono: veloci, trasparenti, facili da manutenere

**Quando Usare AI:**
1. Pattern troppo complessi per regole semplici
2. Relazioni non-lineari tra molti fattori
3. Dati storici disponibili e rappresentativi
4. ROI chiaramente positivo (benefici > costi)

**Quando NON Usare AI:**
1. ❌ Problema risolvibile con poche regole decisionali
2. ❌ Dati insufficienti
3. ❌ Interpretabilità critica e AI è black box
4. ❌ Costi di sviluppo/deployment > benefici
5. ❌ Feedback/etichettatura impossibile

---

## CAPITOLO 2: PREPARAZIONE DATI - Il 80% del Lavoro

### 2.1 Qualità dei Dati: Il Fondamento Tutto

**Principio Cardine: "Garbage In, Garbage Out"**
- Se i dati sono cattivi, il modello sarà cattivo, indipendentemente dall'algoritmo
- 80% dello sforzo in ML è preparare dati bene

#### **2.1.1 Dataset Bilanciati vs. Sbilanciati**

**Definizione:**
- **Bilanciato**: Tutte le classi rappresentate equamente
- **Sbilanciato**: Una classe predomina drasticamente

**Esempio Concreto: Rilevamento Frodi**

```
DATASET BILANCIATO (IDEALE ma RARO):
Transazioni Legittime: 50%
Transazioni Fraudolente: 50%

DATASET REALE (SBILANCIATO - il tipico):
Transazioni Legittime: 99.7%
Transazioni Fraudolente: 0.3%
```

**Il Problema del Dati Sbilanciato:**

```
Se il modello dice SEMPRE "Legittimo":
- Accuracy = 99.7% ✓ LOOKS GREAT!
- Ma coglie 0% delle frodi ✗ COMPLETAMENTE INUTILE!

La sola Accuracy è una metrica FUORVIANTE per dati sbilanciati!
```

**Soluzione: Usare Metriche Corrette**

| Metrica | Definizione | Utile per Dati Sbilanciati |
|---------|------------|------------------------|
| **Accuracy** | (TP+TN)/Totale | ❌ NO - fuorviante |
| **Precision** | TP/(TP+FP) | ✅ SÌ - quanto sono corrette le frodi predette |
| **Recall** | TP/(TP+FN) | ✅ SÌ - quante frodi reali catturiamo |
| **F1-Score** | 2×(P×R)/(P+R) | ✅ SÌ - bilancia precision e recall |
| **Confusion Matrix** | TP, FP, FN, TN | ✅ SÌ - mostra dettagli |

**Caso Studio: Domanda 15 - Dataset Sbilanciato**
- **Problema**: Predire email spam
- **Dataset**: Principalmente non-spam, poche email spam
- **Questione**: Quale problema presenta?
- **Risposta**: Imbalanced data (dati sbilanciati)

---

#### **2.1.2 Tipi di Bias nei Dati - Fonte di Discriminazione**

**Definizione Generale di Bias:**
Una distorsione sistematica nei dati o algoritmo che causa previsioni ingiuste verso certi gruppi.

**TIPO 1: Data Collection Bias (Bias di Raccolta)**

**Esempio Reale (Domanda 16): Pothole Detection**
```
SCENARIO:
- Startup crea app GPS per riportare buche stradali
- Obiettivo: Aiutare città a riparare strade

PROBLEMA:
- Solo 40% della popolazione ha smartphone
- Smartphone più comune tra: giovani, benestanti, area urbana ricca
- Dataset geograficamente sbilanciato verso quartieri ricchi
- La città usa AI per allocare risorse: quartieri poveri ignorati!

RISULTATO: Quartieri poveri rimangono con buche, quartieri ricchi riparati velocemente
```

**Meccanismo del Bias:**
```
1. Raccolta incompleta → Dati non rappresentativi
2. Dati non rappresentativi → Modello impara dal bias
3. Modello deployato → Bias perpetuato a scala
4. Danno sociale → Discriminazione sistematica
```

**Soluzione per Data Collection Bias:**
- Raccogliere dati da FONTI DIVERSE
- Campionamento stratificato (garantire rappresentanza di ogni gruppo)
- Coinvolgere comunità diverse nella raccolta dati
- Audit regolari per simmetria

**TIPO 2: Reinforcement Bias (Bias di Rinforzo / Historical Bias)**

**Esempio Reale: Assunzioni Universitarie (Domanda 34)**
```
SCENARIO:
- Università vuole usare AI per ammissioni "unbiased"
- Dati: 10 anni di decisioni passate di ammissione
- Escludono deliberatamente: income level (per essere "need-blind")
- Risultato: AI ancora favorisce studenti benestanti!

SPIEGAZIONE:
Il bias STORICO si perpetua attraverso altre feature correlate:

Income (ESCLUSO) ← correlato con → Postal Code (INCLUSO)
                                    Test Scores (INCLUSO)
                                    Scuola provenienza (INCLUSO)

Anche senza income diretto, le feature correlate portano lo stesso bias!
```

**Meccanismo:**
```
Se nel passato:
- Studenti ricchi erano ammessi di più
- Studenti poveri meno

E il modello impara da QUESTO BIAS STORICO:
- Il modello replica lo stesso bias nel presente
- Perpetua discriminazione
```

**Soluzione:**
- Pulire dati storici del bias (difficile)
- Escludere feature correlate con caratteristiche protette
- Analisi di correlazione approfondita
- Monitoraggio continuo per bias

**TIPO 3: Correlation with Protected Features**

```
SCENARIO: Banca nega prestito basato su:
- Punteggio di credito (OK)
- Codice postale (PROBLEMA!)

PERCHÉ È BIAS?
Codice Postale ← correlato con → Razza/Etnia
Se certi codici postali sono storicamente poveri E questi 
sono anche aree con minoranze, allora usare codice postale 
discrimina indirettamente per razza.
```

**Principio Generale:**
Anche se NON includi una feature protetta, se altre feature sono correlate, il bias rimane.

---

### 2.2 Feature Engineering - L'Arte di Trasformare i Dati

**Definizione:** Processo di trasformare dati grezzi in feature significative che il modello possa usare efficacemente.

**Fasi del Feature Engineering:**

#### **2.2.1 Selezione delle Feature (Feature Selection)**

**Obiettivo:** Identificare QUALI feature sono importanti per il modello.

**Problema Illustrativo: Predictor Cancellazione Memberships Palestra (Domanda 64)**
- **Dati disponibili**: 100+ feature su ogni cliente
- **Problem**: Quali sono rilevanti per cancellazione?

**Possibili Feature:**
- ✅ **Rilevanti**: Frequenza visita, mesi iscritto, tipo abbonamento, feedback insegnante
- ❌ **Non rilevanti**: Colore preferito dell'abbigliamento, numero patente
- ⚠️ **Discriminatorie**: Età, sesso, razza (correlate a bias)

**Come Selezionare Feature Correttamente:**

**METODO 1: Parlare con Domain Experts**
```
Intervista con:
- Receptionist della palestra: "Cosa notate prima che cancellino?"
- Manager: "Quali cliente tendono a restare?"
- Trainer: "Quali fattori motivano i clienti?"

Scopri che fattori REALI influenzano decisioni
```

**METODO 2: Analisi Statistica**
- Correlazione con target: quali feature correlano più con cancellazione
- Information Gain: quanta "informazione" cada feature aggiunge

**METODO 3: Iterazione**
- Prova con poche feature iniziali
- Valuta modello performance
- Aggiungi feature una alla volta, vedi se migliora

**Rimozione Feature (Domanda 21, 65)**

**Quando Rimuovere Feature:**

```
CASO 1: Feature Ridondante
- Colonna "age" e colonna "birth_year"
- Se sai birth_year, puoi calcolare age
- Una è ridondante → RIMUOVI

CASO 2: Feature a Valore Unico
- Colonna "city" ha 1000 righe, TUTTE con valore "Milano"
- Non discrimina nulla → RIMUOVI
- Aggiunge solo rumore

CASO 3: Feature NON Correlata con Target
- Colonna "colore_auto" per prezzo_casa
- Non ha correlazione logica
- Modello non può imparare relazione
- RIMUOVI per ridurre complessità

CASO 4: Feature Discriminatoria
- Escludi: razza, religione, genere, se possibile
- Anche feature correlate (es. codice postale)
```

**Domanda 65: Quale Feature Rimuovere?**
```
Opzioni:
A) Correlata altamente con target → TIENI (è importante!)
B) Valori multipli → TIENI (discrimina)
C) Correlata altamente con target → TIENI
D) NON correlata con target → RIMUOVI (inutile)

RISPOSTA: D
```

---

#### **2.2.2 Encoding Categorico - Convertire Parole in Numeri**

**Problema Fondamentale:**
La maggior parte degli algoritmi ML comprende solo NUMERI. Se hai categorie (testo), devi convertire.

**METODO 1: Label Encoding**

```
ORIGINALE:
Tipo Veicolo: [Auto, Camion, Furgone, Auto, Camion, ...]

LABEL ENCODED:
Tipo Veicolo: [0, 1, 2, 0, 1, ...]

MAPPING:
0 = Auto
1 = Camion
2 = Furgone
```

**Problema di Label Encoding:**
```
PERICOLO: L'algoritmo POTREBBE interpretare i numeri come ORDINALI!
- 0 (Auto) < 1 (Camion) < 2 (Furgone)
- Potrebbe pensare: "Camion è tra Auto e Furgone"
- MA non c'è ordine naturale tra veicoli!
```

**METODO 2: One-Hot Encoding (Raccomandato)**

```
ORIGINALE (5 righe):
Tipo Veicolo: [Auto, Camion, Furgone, Auto, Camion]

ONE-HOT ENCODED:
      è_Auto  è_Camion  è_Furgone
[       1        0          0      ]
[       0        1          0      ]
[       0        0          1      ]
[       1        0          0      ]
[       0        1          0      ]

Ogni colonna è BINARIA (0 o 1)
Ogni riga ha esattamente un 1
```

**Vantaggi One-Hot:**
- ✅ Nessuna falsa ordinazione implicita
- ✅ Perfetto per alberi decisionali, reti neurali
- ✅ Interpretabile (chiaro cosa significa ogni colonna)

**METODO 3: Dummy Encoding (Variante)**
```
Una-meno-di-tutte (n-1 colonne per n categorie)

      è_Auto  è_Camion
[       1        0      ]  → è Auto (se entrambi 0 → è Furgone)
[       0        1      ]  → è Camion
[       0        0      ]  → è Furgone
[       1        0      ]  → è Auto
[       0        1      ]  → è Camion
```

**Quando usare:**
- Evita multicollinearità in regressione lineare
- Utilizzato spesso in statistiche tradizionali

**Domanda 22: Feature Engineering in Ospedale**
```
SCENARIO: Predire cancellazioni appuntamenti medici
FEATURES: nome paziente, condizioni mediche, età, data ultimo appuntamento, 
          booleano "missed_last", data prossimo appuntamento, label (cancellerà?)

COSA ACCADE DURANTE FEATURE ENGINEERING:

1. ENCODING: "Si" e "No" (booleano) → 0 e 1
2. ENCODING: Condizioni mediche (categorie) → One-Hot encoding
   - diabete → [1, 0, 0]
   - ipertensione → [0, 1, 0]
   - asma → [0, 0, 1]
```

**Domanda 66: Vehicle Price Regression**
```
SCENARIO: Predire prezzo auto
FEATURES: numero porte (numerico), tipo veicolo (categoria), accelerazione 0-100 (numerico), ...

QUALE FEATURE RICEVE ONE-HOT?
- Numero porte: NO (già numerico)
- Tipo veicolo: SÌ (categoria: Truck/Sedan/Van)
  - è_Truck: [1, 0, 0]
  - è_Sedan: [0, 1, 0]
  - è_Van: [0, 0, 1]
- Accelerazione: NO (già numerico)

RISPOSTA: Tipo di veicolo riceve One-Hot
```

---

#### **2.2.3 Normalizzazione e Standardizzazione**

**Problema:**
Se feature hanno scale MOLTO diverse, alcuni algoritmi faranno fatica.

```
ESEMPIO: Predire approvazione mutuo
FEATURE 1: Età (20-80) → range di 60
FEATURE 2: Stipendio (20.000-200.000€) → range di 180.000
FEATURE 3: Anos impiego (0-50) → range di 50

Algoritmi basati su DISTANZA (K-NN, SVM, reti neurali):
- Stipendio domina a causa della sua scala
- Età e Anos sono quasi ignorati
```

**SOLUZIONE 1: Normalizzazione (Min-Max)**

Formula: \((X - X_{min}) / (X_{max} - X_{min})\)

```
Risultato: Tutti i valori tra [0, 1]

ESEMPIO:
Età: (45 - 20) / (80 - 20) = 25/60 = 0.417
Stipendio: (50000 - 20000) / (200000 - 20000) = 30000/180000 = 0.167
Anni: (15 - 0) / (50 - 0) = 15/50 = 0.3
```

**SOLUZIONE 2: Standardizzazione (Z-score)**

Formula: \((X - media) / deviazione\_standard\)

```
Risultato: Media=0, Deviazione Standard=1

ESEMPIO (assumendo media_età=50, std=12):
Età: (45 - 50) / 12 = -0.417

VANTAGGIO: Gestisce outlier meglio di normalizzazione
```

**Quando Usare:**
- ✅ **K-Means clustering**: ESSENZIALE (calcola distanze)
- ✅ **Neural Networks**: ESSENZIALE
- ✅ **SVM, K-NN**: ESSENZIALE
- ✅ **KMeans, Logistic Regression**: Fortemente consigliato
- ❌ **Decision Trees**: NON necessario (non sensibili a scale)
- ❌ **Random Forest**: NON necessario

---

#### **2.2.4 Data Augmentation - Aumentare Artificialmente i Dati**

**Problema:**
Modelli deep learning richiedono MOLTI dati. A volte ne abbiamo pochi.

**Soluzione: Data Augmentation**
Trasformare dati esistenti in modo intelligente per creare "nuovi" dati sintetici.

**Per Immagini (Molto Comune):**

```
IMMAGINE ORIGINALE: Foto di pianta

AUGMENTAZIONI POSSIBILI:
1. Rotazione: Ruota immagine 15°, 30°, -15°, ecc.
2. Flip: Specchia orizzontalmente/verticalmente
3. Zoom: Ingrandisci area specifica
4. Cropping: Taglia parte dell'immagine
5. Cambio luminosità: Più scura, più chiara
6. Cambio contrasto: Aumenta/diminuisci differenza colori
7. Aggiunta rumore: Adds piccoli artefatti

RISULTATO: Se avevi 1000 immagini, dopo augmentation: 5000-10000!
```

**Domanda 13: Training Dataset per Robot Agricolo**

```
SCENARIO: Robot riconosce erbacce vs. colture
DOMANDA: Quali immagini includere nel training set?

OPZIONI:
A) Tutti gli articoli della fattoria (strumenti, bestiame, colture, erbacce)
   → Troppo generico, confonde il robot
B) Varietà di immagini, ambienti diversi
   → Buono, ma troppo generico
C) Solo erbacce
   → NO! Robot non imparerà a distinguere dalle colture
D) Erbacce E colture ✓ RISPOSTA CORRETTA

LOGICA:
Il robot deve DISTINGUERE tra due classi
Servono esempi ENTRAMBE le classi
Altrimenti non può imparare la differenza
```

---

### 2.3 Dataset e Splitting - La Divisione Cruciale

#### **2.3.1 Training/Validation/Test Split**

**Principio Fondamentale:**
Non puoi valutare il modello su dati che ha visto durante training. Darebbe un'impressione falsa di competenza.

**Analogia:**
Immagina di studiare dal libro di testo per un esame, poi il professore Ti da le STESSE domande per l'esame. Ovviamente farai bene! Ma non significa che sai le cose - solo che sai il libro.

**Standard Industry (Domanda 23, 68):**

```
Dataset totale: 100%
├─ Training Set: 80%  → Usato per allenare il modello
├─ Validation Set: (optional) 10%  → Usato per tuning iperparametri
└─ Test Set: 20%  → RISERVATO, mai visto dal modello

IMPORTANTE: Test set rimane costante, non viene mai toccato finché deployment!
```

**Domanda 23: Arctic Ice Imagery**
```
SCENARIO: 100.000 immagini satellitari, devi distinguere ice/water/land
DOMANDA: Come allocare a training/testing?

OPZIONI:
A) 50% training, 50% testing → Insufficiente training
B) 100% per entrambi → Leakage! Stesso dato valuta il modello
C) 80% training, 20% testing ✓ RISPOSTA CORRETTA
D) Tutto per training, subset per testing → Leakage!

PERCHÉ 80/20?
- 80 training: abbastanza per imparare pattern
- 20 test: abbastanza grande per valutazione robusta
- È lo standard trovato empiricamente ottimale
```

**Domanda 68: Initial Dataset Approach**
```
OPZIONI:
A) 80% testing, 100% training, test costante
   → Confuso, impossibile
B) 20% testing, 100% training, test costante
   → Leakage! 100% + 20% = overlap
C) 80% testing, 20% training, test costante
   → Inverted! Troppo test, poco training
D) 20% testing, 80% training, test costante
   ✓ CORRETTA - approcio standard
```

---

#### **2.3.2 Cross-Validation - Validazione Robusta**

**Problema con singolo split 80/20:**
```
Se hai solo 1000 data points:
- Training: 800 punti
- Test: 200 punti

E il modello va male, non sai se è:
- Problema del modello?
- Sfortuna dello split (test set particolarmente difficile)?
```

**Soluzione: K-Fold Cross-Validation**

```
PROCESSO (K=5):

Divide dataset in 5 parti uguali:
┌─────────┬─────────┬─────────┬─────────┬─────────┐
│Fold 1   │Fold 2   │Fold 3   │Fold 4   │Fold 5   │
└─────────┴─────────┴─────────┴─────────┴─────────┘

ITERAZIONE 1: Test su Fold 1, Allena su Folds 2-5 → Performance1
ITERAZIONE 2: Test su Fold 2, Allena su Folds 1,3-5 → Performance2
ITERAZIONE 3: Test su Fold 3, Allena su Folds 1-2,4-5 → Performance3
ITERAZIONE 4: Test su Fold 4, Allena su Folds 1-3,5 → Performance4
ITERAZIONE 5: Test su Fold 5, Allena su Folds 1-4 → Performance5

RISULTATO FINALE: Media delle 5 performance
```

**Vantaggi:**
- ✅ Usa TUTTO il dataset sia per training che testing
- ✅ Riduce varianza da singolo split sfortunato
- ✅ Più robusto e affidabile
- ✅ Stima migliore di come il modello genererà

**Domanda 26: Dataset Splits e Loro Uso**

```
ASSOCIAZIONE CORRETTA:

Training Dataset → Training and Modeling
- Usato per imparare pesi del modello

Validation Dataset → Training Hyperparameters
- Usato per tuning hyperparameters (learning rate, profondità albero)
- NON per valutare performance finale

Test Dataset → Evaluating Model on New Instances
- Usato SOLO per valutazione finale
- Rappresenta performance in produzione
```

---

## CAPITOLO 3: ALGORITMI CLASSICI DI MACHINE LEARNING

### 3.1 Decision Trees - Il Modello Interpretabile

#### **3.1.1 Come Funziona**

**Definizione:**
Un albero decisionale è un modello che usa le feature per dividere ricorsivamente il dataset in sottoinsiemi sempre più omogenei.

**Analogia Visiva:**

```
DOMANDA INIZIALE: Dovremmo approvare il prestito?
│
├─── Stipendio < 30.000€? ───┐
│                            │
│ Sì                        No
│                            │
├─► NEGA PRESTITO      Debito > 50% Stipendio?
                             │
                             ├─ Sì → NEGA
                             └─ No → APPROVA
```

**Come Costruisce l'Albero (Algoritmo CART):**

```
PASSO 1: Guarda TUTTE le feature e TUTTI i possibili split
- Stipendio = 25.000? Split data in due gruppi
- Stipendio = 50.000? Split data in due gruppi
- Età = 30? Split data in due gruppi
- ... test centinaia di split

PASSO 2: Calcola quale split "purifica" i gruppi meglio
- Se tutte le persone in un gruppo sono "APPROVA", è puro!
- Se metà sono "APPROVA" e metà "NEGA", non è puro
- Usa metrica: Gini Index o Information Gain

PASSO 3: Sceglie il split migliore
PASSO 4: Ripete recursivamente su ogni sottogruppo
PASSO 5: Continua finché non raggiunge "foglie pure" (o raggiunge limite di profondità)
```

**Domande 10 e 27: Come Decision Tree Addestra il Modello**

```
OPZIONI:
A) Trova relazione LINEARE tra variabili → NO, non è lineare
B) Usa le feature per dividere il dataset in sottogruppi con feature simili ✓ CORRETTA
C) Calcola somiglianze tra data point → NO, quello è clustering
D) Trova linee per split → NO, può usare curve/confini complessi

RISPOSTA: B

MOTIVO: Decision tree fa split basati su VALORI delle feature,
non su relazioni lineari o distanze.
```

---

#### **3.1.2 Vantaggi e Svantaggi**

**Vantaggi:**

1. **Altamente Interpretabile/Explainable**
   - Puoi tracciare il percorso dalla radice alla foglia
   - Spiega esattamente perché ha preso una decisione
   - Perfetto per settori regolamentati (banche, medicina)
   - Domanda 24: "Quale modello per medici?" → Decision Tree

2. **Gestisce Feature Categoriche Naturalmente**
   - Alberi discretizzano automaticamente feature continue
   - Non ha bisogno di normalizzazione/standardizzazione

3. **Richiede Poco Preprocessing**
   - Non ha bisogno di encoding complesso
   - Gestisce valori mancanti (con tecniche specifiche)

4. **Veloce da Predire**
   - Una volta allenato, predizione è semplice (pochi confronti)

**Svantaggi:**

1. **Propenso all'Overfitting**
   - Può creare rami super specifici che memorizzano training data
   - Cresce troppo profondo

2. **Instabilità**
   - Piccoli cambiamenti nei dati → albero completamente diverso
   - Sensibile ai dettagli

---

#### **3.1.3 Prevenire Overfitting in Decision Trees**

**Domanda 33: Come Evitare Overfitting**

```
OPZIONI:
A) Assicurati dataset sia skewed → NO, help overfitting
B) Determina min numero di foglie → Tecnica, ma non è il nome standard
C) Specifica limit per profondità dell'albero ✓ CORRETTA
D) Rimuovi osservazioni random → Peggior overfitting!

RISPOSTA: C - Depth Limit (max_depth)
```

**Tecniche di Regolarizzazione:**

```
1. MAX_DEPTH (Limita Profondità)
   - Albero profondità massima 5
   - Previene split eccessivo
   - Favorisce generalizzazione

2. MIN_SAMPLES_PER_LEAF (Campioni Minimo per Foglia)
   - Almeno 10 campioni per foglia
   - Previene foglie troppo specifiche

3. MIN_SAMPLES_PER_SPLIT (Campioni Minimo per Split)
   - Almeno 20 campioni per considerare uno split
   - Previene split su rumore

ESEMPIO:
tree = DecisionTreeClassifier(
    max_depth=5,           # Non più profondo
    min_samples_per_leaf=10,  # Foglie generiche
    min_samples_per_split=20  # Split robuste
)
```

**Domanda 25: Problemi Risolvibili con Decision Tree**

```
OPZIONI:
A) Text generation → NO, generazione è sequenziale
B) Classification ✓ CORRETTA
C) Regression ✓ CORRETTA
D) Clustering → NO, unsupervised
E) Reinforcement → NO, agenti

Decision tree funziona per ENTRAMBI classificazione e regressione!
Regression Tree predice valori continui (prezzo, temperatura)
Classification Tree predice categorie (spam/no-spam, approvato/negato)
```

---

### 3.2 Clustering e K-Means

#### **3.2.1 K-Means: Algoritmo Fondamentale**

**Definizione:**
K-Means raggruppa dati in K cluster minimizzando la distanza totale tra punti e il loro centroide (centro del cluster).

**Algoritmo Passo-Passo:**

```
STEP 1: INIZIALIZZAZIONE
- Scegli K (numero cluster: 3, 4, 5, ...)
- Assegna casualmente K centroidi

STEP 2: ASSEGNAZIONE
- Per ogni punto dati, calcola distanza da tutti i K centroidi
- Assegna il punto al centroide PIÙ VICINO

STEP 3: AGGIORNAMENTO
- Calcola media di tutti i punti in ogni cluster
- La media diventa il nuovo centroide

STEP 4: RIPETI
- Se centroidi hanno smesso di muoversi (convergenza) → Fatto!
- Altrimenti torna a STEP 2

VISUALE (K=3):
Iterazione 1:
    ● Cluster 1    ●● Cluster 2    ●●● Cluster 3
    (rossi)        (blu)            (verdi)

Iterazione 2:
    Centroidi si muovono...

Iterazione 5: Convergenza!
    ●●  |  ●●●  |  ●●
    ●●  |  ●●●  |  ●●
```

**Domanda 3: Quale Algoritmo Usa Dati Unlabeled?**

```
OPZIONI:
A) Clustering ✓ CORRETTA
B) Classification → NO, supervised (etichette)
C) Object Detection → NO, supervised
D) Machine Translation → NO, supervised

Clustering è IL metodo unsupervised per scoprire pattern
```

---

#### **3.2.2 Scegliere K - Elbow Method**

**Problema Critico:**
Come decidi quanti cluster usare?

**Domanda Reale:**
Se segmenti clienti, quanti segmenti? 3? 5? 10?

**Soluzione: Elbow Method**

```
PROCESSO:
1. Allena K-Means per K = 1, 2, 3, 4, 5, ..., 10
2. Per ogni K, calcola "inerzia" (somma distanze da centroidi)
3. Traccia grafico K vs Inerzia
4. Cerca il "gomito" (elbow)

GRAFICO:
Inerzia
   |     ╲
   |      ╲
   |       ╲  ← Grande diminuzione
   |        ╲___
   |            ╲___
   |                ╲_____ ← Poco cambio (elbow qui!)
   |________________________ K
      1  2  3  4  5  6  7

INTERPRETAZIONE:
K=1: Inerzia altissima (un cluster gigante)
K=2: Inerzia scende molto
K=3: Inerzia scende ancora
K=4: Inerzia scende poco ← ELBOW! Scegli K=4
K=5+: Diminuzioni piccolissime (overhead non vale)
```

**Quando Usare K-Means:**
- ✅ Segmentazione clienti (marketing)
- ✅ Organizzazione prodotti
- ✅ Rilevamento anomalie
- ✅ Compressione immagini

---

### 3.3 Logistic vs Linear Regression

**Domanda 71: Qual è la Differenza Fondamentale?**

```
OPZIONI:
A) Linear per categorie, logistic per continue
   → SBAGLIATO, è l'opposto

B) Linear assume relazione lineare, logistic non-lineare
   → Parzialmente vero ma non il punto principale

C) Linear per regressione (valori continui),
   logistic per classificazione (categorie)
   ✓ CORRETTA

D) Linear predice categoriche, logistic continuo
   → SBAGLIATO, opposto
```

**Spiegazione Approfondita:**

| Aspetto | Linear Regression | Logistic Regression |
|---------|-------------------|-------------------|
| **Output** | Qualsiasi numero reale (-∞ a +∞) | Probabilità [0 a 1] |
| **Task** | Regressione (valori continui) | Classificazione (categorie) |
| **Funzione** | y = mx + b (retta) | y = 1/(1+e^(-x)) (sigmoidale) |
| **Uso Esempio** | Prezzo casa, temperatura, popolazione | Spam/no-spam, malato/sano |
| **Interpretazione Output** | "Il prezzo stimato è €350.000" | "Probabilità 85% che sia spam" |

**Visualizzazione:**

```
LINEAR REGRESSION:
Prezzo (€)
   |      ●
   |    ●  ●
   |  ●    ●●
   |●      ●
   |___________ Metri quadri
   
Output: -50.000 (negativo possibile)
        250.000 (grande)
        -500 (negativo, impossibile per prezzo!)

LOGISTIC REGRESSION:
Probabilità Spam
   1  |_______―――――――――
      |    ―――
      |  ―――
      |―――
   0  |___ Features
   
Output: Sempre tra 0 e 1 (probabilità valida)
```

---

## CAPITOLO 4: RETI NEURALI E DEEP LEARNING

### 4.1 Struttura Base di una Rete Neurale

#### **4.1.1 Componenti Fondamentali**

**Neuroni Artificiali (Perceptron):**

```
INPUT:     NEURONE:           OUTPUT:
x1 ──┐
     ├─ Σ(xi × wi) + b ──> σ(z) ──> y
x2 ──┤
x3 ──┘

Dove:
- wi = peso della connessione
- b = bias (intercetta)
- Σ(xi × wi) + b = combinazione lineare
- σ(z) = funzione di attivazione
```

**Funzioni di Attivazione (Perché Sono Cruciali?):**

```
PROBLEMA: Se ogni layer fosse solo lineare:
f(x) = 2x + 3
g(y) = 4y + 5
Composizione: g(f(x)) = 4(2x + 3) + 5 = 8x + 17
RISULTATO: Ancora lineare! Nessun vantaggio da hidden layers!

SOLUZIONE: Funzioni di attivazione NON-LINEARI aggiungono complessità
```

**Tipi di Attivazione:**

1. **ReLU (Rectified Linear Unit)** - Più Usata
   ```
   f(x) = max(0, x)
   
   Grafico:
        |
        | /
   ————o/————
       /|
      / |
   
   Quando: x < 0 → output 0
           x > 0 → output x
   ```
   - ✅ Veloce computazionalmente
   - ✅ Funziona bene nella pratica
   - ✅ Stantard nei moderni deep networks

2. **Sigmoid**
   ```
   f(x) = 1 / (1 + e^(-x))
   
   Output sempre tra 0 e 1
   Usato per probabilità nell'output layer
   ```

3. **Tanh**
   ```
   f(x) = (e^x - e^(-x)) / (e^x + e^(-x))
   
   Output tra -1 e 1
   Usato talvolta in hidden layers
   ```

#### **4.1.2 Architettura Esempio:**

```
INPUT LAYER        HIDDEN LAYERS          OUTPUT LAYER
(Feature Input)    (Processing)           (Prediction)

   x1 ─┐
   x2 ─┼─ Neurone1 ─┐
   x3 ─┤            ├─ Neurone5 ─┐
   x4 ─┤ Neurone2 ─┤            ├─ Neuroni_Output (1 per classe)
   x5 ─┤            ├─ Neurone6 ─┤
   x6 ─┼─ Neurone3 ─┤            └─ Output
   x7 ─┤            ├─ Neurone7
   x8 ─┼─ Neurone4 ─┘
   
CONFIGURAZIONE:
- 8 features input
- 2 hidden layers: 4 neuroni nel primo, 3 nel secondo
- 1 output neurone (classificazione binaria)
- Questo si chiama "8-4-3-1 network"
```

---

#### **4.1.3 Training: Forward Pass, Loss, Backpropagation**

**STEP 1: Forward Pass (Propagazione Avanti)**

```
Input: x = [1, 0.5, -0.3]
Pesi W1: [0.2, 0.5, -0.1]
Bias b1: 0.3

Calcolo:
z = (1)(0.2) + (0.5)(0.5) + (-0.3)(-0.1) + 0.3
  = 0.2 + 0.25 + 0.03 + 0.3
  = 0.78

Attivazione: a = ReLU(0.78) = 0.78 (positivo)

Output: 0.78
```

**STEP 2: Calcolo Loss (Errore)**

```
Predizione: y_pred = 0.78
Valore Reale: y_true = 1

Loss (Mean Squared Error):
L = (y_true - y_pred)^2
  = (1 - 0.78)^2
  = 0.0484
```

**STEP 3: Backpropagation (Propagazione Indietro)**

```
Idea: Usa gradient descent per aggiornare i pesi
      in modo da ridurre loss per la prossima iterazione

Calcolo Gradient:
∂L/∂w = quanto cambia loss quando cambio w?

Aggiornamento Peso:
w_new = w_old - learning_rate × ∂L/∂w

ESEMPIO:
∂L/∂w ≈ 0.1 (diminuire w ridurrebbe loss)
learning_rate = 0.01
w_new = 0.2 - 0.01 × 0.1 = 0.2 - 0.001 = 0.199
```

**STEP 4: Ripeti**

```
Iterazione 1: Loss = 0.0484
Iterazione 2: Loss = 0.0421 ✓ Migliorato
Iterazione 3: Loss = 0.0389 ✓ Migliorato
...
Iterazione 1000: Loss = 0.00001 ✓ Convergenza!
```

---

### 4.2 Convolutional Neural Networks (CNN)

#### **4.2.1 Quando e Perché CNN**

**Problema con Fully Connected Networks per Immagini:**

```
Immagine 100×100 con 3 canali (RGB) = 30.000 pixel
Full connection: ogni pixel → neurone
→ 30.000 neuroni nel primo layer
→ Massiccia computazione
→ Poca efficienza nell'imparare feature spaziali
```

**Soluzione: CNN**
Usa **convoluzione** per estrarre feature locali.

```
IMMAGINE:              FILTRO (3×3):     CONVOLUTION:
┌───────────────┐     ┌──────┐          Applica filtro
│ ● ● ●●●●●●●● |     |  0  1 -1        a ogni area
│●●●●●●●●●●●●● ├──→  |  1  0  1   ──→ 3 nuovi valori
│●●●●●●●●●●●● │     | -1  1  0 │      (edge detection)
│●●●●●●●●●●●●│     └──────┘
└───────────────┘
```

---

#### **4.2.2 Componenti CNN**

1. **Convolutional Layer**
   - Applica filtri per estrarre feature (bordi, texture, forme)
   - Output: "feature maps"

2. **Pooling Layer**
   - Riduce dimensione (Max pooling: prende max di ogni regione)
   - Riduce computazione e estrae feature dominanti

3. **Flattening Layer**
   - Converte feature maps in vettore 1D

4. **Fully Connected Layer**
   - Standard neural network per classificazione finale

```
ARCHITETTURA ESEMPIO:
Input (224×224) 
    ↓ Conv (64 filtri, 3×3)
Feature Maps (224×224×64)
    ↓ ReLU
Feature Maps (224×224×64)
    ↓ Max Pooling (2×2)
Feature Maps (112×112×64)
    ↓ Conv (128 filtri, 3×3)
Feature Maps (112×112×128)
    ↓ ReLU
Feature Maps (112×112×128)
    ↓ Flatten
Vector (1.605.632 elementi)
    ↓ Dense (256 neuroni)
    ↓ Output (10 neuroni, per 10 classi)
```

---

#### **4.2.3 Transfer Learning - Il Trucco Pratico**

**Problema:**
Allenare una CNN da zero richiede:
- Centinaia di migliaia di immagini
- Settimane di computazione
- GPU costose

**Soluzione: Transfer Learning**

```
APPROCCIO 1: Allenare da Zero
- Banca dati: 100.000 immagini auto
- Tempo: 2 settimane su GPU
- Costo: €5.000+

APPROCCIO 2: Transfer Learning
- Pre-trained CNN su ImageNet (1.2 milioni immagini)
- Modello sa già riconoscere bordi, texture, forme generiche
- Tu rialleni solo ultimi 2 layers su tue 100.000 immagini auto
- Tempo: poche ore su CPU
- Costo: €100

Il modello "trasferisce" la conoscenza da ImageNet!
```

---

### 4.3 Recurrent Neural Networks (RNN) e LSTM

#### **4.3.1 Quando Usare: Dati Sequenziali**

**Problema Standard NN:**
```
Predictor di prezzo azione (GENNAIO):
Input: [Lunedì, Martedì, Mercoledì, Giovedì, Venerdì]
Output: Prezzo Sabato

Standard NN guarda tutti i 5 giorni contemporaneamente
NON capisce la SEQUENZA (che Lunedì viene prima di Martedì)
```

**Soluzione: RNN con State (Memoria)**

```
Tempo t=1 (Lunedì):    Neurone legge Lunedì
                       Crea stato interno s1

Tempo t=2 (Martedì):   Neurone legge Martedì + stato s1
                       Crea stato interno s2 (ricorda Lunedì!)

Tempo t=3 (Mercoledì): Neurone legge Mercoledì + stato s2
                       Crea stato interno s3 (ricorda Lun+Mar!)

...

Tempo t=5 (Venerdì):   Neurone legge Venerdì + stato s4
                       Output: Prezzo Sabato
                       Usa TUTTA la sequenza!
```

#### **4.3.2 Problema del Vanishing Gradient**

```
PROBLEMA: In lunghe sequenze, il gradient "svanisce"

RNN semplice su 100 step temporali:
Backprop multiplica gradienti:
∂L/∂w = 0.9 × 0.9 × 0.9 × ... × 0.9 (100 volte)
      = 0.9^100
      = estremamente vicino a 0!

Risultato: Pesi non si aggiornano (non imparano da input remoti)
```

**Soluzione: LSTM (Long Short-Term Memory)**

```
LSTM aggiunge "cancelli":

Forget Gate: Dimenticare informazioni irrilevanti
Input Gate: Cosa aggiungere alla memoria
Output Gate: Cosa emettere
Cell State: Memoria a lungo termine

Risultato: LSTM sa COSA ricordare e COSA dimenticare
           può imparare dipendenze anche 100+ step indietro
```

**Usi Pratici:**
- ✅ Traduzioni automatiche (parole dipendono da parole precedenti)
- ✅ Generazione testo (predire parola successiva)
- ✅ Sentiment analysis (contesto importa)
- ✅ Previsioni serie temporali (dipendenza da passato)

---

### 4.4 Transformer e Attention Mechanism

#### **4.4.1 Rivoluzione del Transformer**

**Problema con RNN/LSTM:**
```
Processo SEQUENZIALE:
Passo 1: Leggi parola 1
Passo 2: Leggi parola 2 (deve aspettare passo 1)
Passo 3: Leggi parola 3 (deve aspettare passo 2)
...
Passo 100: Leggi parola 100 (deve aspettare 99!)

Con GPU moderne con 1000 operazioni parallele:
99 passi sequenziali = SPRECO!
```

**Soluzione: Transformer - Processa TUTTO in Parallelo**

```
Transformer:
Passo 1: Leggi TUTTE le 100 parole CONTEMPORANEAMENTE
         Usa "Attention Mechanism" per relazionarle
         (non devi aspettare parole precedenti)

Risultato: 10-100x più veloce di RNN!
```

#### **4.4.2 Attention Mechanism - Il Cuore del Transformer**

```
DOMANDA: Come relazionare tutte le parole senza sequenza?

RISPOSTA: Query-Key-Value Attention

Frase: "Il gatto mangia il pesce"

Per capire "mangia":
- Query: Cosa significa "mangia"?
- Key: Cerca quali parole sono rilevanti
  - "Il" → poco rilevante (score basso)
  - "gatto" → molto rilevante (score alto)
  - "pesce" → rilevante (score medio)
- Value: Estrai informazione da quelle parole

Risultato: "mangia" comprende profondamente "gatto" e "pesce"
         anche se "gatto" è 2 posizioni prima!
```

#### **4.4.3 Modelli Transformer Moderni**

**GPT (Generative Pre-trained Transformer)**
```
Tipo: Auto-regressivo (genera testo)
Task: Predicendo parola successiva

TRAINING:
Legge testo gigantesco (miliardi di parole)
Impara: "Dopo X parole, tipicamente viene Y"

INFERENCE:
Input: "Il gatto è molto"
Output (predice): "Il gatto è molto carino" ← predice "carino"

Usa: ChatGPT, GPT-4, assistenti AI
```

**BERT (Bidirectional Encoder Representations from Transformers)**
```
Tipo: Bidirenzionale (legge da sinistra E destra)
Task: Classificazione, question-answering

DIFFERENZA:
GPT: vede solo parole PRIMA (auto-regressivo)
BERT: vede TUTTE le parole (bidirenzionale)

ESEMPIO:
Frase: "The bank robberies were committed by criminals"

GPT: per capire "bank":
- Vede: "The"
- Non sa se sarà "bank" (istituto) o "bank" (riva fiume)

BERT: per capire "bank":
- Vede: "The ... robberies ... by criminals"
- Capisce che è "bank" (istituto finanziario) subito!

Usa: Classificazione, NLP, question-answering
```

---

## CAPITOLO 5: VALUTAZIONE DEI MODELLI

### 5.1 Confusion Matrix e Metriche di Classificazione

#### **5.1.1 Confusion Matrix - La Tabella Magica**

**Definizione:**
La confusion matrix mostra tutti i tipi di previsioni (corrette e scorrette).

```
                  Predetto POSITIVO    Predetto NEGATIVO
Reale POSITIVO         TP                    FN
Reale NEGATIVO         FP                    TN

TP = True Positive (predetto sì, è sì) ✓
TN = True Negative (predetto no, è no) ✓
FP = False Positive (predetto sì, è no) ✗
FN = False Negative (predetto no, è sì) ✗
```

**Esempio Concreto: Email Spam**

```
Modello predice 100 email:

                  Spam Predetto      Non-Spam Predetto
Reale SPAM            25                    5
Reale NON-SPAM         8                   62

INTERPRETAZIONE:
- TP=25: Correttamente identificate 25 email spam
- TN=62: Correttamente identificate 62 email non-spam
- FP=8: Falsi alarm (email legit marcate come spam)
- FN=5: Spam perso (email spam non rilevate)
```

#### **5.1.2 Accuracy (Accuratezza)**

**Formula:** \((TP + TN) / Totale\)

```
ESEMPIO:
(25 + 62) / 100 = 87 / 100 = 87%

INTERPRETAZIONE: "In 87% dei casi, il modello ha ragione"

PERICOLO CON DATI SBILANCIATI:
Se 99% email sono non-spam, dire sempre "non-spam":
Accuracy = 99% ma modello è INUTILE!
```

**Domanda 32: Accuracy vs Precision**

```
OPZIONE CORRETTA:
"Accuracy = quanto vicino a valore vero (colpì il bersaglio)
 Precision = quanto vicino a altri colpi (coerenza)"

Analogia Archeria:
Accuracy: Frecce puntano al centro del bersaglio?
Precision: Frecce sono raggruppate insieme (anche se non al centro)?
```

#### **5.1.3 Precision (Precisione)**

**Formula:** \(TP / (TP + FP)\)

```
"Di tutte le volte che PREDICO positivo, quante SONO corrette?"

ESEMPIO SPAM:
Predico "SPAM" 25+8 = 33 volte
Di queste 33, sono corrette 25 volte
Precision = 25 / 33 = 75.8%

INTERPRETAZIONE:
"Quando il modello dice 'è spam', è corretto il 75.8% delle volte"
```

**Quando Prioritizzare Precision:**
- Email spam: False positive (bloccare email legit) è costoso
- Medico: Diagnosi positiva per malattia (False positive = paura del paziente)

#### **5.1.4 Recall (Richiamo)**

**Formula:** \(TP / (TP + FN)\)

```
"Di TUTTI i positivi REALI, quanti RIESCO A CATTURARE?"

ESEMPIO SPAM:
Email spam reali = 25 + 5 = 30
Ne prendo 25
Recall = 25 / 30 = 83.3%

INTERPRETAZIONE:
"Degli 30 email spam veri, il modello ne prende l'83.3%"
```

**Quando Prioritizzare Recall:**
- Rilevamento frodi: Perdere una frode (False negative) è costoso
- Diagnosi malattie gravi: Perdere una malattia è pericoloso
- Security: Perdere un hacker è rischioso

**Domanda 31: Quale Metrica per Frodi?**

```
OPZIONI:
A) Confusion matrix ✓ CORRETTA - mostra tutti i dettagli
B) Accuracy - fuorviante con dati sbilanciati
C) True positive rate - parziale
D) BLEU - metrica per machine translation, non classificazione

Con dati molto sbilanciati (99.8% transazioni legittime),
DEVI usare confusion matrix per vedere TP, FP, FN, TN!
```

#### **5.1.5 F1-Score - Il Compromesso**

**Formula:** \(2 × (Precision × Recall) / (Precision + Recall)\)

```
Media armonica di Precision e Recall

ESEMPIO:
Precision = 75.8%
Recall = 83.3%
F1 = 2 × (0.758 × 0.833) / (0.758 + 0.833)
   = 2 × 0.631 / 1.591
   = 0.792 = 79.2%

USO: Quando vuoi bilanciare Precision e Recall
     Nessuno è significativamente più importante
```

---

#### **5.1.6 ROC Curve e AUC**

**Cosa Misura:**
La curva ROC (Receiver Operating Characteristic) mostra il trade-off tra True Positive Rate e False Positive Rate.

```
ROC CURVE:

True Pos Rate
    |    *
  1 |   /**
    |  /*
    | /*
    |/*________
  0 |___________
    0         1
    False Pos Rate

INTERPRETAZIONE:
- Diagonale (45°): Modello casuale (AUC = 0.5)
- Verso angolo alto-sinistra: Modello buono (AUC = 0.9)
- Angolo alto-sinistra perfetto: Modello perfetto (AUC = 1.0)
```

**AUC (Area Under Curve):**
```
AUC = 1.0: Modello perfetto
AUC = 0.9+: Eccellente
AUC = 0.8-0.9: Buono
AUC = 0.7-0.8: Accettabile
AUC = 0.5: Casuale (inutile)
```

**Quando Usare ROC/AUC:**
- ✅ Classificazione binaria (spam/no-spam)
- ✅ Dati sbilanciati
- ✅ Valutare modelli su soglie diverse

---

### 5.2 Metriche di Regressione

**Domanda 30: Metrica per Regressione AI**

```
OPZIONI:
A) Precision - per classificazione
B) Accuracy - per classificazione
C) Recall - per classificazione
D) RMSE ✓ CORRETTA

RMSE = Root Mean Squared Error
```

#### **5.2.1 RMSE (Root Mean Squared Error)**

**Formula:** \(\sqrt{\frac{1}{n} \sum_{i=1}^{n} (y\_pred_i - y\_true_i)^2}\)

```
ESEMPIO: Predire prezzo case

Casa 1: Predetto €350.000, Reale €320.000, Errore = €30.000
Casa 2: Predetto €450.000, Reale €480.000, Errore = -€30.000
Casa 3: Predetto €250.000, Reale €245.000, Errore = €5.000

RMSE = √((30000² + 30000² + 5000²) / 3)
     = √((9×10⁸ + 9×10⁸ + 25×10⁶) / 3)
     = √(6×10⁸)
     = €24.495

INTERPRETAZIONE: In media, il modello sbaglia di €24.495
```

**Caratteristiche:**
- Penalizza errori grandi più di errori piccoli
- Unità stessa della variabile (€, °C, kg)

#### **5.2.2 MAE (Mean Absolute Error)**

**Formula:** \(\frac{1}{n} \sum |y\_pred_i - y\_true_i|\)

```
STESS ESEMPIO:
MAE = (|30000| + |30000| + |5000|) / 3
    = 65000 / 3
    = €21.667

DIFFERENZA da RMSE:
RMSE = €24.495 (penalizza errori grandi)
MAE = €21.667 (tratta tutti errori ugualmente)
```

#### **5.2.3 R² (R-Squared)**

**Formula:** \(1 - \frac{SS\_residui}{SS\_tot}\)

```
Misura: Quanto bene il modello spiega la varianza dei dati

R² = 1.0: Modello perfetto (spiega 100% varianza)
R² = 0.85: Modello buono (spiega 85%)
R² = 0.0: Modello non migliore della media
R² < 0.0: Modello peggiore della semplice media!
```

---

### 5.3 Overfitting vs. Underfitting

#### **5.3.1 Definizioni Precise**

**OVERFITTING:**
- Il modello memorizza training data
- Performance ECCELLENTE su training set
- Performance TERRIBILE su test set
- **Problema**: High variance, low bias

**Domanda 76: Overfitting Frodi**
```
TRAINING ACCURACY: 99.7%
TEST ACCURACY: 72.45%
GRANDE GAP!

DIAGNOSI: OVERFITTING

SPIEGAZIONE:
Il modello ha memorizzato peculiarità del training set
Non generalizza a dati nuovi (test set)
```

**UNDERFITTING:**
- Il modello è troppo semplice
- Performance MEDIOCRE sia su training che test
- **Problema**: High bias, low variance

**Domanda 49: Identificare Overfitting/Underfitting**
```
MODEL 1: Training 60%, Test 55% ← Entrambi bassi = UNDERFITTING
MODEL 2: Training 85%, Test 80% ← Bilanciati e alti = OPTIMAL
MODEL 3: Training 98%, Test 65% ← Grande gap = OVERFITTING

RISPOSTA:
Optimal = Model 2
Overfit = Model 3
Underfit = Model 1
```

#### **5.3.2 Bias-Variance Trade-off**

```
BIAS: Errore da assunzioni sbagliate del modello
VARIANCE: Sensibilità a piccoli cambiamenti nei dati

LOW BIAS, HIGH VARIANCE = OVERFITTING
- Modello complesso, vede pattern che non esistono

HIGH BIAS, LOW VARIANCE = UNDERFITTING
- Modello semplice, misses pattern veri

IDEALE: LOW BIAS, LOW VARIANCE
- Modello complesso GIUSTO per il problema
```

#### **5.3.3 Soluzioni a Overfitting (Domanda 35)**

```
DOMANDA: 3 Approcci per Risolvere Overfitting

OPZIONI:
A) Tuning iperparametri ✓
   - Limitare max_depth di alberi
   - Early stopping in reti neurali
   - Aumentare regolarizzazione (L1, L2)

B) Collezionare più dati ✓
   - Modello memorizza meno
   - Generalizza meglio

C) Usare modelli non-lineari
   - NO, peggiorrebbe overfitting

D) Implementare modelli più complessi
   - NO, peggiora overfitting

E) Assicurare dati non sbilanciati ✓
   - Dati sbilanciati causano overfitting verso classe dominante
   - Bilanciare dati → genralizzazione migliore

RISPOSTE: A, B, E
```

---

#### **5.3.4 Regolarizzazione (Prevenire Overfitting)**

**L1 Regularization (Lasso):**
```
Loss_totale = Loss_originale + λ × Σ|w|

Effetto: Incoraggia pesi PICCOLI (alcuni diventano 0)
Risultato: Feature selection automatica
```

**L2 Regularization (Ridge):**
```
Loss_totale = Loss_originale + λ × Σ(w²)

Effetto: Incoraggia pesi DISTRIBUITI (non troppo grandi)
Risultato: Smoothing del modello
```

**λ (lambda):**
```
λ = 0: Nessuna regolarizzazione (possibile overfitting)
λ piccolo: Leggera regolarizzazione
λ grande: Forte regolarizzazione (possibile underfitting)

TUNING: Prova λ = 0.01, 0.1, 1, 10, trova optimum
```

---

## CAPITOLO 6: DEPLOYMENT E PRODUCTION

### 6.1 Inference - Usare il Modello

**Domanda 40: Termine Comune per AI Predictions**

```
OPZIONI:
A) K-fold cross-validation - validazione metodo
B) Hyperparameter tuning - ottimizzazione
C) Confusion matrix - metrica
D) Inference ✓ CORRETTA

INFERENCE = Usando il modello allenato per fare previsioni su dati nuovi
```

```
TRAINING PHASE:
Modello impara dalle 80% dati

INFERENCE PHASE:
Modello predicendo su 20% test (o nuovi dati in produzione)
```

---

### 6.2 Strategie di Deployment

**Domanda 81: Predictor Urgente per Turbine (15ms latency)**

```
SCENARIO:
- Turbina esplode se non spenta in <100ms
- Modello deve predire in <15ms

OPZIONI:
A) Integrare direttamente nel software turbina ✓ CORRETTA
   → Latenza: <1ms (computazione locale)
   
B) Mandare dati via internet al server
   → Latenza: 50-200ms (network delay)
   → TROPPO LENTO!
   
SOLUZIONE: EDGE DEPLOYMENT
Modello corre LOCALMENTE nel dispositivo, non cloud
```

**Domanda 82: Raccomandazioni Prodotto E-commerce**

```
SCENARIO:
- Website ha 10 utenti al giorno → 10.000 domande/giorno
- Scenario futuro: 100.000 utenti → 1.000.000 domande/giorno

DOMANDA: Cosa considerare per deployment?

RISPOSTA: Scalabilità
"Se il numero di customer aumenta 10x, il sistema ancora raggiunge latenza accettabile?"

SOLUZIONE:
- Load balancing (distribuisci richieste tra server)
- Caching (ricorda raccomandazioni recenti)
- Batch processing (processa gruppi insieme)
- Auto-scaling cloud (aggiungi server se necessario)
```

---

### 6.3 Model Monitoring e Retraining

**Domanda 42: Quando Retrain il Modello?**

```
STRATEGIE:

1. PERIODICA
   - Retrain ogni lunedì mattina
   - Pro: Semplice da implementare
   - Contro: Potrebbe retrain quando non necessario
   
2. PERFORMANCE-BASED
   - Retrain se accuracy < 85%
   - Pro: Reattiva quando performance cala
   - Contro: Richiede etichette nuove (ground truth)
   
3. DATA-BASED (Data Drift)
   - Retrain se distribuzione input cambia significativamente
   - Pro: Reattiva a veri cambiamenti
   - Contro: Richiede monitoraggio continuo

FATTORE CRITICO PER TUTTE: Visibility to Production Performance

Senza visibilità su cosa fa il modello in produzione,
non sai quando retrain!
```

**Domanda 83: Problemi Improvvisi in Produzione**

```
SCENARIO:
- Modello funzionava bene per mesi
- Improvvisamente: risultati strani

CAUSE PLAUSIBILI:

1) Software upgrade sui device utenti
   - Dati nei formato diverso
   - Modello non sa interpretarli correttamente
   
2) Cambio comportamento utenti
   - Nuovo tipo di utenti accedendo sistema
   - Dati fuori dall'esperienza di training
   
3) Data drift
   - Distribuzione input è cambiata nel tempo

SOLUZIONE: Monitoring + Retraining
```

#### **6.3.1 A/B Testing**

**Domanda 44: Testare Nuovo Algoritmo**

```
SCENARIO:
- Vecchio algoritmo in produzione (1 anno)
- Nuovo algoritmo testato offline
- Come sai se il nuovo è migliore?

SOLUZIONE: A/B Testing

- Variant A (50% utenti): Vecchio algoritmo
- Variant B (50% utenti): Nuovo algoritmo

DURATA: 1-3 mesi
METRICA: Profitti, conversioni, engagement

Se Variant B > Variant A:
- Deploy a tutti
- Altrimenti, mantieni vecchio
```

---

### 6.4 Compliance e Documentazione

**Domanda 43: Deployment in Assicurazione**

```
SCENARIO: Modello assicurativo decide se approvare claim

COSA ASSOLUTAMENTE NECESSARIO:

1) DOCUMENTAZIONE PROCESSO ✓
   - Come il modello è stato sviluppato
   - Dati usati
   - Decisioni prese
   - Risultati test
   
2) CONFORMITÀ LEGALE ✓
   - Sono legge governamentali da seguire?
   - Regolamenti industria?
   - Diritti privacy (GDPR)?
   - Diritti discriminazione?

MANCANZA = Problemi legali seri
```

**Domanda 69: Auditability per Disputa**

```
SCENARIO:
- Cliente disputa rifiuto prestito dall'AI
- Bank deve dimostrare processo era giusto

DOCUMENTAZIONE RICHIESTA:
✓ Metodi raccolta dati e consenso ottenuto
✓ Chain of responsibility (chi accedeva dati)
✓ Qualità e accuratezza assessment
✓ Versione modello usato
✓ Feature usate
✓ Training set caratteristiche

ASSENZA = Non puoi provare il modello era giusto → Rischio legale
```

---

## CAPITOLO 7: ETICA, BIAS E SICUREZZA

### 7.1 Tipi di Bias Discriminatorio

Già discussi nel Capitolo 2, ma approfondimento ulteriore:

**AUTOMATION BIAS**

```
DEFINIZIONE:
Persone si fidano eccessivamente di decisioni automatiche
Accettano senza critica output dell'AI

ESEMPIO:
- Medico accetta diagnosi AI senza verificare
- Giudice accetta raccomandazione AI senza ragionamento
- HR approva/nega candidato basato solo su AI

PERICOLO:
Se AI ha errore, il danno è moltiplicato
Nessun controllo critico umano

SOLUZIONE:
- Sempre richiedere revisione umana
- Formare users a NON fidarsi ciecamente
- AI supporta decisione, non le prende
```

---

### 7.2 Vulnerability e Security

**Domanda 9, 88: Vulnerability che Malicious Actor Può Sfruttare**

```
OPZIONI:
A) Unsupervised learning - non è una vulnerability
B) Data extraction ✓ CORRETTA - vulnerability reale
C) Data encryption - è protezione, non vulnerability
D) Overfitting - non è security vulnerability

DATA EXTRACTION = Attaccante estrae dati sensitivi dal modello

ATTACCO ESEMPIO (Membership Inference):
Attaccante: "Chiedo al modello 1000 volte sulla stessa persona"
Modello: Se confidence varia, persona probabilmente era in training
Risultato: Attaccante scopre chi era nel dataset (privacy breach!)
```

**Domanda 80: Scenari di Fallimento (Lettuce Disease Detector)**

```
SCENARIO:
- AI addestrato per rilevare malattie su foglie insalata
- Modello testato con foto in laboratorio

COSA POTREBBE ANDARE MALE IN PRODUZIONE:

A) Lettuga in campo diversa da lab (luce, angolo, sporco) ✓
   - Training: foto pulite in laboratorio
   - Produzione: campo sporco, luce naturale
   - Modello non generalizza

B) Usare AI per verdure diverse (cavolo, spinaci) ✓
   - Training: solo insalata
   - Produzione: altre verdure
   - Model drift! Il modello non sa cosa fare

LEZIONE: Assicura training data è rappresentativo
        di condizioni produzione reali!
```

### 7.3 Explainability e Transparency

**Domanda 38, 39: Quando Explainability è Critica**

**Domanda 38: Facial Recognition Training**

```
SCENARIO:
- Software riconoscem visi in ufficio
- Devi addestrare security guards

COSA DEVE CONTENERE TRAINING PLAN:

A) Testing per accuracy → NO
B) Revisione explainability ✓ CORRETTA
C) Tutorial su neural networks → NO
D) Procedura per reclami → NO, è management, non training

Security guard deve CAPIRE:
- Perché il software ha identificato Persona X?
- Cosa guarda il software (viso riconoscibile)
- Quando fidarsi vs. quando chiedere conferma
```

**Domanda 39: Dataset per Dispute**

```
SCENARIO:
- AI nega prestito
- Cliente disputa decisione

DOMANDA: Quali informazioni servono per difesa?

OPZIONI:
A) Engineer che ha scritto il code → NON rilevante
B) Dataset di training ✓ CORRETTA
   - Mostra che modello è stato allenato su dati rappresentativi
   - Dimostra processo era equo
C) Numero esperimenti → irrilevante
D) Numero predictions in produzione → irrilevante

Dataset dimostra che il modello ha APPRESO dai dati corretti
```

---

### 7.4 Explainability Methods (LIME, SHAP)

**LIME (Local Interpretable Model-agnostic Explanations)**

```
IDEA:
Spiega singola previsione del modello usando modello locale interpretabile

PROCESSO:
1. Prendi una previsione specifica (es. email marcata come SPAM)
2. Perturba leggermente input (cambia parole, aggiungi rumore)
3. Osserva come previsione cambia
4. Allena albero decisionale su perturbazioni
5. L'albero mostra quali feature importanti per questa previsione

RISULTATO:
"Questa email è stata marcata SPAM perché:
 - Contiene '$ $ $' (peso +0.8)
 - Mittente sconosciuto (peso +0.6)
 - Subject contiene 'URGENTE' (peso +0.4)
 - Ha allegati (peso -0.2)
 TOTAL SCORE = SPAM (0.8)"
```

**SHAP (SHapley Additive exPlanations)**

```
IDEA:
Usa teoria dei giochi (Shapley values) per calcolare contributo di ogni feature

VANTAGGI RISPETTO A LIME:
- Più rigoro teorico
- Conta interazioni tra feature
- Feature importance globale (non solo locali)

RISULTATO (SIMILE A LIME):
"Feature importance per email SPAM:
 - Parole 'money, urgent, click' → +0.8
 - Mittente su blacklist → +0.6
 - Formatting strano → +0.3
 - Subject generico → -0.1"
```

---

## CAPITOLO 8: TEAM E PROJECT MANAGEMENT

### 8.1 Ruoli nel Team AI

**Domanda 7: Perché Includere Domain Experts?**

```
OPZIONI:
A) Insegnare loro AI ← NO, non è il ruolo
B) Fornire dati domain-specifici e ridurre bias ✓ CORRETTA
C) Valutare strumenti di integrazione → NO
D) Organizzare e pulire dati → NO, è data engineer

DOMAIN EXPERT (Veterinarian Radiologist, Insurance Agent, ecc.):
- Sa COSA è rilevante (qualità feature)
- Identifica dati sbilanciati
- Riconosce bias invisibili a data scientist
- Valida risultati hanno senso nel mondo reale
```

**Domanda 8: Assemblare Team per Radiologia Veterinaria**

```
SCENARIO: Animal Hospital, rilevare tumori da X-ray

DOMANDA: Scegliere 2 PERSONE GIUSTE

OPZIONI:
A) Pet boarding owner ← NO, non conosce medicina
B) AI developer con experience image classification ✓ SÌ
C) Veterinary technician ← NO, aiuta in chirurgia, non diagnostica
D) Pharma sales rep ← NO, vende farmaci
E) Expert veterinarian radiologist ✓ SÌ
F) Hospital CFO ← NO, finanza, non scienza

GIUSTI: B (AI expertise) + E (Domain expertise)
Manca: Nessuno, team è completo!
```

### 8.2 Internal vs External Stakeholders

**Domanda 78: Stakeholder Interno per Deployment**

```
SCENARIO:
- Azienda ha 100 progetti AI
- Il TUO progetto è uno di questi

DOMANDA: Chi è stakeholder INTERNO che deve approvare?

OPZIONI:
A) Engineer che ha sviluppato ML simile
   → NO, non autorevole per approvazione
B) HR specialist
   → NO, non rilevante
C) Clienti del training data
   → NO, sono EXTERNAL
D) Production ML engineering team ✓ CORRETTA
   → SÌ, loro gestiscono produzione, devono approvarsi

INTERNO: Dentro azienda (team produzione, manager, compliance)
ESTERNO: Fuori azienda (clienti, regolatori, pubblico)
```

---

### 8.3 Governance e Incident Management

**Domanda 11: Chi Monitora Incident Database?**

```
SCENARIO:
- Industria condivide AI incident database
- Per migliorare safety insieme

DOMANDA: Chi monitora?

OPZIONI:
A) UI Designer ← NO
B) Product Manager ✓ CORRETTA
   - Valuta nuove feature
   - Considere incident nella design
   - Prende decisioni su nuove funzionalità
C) Developer ← NO
D) Project Manager ← NO

PRODUCT MANAGER è responsabile:
- Cosa il prodotto fa
- Nuove feature
- Gestione rischi
- Valutazione incident
```

---

## CAPITOLO 9: CASI D'USO E APPLICAZIONI PRATICHE

### 9.1 Quando Usare/Non Usare AI

**Domanda 52: Quando NON Usare AI**

```
SCENARIO:
- Museo ha 15 anni di visitor data (timestamped entrate/uscite)
- Direttore vuole: Predire numero visitatori a data specifica nel passato

DOMANDA: Serve AI?

OPZIONI:
A) NO, query diretta i dati! ✓ CORRETTA
B) SÌ, usare regressione
C) SÌ, supervised learning
D) SÌ, unsupervised learning

MOTIVO:
Il dato ESATTO è nel database!
Se vuoi visitatori il 15 maggio 2019 alle 14:00:
Query: SELECT count FROM visitor_log WHERE date='2019-05-15' AND time='14:00'

Perché usare AI per approssimare quando hai dato preciso?
```

**Domanda 50: Quando Usare AI per Automazione (Scegli 3)**

```
OPZIONI:
A) Understanding documents ✓ - OCR, NLP
B) Logging into applications ← NO, è sicurezza/auth
C) Discovering tasks to automate ✓ - Process mining, ML
D) Copying/pasting data ✓ - RPA, template matching
E) [Not listed but would be others]

APPROPRIATO PER AI:
- Task intelligenti che richiedono comprensione
- Pattern recognition
- Documentazione

NON APPROPRIATO:
- Autenticazione (è sicurezza)
- Task deterministici semplici
```

---

### 9.2 Classification vs Regression

**Domanda 54: Regression Problem**

```
OPZIONI:
A) Rilevare prodotto difettoso da immagine → Classification
B) Rank-ordered movie recommendations → Classification
C) Predire prezzo casa da feature ✓ REGRESSION
D) Rilevare malattia da MRI → Classification

RAGIONE: Prezzo è valore CONTINUO (€250.000, €350.500, ecc.)
```

**Domanda 55: Classification Problem**

```
OPZIONI:
A) Sentiment email customer support ✓ CLASSIFICATION
B) Prezzo casa → Regression
C) Strategia chess → Reinforcement
D) Stock price → Regression/Forecasting

RAGIONE: Sentiment è categoria discreta (positivo/negativo/neutro)
```

---

### 9.3 Data Storytelling e Visualization

**Domanda 28: Tipo di Visualizzazione**

```
SCENARIO:
- Grafico percentuale popolazione con bank account
- Divide per GENDER (M/F) e per YEAR (2010-2020)

DOMANDA: Tipo di visualization?

OPZIONI:
A) Change over time → NO, il primo focus
B) Intersectional ✓ CORRETTA
C) Factor
D) Contrast

INTERSECTIONAL:
Mostra come due variabili (gender + year) si intersecano
Permette di vedere: cambio nel tempo PER gender
```

---

## CAPITOLO 10: ESAME FINALE - Tips e Strategie

### 10.1 Concetti Chiave da Memorizzare

```
✓ 80/20 split (training/test)
✓ Confusion matrix: TP, FP, FN, TN
✓ Accuracy = (TP+TN)/Total (fuorviante con dati sbilanciati!)
✓ Precision = TP/(TP+FP) (quando falsi positivi costano)
✓ Recall = TP/(TP+FN) (quando falsi negativi costano)
✓ F1 = media armonica P e R
✓ RMSE per regressione
✓ Overfitting: training>>test accuracy
✓ Underfitting: entrambi bassi
✓ Non usare AI se risolvibile con regole semplici
✓ Data drift = distribuzione input cambia nel tempo
✓ Model drift = chiedi modello cosa non sa fare
✓ Domain experts = ridurre bias, fornire insight
✓ Inference = fare previsioni con modello
✓ LIME/SHAP = explainability
✓ Decision trees = interpretabili
✓ K-Means = clustering unsupervised
✓ RNN/LSTM = sequenze temporali
✓ CNN = immagini
✓ Transformer/GPT = NLP moderno
```

### 10.2 Errori Comuni all'Esame

```
ERRORE 1: Confondere Supervised/Unsupervised
- Supervised = etichette note (training data etichettati)
- Unsupervised = scoprire pattern da dati grezzi

ERRORE 2: Usar Accuracy su dati sbilanciati
- 99% accuracy non significa modello buono se dati 99% una classe!
- Usare Precision, Recall, F1, Confusion Matrix

ERRORE 3: Dirompere quando usare/non usare AI
- Se problema risolvibile con 50 regole IF/ELSE → non serve AI
- Regole sono veloci, trasparenti, mantenibili

ERRORE 4: Confondere Training/Test/Validation set
- Training = per imparare
- Validation = per tuning hyperparameters (opzionale)
- Test = RISERVATO, mai toccato finché fine

ERRORE 5: Pensare modello complesso = migliore
- Semplest model che funziona è meglio (Occam's Razor)
- Complessità aggiunge overhead senza beneficio

ERRORE 6: Dimenticare etica/bias
- Bias non è "nice to have", è CRITICO
- Data collection bias = danno sistematico
- Deployment senza considerare equità = problema legale
```

### 10.3 Strategie di Risposta

**Quando Incerto:**

1. **Elimina ovvio sbagliato**
   - Se vedi "neural network" per 10 domande Yes/No → probabilmente no
   - Se vedi "clustering" per classification → probabilmente no

2. **Domain logic**
   - Supervised vs Unsupervised? Ci sono etichette?
   - Classification vs Regression? Output è categoria o numero?
   - Online vs Batch deployment? Latenza critica?

3. **Guarda i numeri**
   - 99.7% train, 72% test? OVERFITTING
   - 60% train, 55% test? UNDERFITTING
   - 85% train, 80% test? GOOD

4. **Ricorda i principi**
   - Non usare AI se regole semplici funzionano
   - Sempre considera bias e fairness
   - Documentation è essenziale per compliance

---

## CONCLUSIONE

Il machine learning e l'AI non sono "magic". Sono:
1. **Fondamenti Matematici**: Algebra lineare, calcolo
2. **Processo Sistematico**: Raccolta dati → Preparazione → Training → Evaluation → Deployment → Monitoring
3. **Arte e Scienza**: Scegliere modelli, tuning, interpretazione
4. **Responsabilità**: Bias, etica, trasparenza, governance

Il 80% del lavoro è in preparazione dati. Il 10% è allenamento. Il 10% è deployment e monitoring.

Buona fortuna all'esame!