← ~/progetti
Anomaly detection su sensori
Riconoscere guasti nelle letture di una navetta (Statlog Shuttle)
- anno
- 2026
- stato
- ● completato
- contesto
- Progetto d'esame di Machine Learning, ITS Angelo Rizzoli
0,959F1
autoencoder, senza etichette
0,999AUC
autoencoder, senza etichette
1,000F1
ensemble sul test set
// problema
Distinguere gli stati di funzionamento normali da quelli anomali partendo dalle letture di nove sensori: 49.097 campioni, di cui solo il 7,2% anomali.
// pipeline
- 01 sensori
- 02 standardizzazione
- 03 autoencoder + RF + XGBoost
- 04 ensemble
- 05 soglia F1
// approccio
- Autoencoder denso in PyTorch (9 → 6 → 3 → 6 → 9) addestrato solo sui dati normali: l'errore di ricostruzione diventa il punteggio di anomalia.
- Random Forest e XGBoost addestrati sui dati etichettati, con pesi per lo sbilanciamento delle classi.
- I tre punteggi, normalizzati sul validation set, vengono mediati in un ensemble.
- Soglia scelta massimizzando l'F1 sul validation e applicata una sola volta al test. Scaler e normalizzazioni stimati senza mai guardare il test.
// scelta chiave
Prima di Shuttle ho provato un dataset sulla potabilità dell'acqua: AUC 0,50, nessun segnale. L'ho scartato invece di forzare un risultato, e ho scelto un benchmark pubblico con anomalie realmente separabili.
// esito
Il dato più interessante è quello dell'autoencoder: quasi le stesse prestazioni dei modelli supervisionati senza aver mai visto un'etichetta.
// tecnologie
- Python
- PyTorch
- scikit-learn
- XGBoost