Vai al contenuto
~/massi

← ~/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

  1. 01 sensori
  2. 02 standardizzazione
  3. 03 autoencoder + RF + XGBoost
  4. 04 ensemble
  5. 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
prossimo progettoBallUpTop