
Estrazione automatica di caratteristiche rilevanti da serie temporali:
Questo repository contiene il pacchetto Python TSFRESH. L'abbreviazione sta per
"Time Series Feature extraction based on scalable hypothesis tests".
Il pacchetto fornisce un'estrazione sistematica delle feature delle serie temporali combinando algoritmi consolidati di statistica, analisi di serie temporali, elaborazione dei segnali e dinamica non lineare con un robusto algoritmo di selezione delle feature. In questo contesto, il termine serie temporali è interpretato nel senso più ampio possibile, tanto che qualsiasi tipo di dati campionati o persino sequenze di eventi può essere caratterizzato.
I data scientist spesso trascorrono la maggior parte del loro tempo a pulire i dati o a costruire feature. Se non possiamo cambiare la prima cosa, la seconda può essere automatizzata. TSFRESH ti libera il tempo speso nella costruzione delle feature estraendole automaticamente. Di conseguenza, hai più tempo per studiare l'ultimo articolo sul deep learning, leggere Hacker News o costruire modelli migliori.
TSFRESH estrae automaticamente centinaia di feature dalle serie temporali. Queste feature descrivono caratteristiche di base delle serie temporali, come il numero di picchi, il valore medio o massimo, o caratteristiche più complesse come la statistica di simmetria per inversione temporale.

L'insieme delle feature può quindi essere utilizzato per costruire modelli statistici o di machine learning sulle serie temporali, ad esempio per compiti di regressione o classificazione.
Le serie temporali contengono spesso rumore, ridondanze o informazioni irrilevanti. Di conseguenza, la maggior parte delle feature estratte non sarà utile per il compito di machine learning in questione.
Per evitare di estrarre feature irrilevanti, il pacchetto TSFRESH dispone di una procedura di filtraggio integrata. Questa procedura valuta il potere esplicativo e l'importanza di ciascuna caratteristica per i compiti di regressione o classificazione in esame.
Si basa sulla teoria ben sviluppata dei test di ipotesi e utilizza una procedura di test multipli. Di conseguenza, il processo di filtraggio controlla matematicamente la percentuale di feature irrilevanti estratte.
Il pacchetto TSFRESH è descritto nel seguente articolo ad accesso aperto:
L'algoritmo FRESH è descritto nel seguente whitepaper:
I modelli di normalità simulano come gli esseri umani rilevano le anomalie nelle serie temporali:
Teh, H.Y., Wang, K.I-K., Kempa-Liehr, A.W. (2021). Expect the Unexpected: Unsupervised feature selection for automated sensor anomaly detection. IEEE Sensors Journal 15.16, p. 18033-18046, doi: 10.1109/JSEN.2021.3084970.
Teh, H.Y., Wang, K.I-K., Kempa-Liehr, A.W. (2025). Feature-based normality models for anomaly detection. Sensors 25.4757, p. 1-25, doi: 10.3390/s25154757.
L'estrazione sistematica di feature dalle serie temporali funziona anche per problemi non supervisionati:
Poiché tsfresh fornisce praticamente gratuitamente l'estrazione di feature dalle serie temporali, ora puoi concentrarti sulla costruzione di nuove serie temporali, come ad esempio le differenze di segnali provenienti da misurazioni sincrone, che forniscono feature ancora migliori:
Kempa-Liehr, A.W., Oram, J., Wong, A., Finch, M., Besier, T. (2020). Feature engineering workflow for activity recognition from synchronized inertial measurement units. In: Pattern Recognition. ACPR 2019. Ed. by M. Cree et al. Vol. 1180. Communications in Computer and Information Science (CCIS). Singapore: Springer, p. 223–231. doi: 10.1007/978-981-15-3651-9_20.
Simmons, S., Jarvis, L., Dempsey, D., Kempa-Liehr, A.W. (2021). Data Mining on Extremely Long Time-Series. In: 2021 International Conference on Data Mining Workshops (ICDMW). Ed. by B. Xue et al. Los Alamitos: IEEE, p. 1057-1066. doi: 10.1109/ICDMW53433.2021.00137.
L'ingegneria sistematica delle feature delle serie temporali consente di lavorare con campioni di serie temporali di lunghezze diverse, poiché ogni serie temporale viene proiettata in uno spazio delle feature ben definito. Questo approccio permette la progettazione di algoritmi di machine learning robusti in applicazioni con dati mancanti.
Il tuo problema di classificazione delle serie temporali è sbilanciato? C'è una buona probabilità che il sottocampionamento delle matrici di feature delle serie temporali possa risolvere il problema:
Non lavori con serie temporali, ma con immagini 2D e 3D? Le sequenze di variazione spaziale (SVS) sono un'ottima applicazione per tsfresh:
Jeune, H., Pechan, N., Reitsma, S., Kempa-Liehr, A.W. (2021). Spatial Variation Sequences for Remote Sensing Applications with Small Sample Sizes. In: 2024 Image and Video Technology. 11th Pacific-Rim Symposium, Ed. by W.Q. Yan et al., Lecture Notes in Computer Science (14403). Springer Nature: Singapore, p. 153-166. doi: {10.1007/978-981-97-0376-0_12.
Koptev, I., Tian, J., Peel, E., Parker, R., Walker, C., Kempa-Liehr, A.W. (2025). Interpretable Dimensionality Reduction in 3D Image Recognition with Small Sample Sizes. Journal of Nondestructive Evaluation 44.44, p. 1-12, doi: 10.1007/s10921-025-01183-z.
L'elaborazione del linguaggio naturale di testi scritti è un esempio di applicazione dell'ingegneria sistematica delle feature delle serie temporali a sequenze di eventi, descritta nel seguente articolo ad accesso aperto:
TSFRESH ha diversi punti di forza, per esempio
Se sei interessato al funzionamento tecnico, consulta la nostra documentazione completa su Read-The-Docs all'indirizzo http://tsfresh.readthedocs.io.
L'algoritmo, in particolare la parte di filtraggio, è descritto anche nell'articolo menzionato sopra.
Apprezziamo qualsiasi contributo: se sei interessato ad aiutarci a rendere TSFRESH il più grande archivio di metodi di estrazione di feature in Python, basta seguire le nostre istruzioni How-To-Contribute.
Se vuoi provare tsfresh rapidamente o se vuoi integrarlo nel tuo flusso di lavoro, abbiamo anche un'immagine Docker disponibile:
docker pull nbraun/tsfresh
Se devi riprodurre o aggiornare feature di serie temporali calcolate con i calcolatori di feature matrixprofile, devi creare un ambiente Python 3.8:
conda create --name tsfresh__py_3.8 python=3.8
conda activate tsfresh__py_3.8
pip install tsfresh[matrixprofile]
La ricerca e lo sviluppo di TSFRESH sono stati finanziati in parte dal Ministero Federale tedesco dell'Istruzione e della Ricerca con il numero di sovvenzione 01IS14004 (progetto iPRODICT).