Statistica per il machine learning
In questa pagina 5
Prima di addestrare un modello bisogna capire i dati che gli si danno in ingresso. Questa nota raccoglie gli strumenti statistici usati a questo scopo (Lezione 2 · Introduzione e basi di statistica). La parte grafica e le correlazioni sono in Correlazione e visualizzazione dei datiLa correlazione di Pearson $r=\sum(X_i-\bar X)(Y_i-\bar Y)/\big(\sqrt{\sum(X_i-\bar X)^2}\sqrt{\sum(Y_i-\bar Y)^2}\big)\in[-1,1]$ misura la relazione lineare tra due variabili (covarianza divisa per le deviazioni standard); correlazione non implica causalità. Serve a capire quali variabili contano per il target e a eliminare quelle quasi duplicate (|r| molto alto). Gli indicatori di sintesi non bastano (quartetto di Anscombe, Datasaurus): vanno affiancati ai grafici: istogramma, KDE, box plot, violin plot, heatmap di correlazione, scatter plot e matrice di scatter plot.Correlazione e visualizzazione dei dati →; gli stessi calcoli fatti con Python sono in Python per il machine learning - NumPy, pandas e MatplotlibIl corso usa Python in Jupyter/Colab. Servono: variabili e tipi, if/for/while, funzioni (i tipi immutabili si passano per valore: per cambiare un numero la funzione deve restituirlo), classi, e le strutture list, tuple, set, dict. NumPy gestisce array e algebra lineare (assi, broadcasting, @, hstack, np.cov(rowvar=False)), pandas le tabelle (read_csv, filtri, value_counts, statistiche; var con $n-1$ contro np.var con $n$), Matplotlib e seaborn i grafici (istogrammi, box plot, heatmap, pair plot). Trappole tipiche: forma $(n,)$ contro $(n,1)$, asse sbagliato, statistiche calcolate sul dataset intero.Python per il machine learning - NumPy, pandas e Matplotlib → e negli esercizi Esercizio - Statistica descrittiva, quartili e standardizzazione di un dataset e Esercizio - Correlazione di Pearson su tre e quattro osservazioni. Il quadro generale è in Introduzione al machine learningIl machine learning (ML) è la parte dell'intelligenza artificiale che costruisce soluzioni a partire dai dati e non da regole scritte a mano: un modello matematico con parametri liberi viene addestrato su esempi storici e poi usato su dati nuovi. Si distingue tra apprendimento supervisionato (dati $(x,y)$, si impara la mappa $x\mapsto y$: regressione se $y$ è un numero, classificazione se è una categoria), non supervisionato (solo $x$, si cercano struttura e gruppi) e per rinforzo (stato, azione, ricompensa). Un progetto ML non è «plug and play»: segue le fasi problema, raccolta, pulizia, modellazione, rilascio, e va valutato su dati mai visti; senza dati non c'è modello, alcuni fenomeni sono imprevedibili, la generalizzazione fuori dal dominio di addestramento non è garantita.Introduzione al machine learning →.
Compiti, modelli e dati
Tre parole da non confondere.
- Il compito (task) è il problema specifico che si vuole risolvere: prevedere un prezzo, riconoscere un fiore, trovare gruppi di clienti.
- Il modello è una rappresentazione matematica dei pattern e delle relazioni nei dati: viene addestrato con un algoritmo per fare previsioni o decisioni a partire da dati in ingresso.
- I dati possono essere di tipo diverso (tabelle, immagini, testo) e il modello va scelto di conseguenza.
La matrice di progetto
Definizione (matrice di progetto o design matrix). I dati tabulari si organizzano in una matrice con righe e colonne:
- ogni riga è un'osservazione (o campione, sample): una volta in cui il fenomeno da descrivere compare nei dati storici, quindi è il numero di osservazioni;
- ogni colonna è un attributo (o variabile, o feature): una grandezza potenzialmente legata al fenomeno, quindi è il numero di variabili.
Esempio. Per prevedere il prezzo delle case, ogni riga è una casa venduta e le colonne sono metri quadri, numero di stanze, anno di costruzione: con 1 000 case e 3 attributi, ha righe e colonne.
Più grande è meglio? In generale servono osservazioni numerose, ma il valore di è un compromesso: più variabili possono portare più informazione, ma anche ridondanza e rumore (vedi Overfitting, ridge regression e cross-validationUna buona prestazione sul training non basta: serve stimare quella su dati nuovi. La cross-validation (K-fold: $k$ parti, ciascuna a turno come test, errore medio; Monte Carlo: $k$ divisioni casuali con quota di test $q$; leave-one-out se $k=n$) evita di dipendere da una sola divisione casuale. L'errore atteso si scompone in $\text{bias}^2+\text{varianza}+\sigma^2$: i modelli semplici fanno underfitting (bias alto), quelli complessi overfitting (varianza alta). La regolarizzazione aggiunge alla perdita una penalità: la ridge regression minimizza $|y-X\beta|^2+\lambda\sum_{j\ge1}\beta_j^2$ e ha soluzione $\beta=(X^TX+\lambda\tilde I)^{-1}X^Ty$ (l'intercetta non si penalizza, le feature si standardizzano): riduce i coefficienti, rende l'inversa stabile con feature collineari, e $\lambda$ è un iperparametro scelto con la validazione (cross-validation annidata per non contaminare il test).Overfitting, ridge regression e cross-validation →). Non sempre è facile definire che cosa sia una «osservazione»: per un sistema descritto da serie temporali, per esempio, si calcolano grandezze su ciascuna finestra temporale e ogni finestra diventa una riga.
Che cosa deve valere prima di dare al modello.
- I dati devono essere coerenti.
- Se non c'è una conoscenza a priori, tutte le variabili vanno trattate allo stesso modo.
- Non si devono fornire informazioni ridondanti o inutili: il modello deve avere vita facile.
Gli strumenti statistici di questa nota aiutano a rispettare queste condizioni.
La pipeline e il ruolo della statistica
La pipeline di ML ha tre blocchi: preprocessing (capire e preparare i dati), costruzione del modello, valutazione. La statistica interviene in tutti e tre:
| Fase | Uso della statistica |
|---|---|
| Preprocessing | statistiche descrittive (media, varianza, distribuzioni) per esplorare e pulire, trovare pattern e outlier; correlazione, PCA e scaling per l'ingegneria delle feature |
| Costruzione | probabilità e incertezza (modelli probabilistici), generalizzazione, overfitting, compromesso bias-varianza |
| Valutazione | metriche come MSE, MAE, accuracy, precision, recall |
I momenti statistici
Definizione (momento di ordine ). Per una variabile aleatoria il momento di ordine è (valore atteso: Valore attesoIl valore atteso E[X] = Σ x p_X(x) è la media dei valori di X pesata con le loro probabilità (esiste se la serie converge assolutamente); per una funzione g vale E[g(X)] = Σ g(x) p_X(x) senza trovare la legge di g(X), ed E è lineare: E[aX + bY + c] = aE[X] + bE[Y] + c.Valore atteso →; momenti e varianza: Varianza e momentiI momenti E[X^k] e i momenti centrati E[(X − μ)^k] descrivono la forma di una legge; la varianza Var(X) = E[(X − μ)²] = E[X²] − E[X]² misura quanto X si disperde attorno alla media, vale Var(aX + b) = a² Var(X) e Var(X) = 0 solo se X è costante.Varianza e momenti →):
Dai momenti si costruiscono quattro indicatori che descrivono la forma della distribuzione.
Formula (indicatori teorici).
- Media: (tendenza centrale).
- Varianza: (dispersione).
- Asimmetria (skewness): .
- Curtosi (kurtosis): .
Momenti teorici e campionari. Le formule precedenti riguardano la distribuzione vera, che non si conosce. Con i dati disponibili si calcolano le versioni campionarie, sostituendo il valore atteso con la media aritmetica sugli campioni (è lecito perché, per la Legge dei grandi numeri e metodo Monte CarloSe X₁, X₂, ... sono i.i.d. con media μ, la media campionaria X̄ₙ = (X₁ + ... + Xₙ)/n converge a μ: in probabilità (legge debole, dimostrata con Chebyshev se la varianza è finita: P(|X̄ₙ − μ| > ε) ≤ σ²/(nε²)) e quasi certamente (legge forte). Metodo Monte Carlo: ∫ g = E[g(U)] si stima con la media di g(U₁), ..., g(Uₙ) per uniformi indipendenti.Legge dei grandi numeri e metodo Monte Carlo →, la media dei campioni tende al valore atteso al crescere di ; il simbolo di somma è in SommatorieIl simbolo di sommatoria, le sue proprietà (linearità, additività, cambio di indice) e le somme notevoli di Gauss e geometrica.Sommatorie →):
Formula (momenti campionari). Con i valori osservati:
Esempio. , . Media: . Scarti dalla media: .
Dettaglio sulla varianza. Il divisore è (varianza della popolazione). Molte librerie dividono per (stima corretta della varianza di una popolazione a partire da un campione): pandas usa , numpy usa (con ddof=1 anche numpy usa ). Per grande la differenza è trascurabile; le slide e queste note usano .
Che cosa dicono i quattro indicatori
- Media: il centro di gravità dei dati. Distribuzioni con la stessa media possono avere varianze molto diverse.
- Varianza e deviazione standard (che ha la stessa unità dei dati): quanto i valori si discostano dalla media.
- Asimmetria. È 0 per una distribuzione simmetrica. Se la coda destra è più lunga (la massa è concentrata a sinistra); se la coda più lunga è la sinistra.
- Curtosi. Misura quanto sono «pesanti» le code rispetto alla distribuzione normale (Distribuzione gaussiana (normale)N(μ, σ²) ha densità e^(−(x−μ)²/(2σ²)) / √(2πσ²), a campana centrata in μ con larghezza σ; media μ, varianza σ²; si standardizza con Z = (X − μ)/σ ~ N(0, 1) e si calcola P(X ≤ x) = Φ((x − μ)/σ), con Φ(−z) = 1 − Φ(z); aX + b è ancora gaussiana, N(aμ + b, a²σ²).Distribuzione gaussiana (normale) →), per cui .
| Curtosi | Nome | Forma |
|---|---|---|
| mesocurtica | come la normale | |
| leptocurtica | code più pesanti (più valori estremi), picco più appuntito | |
| platicurtica | code più leggere (meno valori estremi), più piatta e larga |
Esempio numerico completo
Con :
- Media: .
- Varianza: gli scarti quadratici sono , , , , (ciascuno due volte, perché i valori sono simmetrici rispetto alla media). Somma e quindi , .
- Asimmetria: gli scarti cubici sono a due a due opposti ( e , e così via), quindi la somma è : , distribuzione simmetrica.
- Curtosi: scarti alla quarta , , , , (ciascuno due volte). La somma è , quindi distribuzione platicurtica.
Attenzione a un errore nelle slide. Nelle slide le potenze quarte sono scritte come , , … con somma ; i valori corretti sono quelli scritti sopra (somma ). Il risultato finale (platicurtica) è comunque giusto: lo conferma anche scipy.stats.kurtosis(X, fisher=False), che restituisce . Alla classificazione («, platicurtica») non cambia nulla, ma ricalcolare le potenze quarte con precisione è il modo di non farsi ingannare.
Quartili, mediana e IQR
Definizione (quartili). Dividono i dati ordinati in quattro parti con lo stesso numero di osservazioni:
- (25%): valore sotto cui cade il 25% dei dati;
- (50%): la mediana, che divide i dati in due metà;
- (75%): valore sotto cui cade il 75% dei dati;
- scarto interquartile : ampiezza dell'intervallo che contiene il 50% centrale dei dati.
Esempio. Con dati : , , , .
Perché la mediana. Spesso si usa la mediana al posto della media perché è robusta rispetto agli outlier: un solo valore molto grande sposta molto la media, quasi per niente la mediana.
Esempio. : media , mediana .
Quartili con pari (metodo con interpolazione)
Con e si può prendere la media dei due valori centrali: , , , .
Convenzione dell'esame: senza interpolazione
Per la parte teorica dell'esame vale un'altra convenzione, che dà sempre un valore presente nel dataset:
- si ordinano i dati;
- si calcola la percentuale cumulata esatta di ciascun valore ( per l'-esimo);
- per si prende il primo valore la cui percentuale è almeno 25%, 50%, 75%.
Esempio con . Le percentuali sono . Il primo è il , cioè ; il primo è il , cioè ; il primo è l', cioè .
Esempio con . Le percentuali sono . : primo è , quindi . : primo è , quindi . Per la slide indica (il ) e non (che raggiunge esattamente il ): per pari l'esempio delle slide prende dunque il valore subito oltre il 50%. Il testo della regola dice «almeno 50%», quindi l'esempio non è coerente con la regola scritta; quando è pari e un valore cade esattamente sul 50%, conviene attenersi all'esempio delle slide () e indicare nella risposta il criterio usato. La regola scritta («primo valore con percentuale almeno…») corrisponde a np.percentile(..., method="inverted_cdf") (per dà ). Il laboratorio usa invece method="higher", che sulle slide darebbe valori diversi (per : invece di ; per : ), anche se il commento del notebook lo presenta come quello visto a lezione: per i quartili calcolati a mano all'esame vale la procedura delle slide, non il metodo di NumPy.
La moda
Definizione (moda). Il valore che compare più spesso nei dati. È importante per le variabili categoriche, per le quali media e mediana non hanno senso.
Esempio. : media , mediana , moda .
Preparare il dataset
Le quantità statistiche non servono solo a descrivere i dati: servono a sistemarli per il modello. Quattro operazioni.
1. Capire il dataset
Esempio di riferimento: il dataset Iris (Fisher, 1936): fiori, variabili (lunghezza e larghezza di sepali e petali), problema di classificazione a classi (setosa, versicolor, virginica). Tipicamente si guardano per ciascuna variabile media, varianza, quartili e si studiano relazioni tra variabili (vedi Correlazione e visualizzazione dei datiLa correlazione di Pearson $r=\sum(X_i-\bar X)(Y_i-\bar Y)/\big(\sqrt{\sum(X_i-\bar X)^2}\sqrt{\sum(Y_i-\bar Y)^2}\big)\in[-1,1]$ misura la relazione lineare tra due variabili (covarianza divisa per le deviazioni standard); correlazione non implica causalità. Serve a capire quali variabili contano per il target e a eliminare quelle quasi duplicate (|r| molto alto). Gli indicatori di sintesi non bastano (quartetto di Anscombe, Datasaurus): vanno affiancati ai grafici: istogramma, KDE, box plot, violin plot, heatmap di correlazione, scatter plot e matrice di scatter plot.Correlazione e visualizzazione dei dati →).
2. Correggere: i dati mancanti
I dati mancanti sono comuni e molti modelli non funzionano se ci sono. Di solito non si butta via l'intera osservazione, ma si imputa il valore mancante, cioè si sostituisce con una stima:
- media o mediana della variabile, per variabili numeriche (la mediana se ci sono outlier);
- moda per variabili categoriche.
Esempio. Età : la media dei quattro valori noti è , che sostituisce il mancante. Se la variabile ha quasi tutti i valori mancanti conviene invece eliminarla.
3. Migliorare: feature engineering e ridurre
L'ingegneria delle feature (feature engineering) è il processo di creare, selezionare e trasformare le variabili. I dati non si presentano sempre in forma tabulare: da una serie temporale si possono estrarre media, varianza, minimo e massimo su ogni finestra. In senso opposto, bisogna ridurre il dataset eliminando le variabili non informative, per efficienza e per soluzioni più semplici. Di solito non si sa a priori quali siano, e lo si decide durante o dopo la modellazione; con una eccezione ovvia: una variabile costante (varianza ) non porta informazione e va eliminata.
4. Normalizzare: lo z-score
Le variabili hanno scale diverse e quella con valori più grandi può «dominare» le altre (nel calcolo di distanze o nel penalizzare i coefficienti). La standardizzazione (z-score) porta ogni variabile a media e deviazione standard .
Formula (z-score). , con e media e deviazione standard della variabile (la stessa standardizzazione delle variabili gaussiane: Distribuzione gaussiana (normale)N(μ, σ²) ha densità e^(−(x−μ)²/(2σ²)) / √(2πσ²), a campana centrata in μ con larghezza σ; media μ, varianza σ²; si standardizza con Z = (X − μ)/σ ~ N(0, 1) e si calcola P(X ≤ x) = Φ((x − μ)/σ), con Φ(−z) = 1 − Φ(z); aX + b è ancora gaussiana, N(aμ + b, a²σ²).Distribuzione gaussiana (normale) →).
Esempio (dalle slide). : , (con divisore , come fa pandas); gli z-score sono . Con il divisore si avrebbe e valori : le slide usano .
Regola fondamentale. e si calcolano sul solo training set e si usano gli stessi per standardizzare validation e test: calcolarli sul dataset completo fa «trapelare» informazione dal test al training e falsa la valutazione (Regressione lineareNell'apprendimento supervisionato si impara una funzione $F(x)$ dagli esempi $(x,y)$: regressione se $y$ è continua, classificazione se è categorica. Il modello lineare è $F_\beta(x)=\beta_0+\beta_1x_1+\dots+\beta_px_p=X\beta$ (con una colonna di uni per $\beta_0$) e i parametri si scelgono minimizzando l'errore quadratico medio $\mathrm{MSE}=\frac1n\sum_i(y_i-F_\beta(x_i))^2$, funzione convessa dei parametri. Annullando il gradiente di $J(\beta)=|y-X\beta|^2$ si ottengono le equazioni normali $X^TX\beta=X^Ty$ e la soluzione dei minimi quadrati ordinari $\beta=(X^TX)^{-1}X^Ty$. Il coefficiente di determinazione $R^2=1-SS_{res}/SS_{tot}$ misura la qualità del fit (0 = come la media, negativo = peggio della media). Un modello va valutato su un test set mai usato per addestrare: l'errore sul training è ottimistico e un polinomio di grado alto lo azzera senza generalizzare.Regressione lineare →). La normalizzazione fa risparmiare molto tempo di addestramento ed è spesso il passaggio dimenticato.
Grafico interattivo: Normale standard e distribuzione più appuntita con la stessa media e varianza: la seconda ha curtosi maggiore di 3 (code più pesanti e picco più alto)
Errori tipici
- Calcolare media e deviazione standard sul dataset intero (training più test) prima di dividere.
- Confondere la varianza con divisore e quella con divisore : indicare sempre quale si usa.
- Usare la media per dati con outlier o categorici: meglio mediana e moda.
- Imputare con la media prima della divisione train/test e usare statistiche calcolate anche sul test.
- Scordarsi di eliminare le variabili costanti.
Versione ripasso
Definizione. Matrice di progetto : righe (osservazioni) e colonne (variabili/feature). Compito = problema da risolvere; modello = rappresentazione matematica addestrata sui dati.
Esempio. 1 000 case con 3 attributi: , .
Formula (momenti campionari). ; ; ; .
Esempio. : , , , (platicurtica). Le potenze quarte sulla slide sono sbagliate, il risultato finale no.
Indicatori. Skew coda destra lunga; mesocurtica (normale), leptocurtica (code pesanti), platicurtica. Libreria: pandas divide per , numpy per (ddof=1 per ).
Definizione. lasciano sotto il 25%, 50%, 75% dei dati; . La mediana è robusta agli outlier; la moda è per i dati categorici.
Esempio. : , , , .
Esame (senza interpolazione). Ordinare, calcolare le percentuali cumulate, prendere il primo valore con percentuale almeno 25/50/75%. Con la slide dà , , (per prende il valore oltre il 50%, in contrasto con la regola scritta).
Preparare i dati. Mancanti: imputare con media/mediana (numeriche) o moda (categoriche), o eliminare la variabile se quasi vuota. Variabili costanti (): eliminare. Feature engineering: creare/selezionare/trasformare variabili.
Formula (z-score). , con calcolati sul solo training set e riusati su validation e test.
Esempio. , , (): .
Errori tipici: statistiche calcolate anche sul test; non dichiarare il divisore della varianza; media con outlier; non togliere le costanti.
Esercizi su questo argomento
- Esercizio - Analisi esplorativa e preprocessing - macchinario, abitazioni, case di Ames e incendi
- Esercizio - Analisi esplorativa e preprocessing di un dataset sbilanciato (Adult)
- Esercizio - Cross-validation k-fold e Monte Carlo per OLS e ridge sul dataset Advertising
- Esercizio - k-nearest neighbors da zero sul dataset breast cancer
- Esercizio - PCA da zero sul dataset California Housing
- Esercizio - Regressione quantile con funzione pinball e discesa del gradiente
- Esercizio - Ridge regression con standardizzazione e coefficienti in unità originali
- Esercizio - Statistica descrittiva, quartili e standardizzazione di un dataset
- Esercizio - Test di esempio della parte teorica (simulazione d'esame)
Lezioni in cui compare
Teoria collegata
- Analisi delle componenti principali (PCA)
- Anomaly detection
- Classificazione e k-nearest neighbors
- Clustering e k-means
- Correlazione e visualizzazione dei dati
- Introduzione al machine learning
- LASSO e discesa del gradiente
- Overfitting, ridge regression e cross-validation
- Python per il machine learning - NumPy, pandas e Matplotlib
- Regressione lineare