Lo Shazam dell’Energia: Classifichiamo i Consumi con l’Hashing!
Amici appassionati di tecnologia e sostenibilità, preparatevi! Oggi vi porto dietro le quinte di una ricerca che, ve lo dico subito, ha del rivoluzionario. Immaginate di poter “ascoltare” il consumo energetico di un macchinario e capire immediatamente cosa sta producendo, un po’ come Shazam riconosce una canzone. Fantascienza? Non proprio! Ci siamo ispirati proprio a quel genio di algoritmo per affrontare una sfida cruciale nel mondo manifatturiero: la classificazione dei profili di consumo energetico.
Nel nostro lavoro, abbiamo esplorato come un algoritmo di “fingerprinting”, basato su una tecnica chiamata Locality-Sensitive Hashing (LSH), possa fare proprio questo. L’idea è semplice quanto potente: creare un'”impronta digitale” unica per il pattern di consumo energetico di ogni variante di prodotto. Il nostro classificatore, che abbiamo battezzato LSHC (LSH-based Classifier), ha dimostrato un potenziale enorme per classificare questi profili in modo efficiente e accurato. E la cosa più bella? Spesso basta indicizzare un solo campione di serie storica per variante di prodotto per riconoscerla in futuro. Un po’ come l’apprendimento “one-shot” nel machine learning, una vera manna dal cielo!
Ma perché sbattersi tanto per i profili di consumo?
Ve lo spiego subito. Nelle fabbriche, capire come e quando i diversi prodotti consumano energia è fondamentale. Attualmente, questa identificazione avviene spesso manualmente o etichettando i dati a posteriori. Processi laboriosi, che richiedono esperti e, diciamocelo, un bel po’ di tempo, specialmente se mancano dati digitali di controllo produzione. Automatizzare tutto ciò renderebbe le operazioni più snelle e ridurrebbe la dipendenza da personale specializzato. Ma non è solo una questione di efficienza. Identificare le varianti di prodotto attraverso il loro consumo energetico ci permette di tracciare i processi produttivi con una precisione mai vista prima. Questo apre le porte a ottimizzazioni mirate, che possono tradursi in una significativa riduzione dell’impronta di CO2. Capire i pattern energetici specifici significa poter implementare misure di risparmio mirate, contribuendo a una produzione più sostenibile. Un obiettivo che, ne converrete, è sempre più urgente.
Ispirazione musicale e requisiti tecnici
Come accennavo, l’ispirazione è arrivata da Shazam. Quell’applicazione fenomenale che, analizzando un breve frammento audio, lo confronta con un database immenso di “firme” musicali compresse e ti dice titolo e autore. Noi abbiamo pensato: perché non applicare un principio simile ai dati di consumo energetico nelle industrie? Invece di una canzone, abbiamo il profilo di carico di una variante di prodotto, definito dal suo specifico pattern di consumo nel tempo, tipicamente misurato in kilowatt (kW). Il nostro LSHC, per essere davvero utile, doveva soddisfare alcuni requisiti chiave:
- Velocità: Identificazione e classificazione rapide per applicazioni potenzialmente in tempo reale.
- Robustezza: Alta accuratezza anche con rumore e variazioni nei dati delle serie storiche.
- Scalabilità: Gestione efficiente di grandi volumi di dati e numerose varianti di prodotto.
- Flessibilità: Adattabilità a diversi tipi di dati di serie storiche e finestre temporali variabili.
Questi paletti hanno guidato la progettazione e la valutazione del nostro LSHC. Per darvi un’idea, nel campo dell’audio fingerprinting, sistemi come “Now Playing” di Google Research usano reti neurali per il riconoscimento musicale on-device, preservando privacy e batteria. Noi, invece, ci siamo concentrati sull’efficienza computazionale e la robustezza nella gestione di grandi dataset di serie storiche industriali.

Un tuffo nel tecnico: Serie Storiche e LSH
Prima di addentrarci nel cuore del nostro LSHC, rinfreschiamoci la memoria su alcuni concetti. Una serie storica univariata è una sequenza ordinata di valori nel tempo. Immaginate di campionare il consumo energetico ogni secondo: quella è una serie storica. Per analizzarla, spesso si usano “sotto-sequenze”, cioè porzioni contigue della serie, ottenute facendo scorrere una “finestra” di una certa ampiezza. Le tecniche più comuni per misurare la somiglianza tra serie storiche sono la distanza Euclidea e il Dynamic Time Warping (DTW). La prima è semplice ma sensibile ai valori anomali; la seconda è più robusta e permette di confrontare serie di lunghezza diversa, “allineandole” al meglio.
Ora, entra in gioco il Locality-Sensitive Hashing (LSH). È una tecnica potentissima per risolvere problemi di similarità e clustering in spazi ad alta dimensionalità, dove trovare il “vicino più prossimo” (Nearest Neighbor) diventa computazionalmente proibitivo. L’LSH mappa i punti (nel nostro caso, le caratteristiche estratte dalle finestre di consumo) in “bucket” (contenitori) in modo che i punti vicini abbiano un’alta probabilità di finire nello stesso bucket, mentre quelli distanti no. Per trovare i vicini approssimati di un punto, basta guardare nel suo bucket! Questo si basa su famiglie di funzioni di hash “sensibili alla località”, che garantiscono determinate probabilità di collisione per punti simili e dissimili. Per aumentare l’efficacia, si usano più funzioni di hash concatenate e si costruiscono multiple tabelle di hash. Un approccio popolare per implementare LSH sono le proiezioni casuali: si generano iperpiani casuali e si definisce l’hash di un punto in base alla sua posizione rispetto a questi iperpiani.
Come funziona il nostro LSHC?
L’idea centrale del nostro LSHC è dividere la serie storica del consumo energetico in sotto-finestre (anche sovrapposte), estrarre da queste delle caratteristiche significative (statistiche, spettrali, temporali) e usare l’LSH per mappare efficientemente queste caratteristiche in uno spazio di indicizzazione a bassa dimensionalità. Questo rende la classificazione robusta: anche se alcune sotto-finestre sono classificate male, la corretta classificazione delle altre porterà al risultato giusto.
Fase di Indicizzazione: Usiamo i dati di training (campioni di serie storiche per ogni variante di prodotto nota). Per ogni campione, applichiamo un meccanismo a finestra scorrevole. Da ogni finestra, estraiamo un vettore di caratteristiche (nel nostro caso, 20 feature che includono media, deviazione standard, entropia spettrale, autocorrelazione, ecc.). A queste, aggiungiamo anche “lag features”, cioè caratteristiche delle finestre precedenti, per catturare dipendenze temporali. Ogni vettore di caratteristiche viene “hashato” con LSH e memorizzato nell’indice LSH insieme alla classe della variante di prodotto da cui deriva.
Fase di Interrogazione (Querying): Quando arriva una nuova serie storica da classificare, la processiamo con la stessa finestra scorrevole. Per ogni finestra (“query vector”), calcoliamo il suo hash. Invece di confrontare il query vector con tutti i vettori nell’indice (sarebbe troppo lento!), usiamo la distanza di Hamming per identificare i bucket vicini (distanza di Hamming al massimo 1). Da questi bucket, selezioniamo tutti i vettori di caratteristiche e calcoliamo la distanza Euclidea tra il query vector e questi candidati. Prendiamo i primi tre candidati più vicini e le loro classi. Siccome abbiamo molte finestre per una singola serie storica, otteniamo molte “classifiche” di tre classi. Per decidere la classe finale dell’intera serie storica, usiamo un metodo di voto a maggioranza gerarchico: prima guardiamo le classi al rango 1, se c’è una maggioranza chiara, quella è la vincitrice. Altrimenti, passiamo al rango 2, e poi al rango 3. Se c’è ancora parità, vince la classe più frequente in tutti i ranghi. Questo approccio combina l’efficienza dell’LSH con la precisione delle distanze classiche e la robustezza del voto.

Un aspetto interessante è che il nostro algoritmo aderisce ai principi del fingerprinting: le “impronte” sono localizzate temporalmente (dipendono solo dalla finestra), invarianti alla traslazione (un pattern identico viene riconosciuto ovunque nella serie), robuste a piccole distorsioni e sufficientemente “entropiche” (distinguibili) grazie all’LSH.
Mettiamolo alla prova: Dataset e Risultati
Per testare LSHC, abbiamo creato un dataset sintetico di 280 serie storiche divise in 20 classi (ogni classe è una variante di prodotto). I dati, misurati in kW, mimano macchinari di produzione reali, con curve gaussiane sovrapposte per simulare pattern di consumo realistici. Abbiamo anche usato un dataset pubblico, “Trace”, con 4 classi e maggiore variabilità interna. L’obiettivo era ambizioso: dopo aver indicizzato una sola serie storica per classe, LSHC doveva essere in grado di classificare campioni inediti delle stesse classi.
Abbiamo confrontato LSHC con due classificatori noti: 1-Nearest Neighbor (1-NN) con distanza Euclidea e 1-NN con Dynamic Time Warping (DTW). Sul nostro dataset, sia LSHC che 1-NN DTW hanno ottenuto punteggi perfetti (accuratezza, precisione, recall, F1-score del 100%)! Però, LSHC è stato significativamente più veloce in classificazione rispetto a 1-NN DTW (81 secondi contro 324). Sul dataset Trace, più ostico, le prestazioni sono calate per tutti, ma LSHC ha offerto un buon bilanciamento tra accuratezza (93%) e tempo di classificazione, meglio di 1-NN DTW che, pur essendo più accurato (95%), era lentissimo (oltre 1500 secondi!).
Abbiamo anche studiato l’impatto del rumore. Con dati “puliti” o leggermente rumorosi (10% di varianza media del rumore gaussiano aggiunto), LSHC si è comportato egregiamente. Tuttavia, con livelli di rumore più alti (30% e 50%), la sua performance è degradata più rapidamente rispetto a 1-NN Euclideo e 1-NN DTW. Questo ci dice che LSHC è un asso in ambienti con poco rumore, ma soffre un po’ di più quando il “disturbo” aumenta.
Luci e Ombre: Cosa abbiamo imparato?
Il nostro LSHC è un vero e proprio algoritmo di fingerprinting: ogni variante di prodotto genera una sequenza di hash unica. Questo, combinato con l’estrazione di feature robuste e il meccanismo di voto, lo rende superiore a semplici metodi basati sulla correlazione diretta dei dati grezzi. È flessibile: possiamo aggiustare la dimensione della finestra, il passo, le feature in base al tipo di dato. E, come detto, la capacità di “one-shot learning” è un vantaggio non da poco.
Tuttavia, non è tutto oro quel che luccica. L’algoritmo è sensibile agli iperparametri della finestra (dimensione e passo) e, naturalmente, alle feature estratte. La trasformazione in feature comporta una perdita di informazione che può impattare. Una limitazione è il tempo di indicizzazione, più lungo rispetto ai metodi 1-NN. E, soprattutto, con dataset di training molto grandi, potremmo incappare in un “index blowup”: troppe finestre nell’indice, che aumentano le comparazioni e quindi il tempo di interrogazione. L’abbiamo visto con il dataset Trace.

Nonostante queste sfide, soprattutto sulla scalabilità, LSHC soddisfa requisiti chiave come velocità (in query), robustezza (a basso rumore) e flessibilità. Il futuro? Affrontare i problemi di scalabilità, estendere l’algoritmo a compiti di clustering e, importantissimo, sviluppare metodi per identificare in tempo reale i profili di carico da serie storiche continue e molto lunghe. Immaginate un sistema che monitora automaticamente le macchine, traccia le varianti prodotte, conta le unità e fornisce insight sul consumo energetico specifico per variante. Sarebbe un enorme passo avanti, specialmente per aggiornare macchinari esistenti privi di monitoraggio digitale, aumentando trasparenza ed efficienza energetica senza sforzi manuali enormi o costosi sensori.
In conclusione, abbiamo dimostrato che prendere spunto da un’idea brillante come Shazam e applicarla al mondo dell’energia industriale non solo è possibile, ma apre scenari davvero promettenti. Il nostro LSHC è un passo in questa direzione, unendo l’eleganza del fingerprinting alla potenza dell’LSH per decifrare i segreti nascosti nei consumi energetici. La strada è ancora lunga, ma le premesse per rendere le nostre industrie più intelligenti e sostenibili ci sono tutte!
Fonte: Springer
