Salta al contenuto
Note per Studenti Esercizio - Analisi esplorativa e preprocessing - macchinario, abitazioni, case di Ames e incendi

Esercizio - Analisi esplorativa e preprocessing - macchinario, abitazioni, case di Ames e incendi

Esame

Questa pagina non ha ancora la versione ripasso: qui sotto c'è il testo completo.

In questa pagina 6

Testo (parte 1 di quattro appelli: 2° 2025, 3° 2025, 1° 2026, 2° 2026). In ogni appello si dà un dataset e si chiede: «esplora il dataset implementando tecniche e visualizzazioni viste a lezione; per ogni aspetto analizzato commenta perché è utile per costruire un modello e quali sono le implicazioni; implementa il preprocessing che ne consegue». I dataset sono:

  1. Macchinario industriale (20 000 righe, di cui se ne usano 500500): predire will_fail (guasto entro due settimane) da temperature, vibrazioni, errori, umidità, potenza, modalità operativa e stato di manutenzione.
  2. Abitazioni della California modificate (20 649 righe): feature di California Housing più OperatorID e YearConstructed.
  3. Case di Ames (1100 righe, 17 colonne): predire SalePrice.
  4. Incendi forestali (517 righe): predire area bruciata.

Si estrae una checklist di analisi con le conclusioni su ciascun dataset.

Teoria usata: Statistica per il machine learningI dati di un problema ML si organizzano nella matrice di progetto $X$ ($n$ osservazioni, $p$ variabili). La statistica serve a capirli, ripulirli e prepararli: i momenti (media $\mu$, varianza $\sigma^2$, asimmetria, curtosi), i quartili con lo scarto interquartile $\mathrm{IQR}=Q_3-Q_1$ (all'esame senza interpolazione), la moda per i dati categorici. Con queste quantità si imputano i dati mancanti (media o mediana), si eliminano le variabili costanti e si standardizza con lo z-score $z=(x-\mu)/\sigma$, usando sempre media e deviazione standard del solo training set.Statistica per il machine learning → (valori mancanti, costanti, standardizzazione); 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 → (correlazioni, istogrammi, box plot, pair plot); Metriche di classificazioneIn classificazione binaria ogni previsione è vero positivo (TP), vero negativo (TN), falso positivo (FP, errore di tipo I) o falso negativo (FN, errore di tipo II). Da queste quattro quantità: accuracy $=\frac{TP+TN}{TP+TN+FP+FN}$, specificità $=\frac{TN}{TN+FP}$, precision $=\frac{TP}{TP+FP}$, recall $=\frac{TP}{TP+FN}$, e la loro media armonica $F_1=\frac{2PR}{P+R}$. Con dati sbilanciati l'accuracy inganna (un modello che predice sempre la classe maggioritaria ha 99%): si usano precision, recall, F1, ROC-AUC, la cross-validation stratificata e il riequilibrio con undersampling o oversampling (non SMOTE). Cambiando la soglia sulla probabilità si ottiene la curva ROC (TPR contro FPR) e l'area AUC. Approfondimento: non nel programma di Telecomunicazioni.Metriche di classificazione → (sbilanciamento); Classificazione e k-nearest neighborsNella classificazione l'uscita $y$ è una categoria (con $C$ classi; $C=2$ è il caso binario). Il classificatore più semplice è il k-nearest neighbors: una nuova osservazione prende la classe più frequente (voto di maggioranza) tra i suoi $k$ vicini più prossimi nel training, con distanza euclidea $\sqrt{\sum(A_i-B_i)^2}$ o di Manhattan $\sum|A_i-B_i|$ (per la regressione si fa la media dei vicini). $k$ è un iperparametro: $k$ piccolo dà bordi frastagliati e overfitting, $k$ grande underfitting. È un metodo basato su istanze e «pigro» (nessun addestramento, costo alla predizione), sensibile a scala e feature irrilevanti e alla maledizione della dimensionalità; gli ingressi categorici si codificano con one-hot. Approfondimento: non nel programma di Telecomunicazioni.Classificazione e k-nearest neighbors → (one-hot).

La checklist

  1. Descrizione generale (describe, info): tipi, intervalli, valori mancanti, outlier.
  2. Valori mancanti: quanti e dove; pochi ⇒\Rightarrow imputare con media o mediana (numeriche) o moda (categoriche), oppure eliminare le righe; quasi tutti ⇒\Rightarrow eliminare la colonna.
  3. Tipi reali: una variabile numerica con pochi valori distinti e significato di identificatore è categorica.
  4. Correlazioni tra feature (heatmap): coppie ad alta ∣r∣|r| portano la stessa informazione; si tiene una, per ridurre il rischio di overfitting e la collinearità.
  5. Correlazioni con il target: feature quasi incorrelate sono candidate all'eliminazione.
  6. Distribuzione e outlier (istogrammi, box plot): outlier da errori o rilevanti? Distribuzioni asimmetriche del target.
  7. Variabili categoriche: conteggi per categoria, relazione con il target (box plot, proporzioni).
  8. Target: sbilanciamento (classificazione) o asimmetria (regressione).
  9. Preprocessing nell'ordine: togliere inutili e ridondanti, mancanti, codifica categoriche, divisione (stratificata se sbilanciato), standardizzazione con statistiche del training.

1. Macchinario industriale

  • Mancanti: motor_temp_celsius 400400 (2%2\%) e vibration_level 4040 su 20 00020\,000: pochi, numerici ⇒\Rightarrow imputazione con la media (o eliminazione delle righe).
  • Ridondanza: motor_temp_kelvin == motor_temp_celsius +273,15+273{,}15 (r=1,000r=1{,}000): si elimina una; coolant_temp segue la temperatura del motore (r=0,93r=0{,}93): si può eliminare una delle due (con pochi campioni, meno variabili riducono l'overfitting).
  • Inutile: ambient_humidity ha distribuzione uniforme e correlazione 0,000{,}00 con il target: si elimina.
  • Outlier: power_consumption ha 197197 valori fuori dai baffi (1,5 IQR1{,}5\,\mathrm{IQR}) su 20 00020\,000; potrebbero essere guasti reali: non vanno tolti senza motivo.
  • Categoriche: maintenance_flag: il tasso di guasto è 97,5%97{,}5\% con manutenzione scaduta (Overdue), 30,6%30{,}6\% con Base, 7,1%7{,}1\% con manutenzione appena fatta (Done): molto informativa; operating_mode (33 modalità) ha una relazione più debole. Si codificano: one-hot per operating_mode; per maintenance_flag esiste un ordine naturale (Done < Base < Overdue), quindi codifica ordinale (0,1,20,1,2) è ragionevole.
  • Target sbilanciato: 30%30\% di guasti ⇒\Rightarrow divisione stratificata, metriche come recall e precision (in manutenzione conviene un recall alto: un controllo inutile costa meno di un guasto), eventuale funzione di perdita pesata.

2. Abitazioni modificate

  • Mancanti: AveRooms 206206 e AveBedrms 248248 su 20 64920\,649 (1%1\%): imputazione con la mediana o eliminazione delle righe.
  • Ridondanza: YearConstructed e HouseAge hanno correlazione 1,001{,}00: contengono la stessa informazione: se ne tiene una.
  • Tipo reale: OperatorID ha solo 77 valori distinti, ciascuno con circa 29502950 campioni (distribuzione uniforme): è un identificatore categorico e non un numero (non ha senso un ordine né una media): si tratta come categorica (e conviene verificare che non sia informativa; se non lo è si elimina).
  • Categorica sbilanciata: OceanProximity: <1<1H OCEAN 91369136, INLAND 65546554, NEAR OCEAN 26602660, NEAR BAY 22932293, ISLAND solo 66: la categoria ISLAND ha troppo pochi campioni per essere affidabile (si potrebbe accorpare).
  • Discrepanza nel testo dell'appello: la tabella delle feature indica MedInc come «variabile target», ma nel dataset c'è anche MedHouseVal (la variabile target di California Housing, valore mediano delle case) e il codice della soluzione usa target_var = "MedInc". Il testo e il codice non coincidono; va chiarito quale sia il target prima di analizzare le relazioni (la correlazione MedInc-MedHouseVal è 0,690{,}69).

3. Case di Ames

  • Mancanti: pochi (11-55 per colonna su 11001100): imputazione con la mediana (numeriche) e la moda (categoriche).
  • Ridondanza: PoolArea e PoolQC (r=0,90r=0{,}90), GarageArea e GarageCars (r=0,88r=0{,}88) ⇒\Rightarrow si tiene una per coppia; PoolArea ha correlazione 0,100{,}10 con SalePrice (quasi tutte le case non hanno piscina): si possono togliere entrambe.
  • Relazioni con il target: OverallQual (r=0,79r=0{,}79), GrLivArea (0,710{,}71), TotalBsmtSF (0,600{,}60): relazioni lineari evidenti nel pair plot; LotArea solo 0,290{,}29.
  • Target SalePrice: distribuzione asimmetrica a destra (asimmetria 1,91{,}9, media 183 199183\,199 contro mediana 164 845164\,845): per i modelli lineari può convenire una trasformazione logaritmica.
  • Categoriche: Neighborhood mostra differenze nette di prezzo tra quartieri (informativa), LandContour (979979 su 11001100 sono Lvl) e Fence (891891 senza recinzione) no e sono molto sbilanciate: probabilmente da scartare o accorpare le categorie rare.

4. Incendi forestali

  • Mancanti: soil_humidity 1515, propagation_speed 88, wind_speed 33 su 517517: imputazione con la mediana.
  • Ridondanza: fuel_available e drought (r=0,88r=0{,}88): si può eliminare una.
  • Target: area ha il 47,8%47{,}8\% di valori zero, mediana 0,520{,}52, media 12,912{,}9 e massimo 1090,81090{,}8: distribuzione molto asimmetrica (asimmetria 12,812{,}8). Un modello lineare tende a predire bene i valori piccoli e male i grandi.
  • Correlazioni con il target: nessuna è forte (la massima è temp con 0,0980{,}098): una regressione lineare non è la scelta migliore; non ci sono relazioni lineari evidenti nel pair plot.
  • Outlier: qui sono proprio i casi più gravi (incendi enormi) e conviene non eliminarli.
  • Categoriche: month è molto sbilanciata (agosto e settembre dominano, gennaio, maggio e novembre hanno 11-22 campioni): l'apparente effetto di dicembre e maggio sul target è poco affidabile; day (giorno della settimana) non ha effetto e si può rimuovere.

Conclusione comune

Le stesse domande danno sempre risultati diversi: dopo l'esplorazione si sa quali variabili togliere (costanti, duplicate, scorrelate dal target), come trattare i mancanti, quali metriche usare (sbilanciamento) e quale trasformazione del target serve. Ogni scelta va motivata con un commento: nell'esame i commenti pesano quanto il codice.

Lezioni in cui compare

Teoria collegata