Esercizio - Analisi esplorativa e preprocessing - macchinario, abitazioni, case di Ames e incendi
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:
- Macchinario industriale (20 000 righe, di cui se ne usano ): predire
will_fail(guasto entro due settimane) da temperature, vibrazioni, errori, umidità, potenza, modalità operativa e stato di manutenzione. - Abitazioni della California modificate (20 649 righe): feature di California Housing più
OperatorIDeYearConstructed. - Case di Ames (1100 righe, 17 colonne): predire
SalePrice. - Incendi forestali (517 righe): predire
areabruciata.
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
- Descrizione generale (
describe,info): tipi, intervalli, valori mancanti, outlier. - Valori mancanti: quanti e dove; pochi imputare con media o mediana (numeriche) o moda (categoriche), oppure eliminare le righe; quasi tutti eliminare la colonna.
- Tipi reali: una variabile numerica con pochi valori distinti e significato di identificatore è categorica.
- Correlazioni tra feature (heatmap): coppie ad alta portano la stessa informazione; si tiene una, per ridurre il rischio di overfitting e la collinearità.
- Correlazioni con il target: feature quasi incorrelate sono candidate all'eliminazione.
- Distribuzione e outlier (istogrammi, box plot): outlier da errori o rilevanti? Distribuzioni asimmetriche del target.
- Variabili categoriche: conteggi per categoria, relazione con il target (box plot, proporzioni).
- Target: sbilanciamento (classificazione) o asimmetria (regressione).
- 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() evibration_levelsu : pochi, numerici imputazione con la media (o eliminazione delle righe). - Ridondanza:
motor_temp_kelvinmotor_temp_celsius(): si elimina una;coolant_tempsegue la temperatura del motore (): si può eliminare una delle due (con pochi campioni, meno variabili riducono l'overfitting). - Inutile:
ambient_humidityha distribuzione uniforme e correlazione con il target: si elimina. - Outlier:
power_consumptionha valori fuori dai baffi () su ; potrebbero essere guasti reali: non vanno tolti senza motivo. - Categoriche:
maintenance_flag: il tasso di guasto è con manutenzione scaduta (Overdue), conBase, con manutenzione appena fatta (Done): molto informativa;operating_mode( modalità) ha una relazione più debole. Si codificano: one-hot peroperating_mode; permaintenance_flagesiste un ordine naturale (Done < Base < Overdue), quindi codifica ordinale () è ragionevole. - Target sbilanciato: di guasti 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:
AveRoomseAveBedrmssu (): imputazione con la mediana o eliminazione delle righe. - Ridondanza:
YearConstructedeHouseAgehanno correlazione : contengono la stessa informazione: se ne tiene una. - Tipo reale:
OperatorIDha solo valori distinti, ciascuno con circa 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: H OCEAN , INLAND , NEAR OCEAN , NEAR BAY , ISLAND solo : la categoriaISLANDha troppo pochi campioni per essere affidabile (si potrebbe accorpare). - Discrepanza nel testo dell'appello: la tabella delle feature indica
MedInccome «variabile target», ma nel dataset c'è ancheMedHouseVal(la variabile target di California Housing, valore mediano delle case) e il codice della soluzione usatarget_var = "MedInc". Il testo e il codice non coincidono; va chiarito quale sia il target prima di analizzare le relazioni (la correlazioneMedInc-MedHouseValè ).
3. Case di Ames
- Mancanti: pochi (- per colonna su ): imputazione con la mediana (numeriche) e la moda (categoriche).
- Ridondanza:
PoolAreaePoolQC(),GarageAreaeGarageCars() si tiene una per coppia;PoolAreaha correlazione conSalePrice(quasi tutte le case non hanno piscina): si possono togliere entrambe. - Relazioni con il target:
OverallQual(),GrLivArea(),TotalBsmtSF(): relazioni lineari evidenti nel pair plot;LotAreasolo . - Target
SalePrice: distribuzione asimmetrica a destra (asimmetria , media contro mediana ): per i modelli lineari può convenire una trasformazione logaritmica. - Categoriche:
Neighborhoodmostra differenze nette di prezzo tra quartieri (informativa),LandContour( su sonoLvl) eFence( senza recinzione) no e sono molto sbilanciate: probabilmente da scartare o accorpare le categorie rare.
4. Incendi forestali
- Mancanti:
soil_humidity,propagation_speed,wind_speedsu : imputazione con la mediana. - Ridondanza:
fuel_availableedrought(): si può eliminare una. - Target:
areaha il di valori zero, mediana , media e massimo : distribuzione molto asimmetrica (asimmetria ). Un modello lineare tende a predire bene i valori piccoli e male i grandi. - Correlazioni con il target: nessuna è forte (la massima è
tempcon ): 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 - 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.