Sviluppo avanzato di algoritmi di intelligenza artificiale in Energy Forensics Una guida in Python ai modelli Transformer per il rilevamento di furto nella rete intelligente attraverso i pattern di consumo

Sviluppo algoritmi AI in Energy Forensics. Guida Python ai modelli Transformer per rilevare furto nella rete intelligente tramite pattern consumo.

Credito Foto: Pexels

Insights dai Dati Energetici Tedeschi: Una Guida di Stephanie Ness sui Pattern di Consumo e l’Analisi Online dei Dati per Impostazioni a Piccola Scala

In mezzo all’immensa quantità di dati, ogni kilowatt-ora sussurra la sua storia. Nei complessi pattern di consumo potrebbero nascondersi anomalie, indizi discreti di furto energetico. @media(min-width:0px){#div-gpt-ad-aitimejournal_com-medrectangle-3-0-asloaded{max-width:580px!important;max-height:400px!important;}}

Queste storie, sebbene spesso banali, talvolta risuonano con i sussurri di giochi loschi. Attori malevoli sottraggono sottilmente elettricità, le loro azioni mascherate all’interno del labirinto dei dati di consumo. Tuttavia, possediamo un’arma potente, forgiata nella fucina dell’innovazione implacabile del machine learning: il modello transformer.

Anche se il modello transformer non è più la nuova stella della galassia dell’IA, la sua incredibile abilità nel processare sequenze lo rende il detective di scelta per la nostra missione. Armati di Python, possiamo scoprire le anomalie per identificare gli attori malevoli e intraprendere azioni correttive con i nostri algoritmi di rilevamento della scienza dei dati.

La Sintesi dell’Analisi Energetica

In un mondo sempre più dipendente dall’energia sostenibile, capire i pattern di consumo è vitale. Dalle case e le aziende alle industrie e gli enti governativi, un’analisi completa del consumo energetico serve a molteplici scopi. Che si tratti di efficienza, risparmio o sostenibilità, l’energia ha sempre più sfaccettature di quanto non appaia a prima vista.

Svelando il Furto nel Labirinto del Consumo

Il dataset in questione, proveniente dall’Open Energy Data Initiative e pubblicato nel maggio 2022, conteneva dettagli sul consumo energetico per una vasta gamma di consumatori. In mezzo a questa immensa quantità di dati, sono emersi sei tipi specifici di furto:@media(min-width:0px){#div-gpt-ad-aitimejournal_com-medrectangle-4-0-asloaded{max-width:300px!important;max-height:250px!important;}}

  1. Una sostanziale riduzione dell’uso di elettricità durante le ore diurne.
  2. Diminuzioni arbitrarie e improvvise del consumo a zero.
  3. Riduzioni moltiplicative casuali nel consumo orario.
  4. Dati di consumo che si presentano come una frazione casuale della media.
  5. Segnalazione costante del consumo medio, indipendentemente dall’uso effettivo.
  6. Un’inversione completa nell’ordine delle letture di consumo.

Ogni tipo di furto era intricatamente incorporato nel dataset, rendendo necessario un approccio sofisticato per rilevarlo in modo efficace.

Il metodo spiegato in questo tutorial è basato sul transformer. Viene impiegato principalmente perché sfrutta le intrinseche capacità di elaborazione parallela dei transformer. Invece di analizzare i dati linearmente, elabora contemporaneamente più punti dati, ottenendo un’analisi accelerata.@media(min-width:0px){#div-gpt-ad-aitimejournal_com-box-4-0-asloaded{max-width:250px!important;max-height:250px!important;}}

Passo 1: Preparare l’Ambiente

Spiegazione:

Prima di qualsiasi analisi dei dati, è fondamentale preparare un ambiente favorevole. Ciò assicura che tutti gli strumenti siano a nostra disposizione quando ne abbiamo bisogno.

pip install pandas numpy tensorflow

@media(min-width:0px){#div-gpt-ad-aitimejournal_com-banner-1-0-asloaded{max-width:728px!important;max-height:400px!important;}}

Questo comando installa tre librerie: pandas (per la manipolazione dei dati), numpy (per i calcoli numerici) e tensorflow (il nostro framework di deep learning).

Passo 2: Caricare il Dataset

Spiegazione:

I dataset sono il fondamento di qualsiasi progetto di machine learning. Qui, stiamo reperendo il nostro dataset da un link online.

import pandas as pdimport numpy as np# Carica il dataseturl = “https://data.mendeley.com/datasets/c3c7329tjj/1/files/df.csv”data = pd.read_csv(url)

All’esecuzione, i dati conterranno l’intero set di dati, pronto per la pre-elaborazione.

Passo 3: Analisi preliminare dei dati

Spiegazione:

Prima di immergersi nella costruzione del modello, è saggio comprendere i dati con cui si sta lavorando. Questo passaggio riguarda l’acquisizione di tale comprensione.

print(data.head())print(data.describe())Questo visualizzerà le prime righe e un riepilogo (come media, deviazione standard) del set di dati.

@media(min-width:0px){#div-gpt-ad-aitimejournal_com-large-leaderboard-2-0-asloaded{max-width:728px!important;max-height:400px!important;}}

Passo 4: Pre-elaborazione dei dati

Spiegazione:

I dati grezzi non sono sempre adatti per l’apprendimento automatico. La pre-elaborazione raffina i dati, rendendoli più digeribili per i nostri modelli.

consumption_data = data[“Electricity:Facility [kW](Hourly)”].valuesCi concentriamo sulla colonna Electricity:Facility [kW](Hourly) poiché registra il consumo di elettricità orario, un fattore chiave per la nostra analisi.

La normalizzazione è essenziale per scalare tutti i dati in un intervallo uniforme, rendendo i calcoli più stabili:

mean = consumption_data.mean()std = consumption_data.std()consumption_data = (consumption_data – mean) / std

Passo 5: Costruzione del modello Transformer

Spiegazione:

I Transformer, introdotti nel paper “Attention is All You Need” [1], rappresentano una svolta nella gestione delle sequenze. A differenza dei modelli ricorrenti tradizionali, i Transformer possono prestare “attenzione” selettiva a diverse parti dei dati di input.

import tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import layers# Parametri del modelloembedding_dim = 64num_heads = 4ff_dim = 32num_blocks = 2# Blocco Transformerdef transformer_encoder(inputs, head_size, num_heads, ff_dim, dropout=0): x = layers.LayerNormalization(epsilon=1e-6)(inputs) x = layers.MultiHeadAttention( key_dim=head_size, num_heads=num_heads, dropout=dropout )(x, x) x = layers.Dropout(dropout)(x) res = x + inputs x = layers.LayerNormalization(epsilon=1e-6)(res) x = layers.Conv1D(filters=ff_dim, kernel_size=1, activation=”relu”)(x) x = layers.Dropout(dropout)(x) return x + resinputs = layers.Input(shape=(None, embedding_dim))x = inputsfor _ in range(num_blocks): x = transformer_encoder(x, embedding_dim, num_heads, ff_dim)x = layers.GlobalAveragePooling1D()(x)x = layers.Dense(30, activation=”relu”)(x)x = layers.Dense(1, activation=”linear”)(x)model = keras.Model(inputs=inputs, outputs=x)model.compile( loss=”mean_squared_error”, optimizer=keras.optimizers.Adam(learning_rate=1e-4),)

Qui, abbiamo impostato un blocco Transformer che normalizza prima i dati di input, applica l’attenzione multi-head e poi li elabora attraverso una rete feed-forward.

@media(min-width:0px){#div-gpt-ad-aitimejournal_com-leader-1-0-asloaded{max-width:728px!important;max-height:400px!important;}}

Passo 6: Preparazione dei dati di addestramento e addestramento del modello

Spiegazione:

I modelli di apprendimento automatico imparano dai dati. Questo passaggio alimenta i nostri dati preelaborati nel modello in modo che possa imparare a prevedere i modelli di consumo energetico.

X = []y = []for i in range(len(dati_di_consumo) – 24):    X.append(dati_di_consumo[i : i + 24])    y.append(dati_di_consumo[i + 24])X = np.array(X)y = np.array(y)model.fit(X, y, epochs=10, validation_split=0.1)

Questo codice suddivide i nostri dati in serie temporali in sequenze di 24 ore, semplificando l’analisi dei modelli all’interno di una giornata.

Passaggio 7: Rilevamento delle anomalie

Spiegazione:

Le anomalie sono deviazioni dalla norma. Prevedendo e confrontando con il consumo effettivo, possiamo individuare dove si trovano queste anomalie.

predictions = model.predict(X)anomalies = np.where(np.abs(predictions – y) > 1)[0]print(f”Indici delle anomalie: {anomalies}“)

Dopo l’addestramento, il nostro modello cerca di prevedere il punto dati successivo nella serie temporale. Quando fallisce significativamente (una deviazione superiore a 1 dopo la normalizzazione), potremmo aver individuato un potenziale furto di energia o altre anomalie.

Metodi alternativi di rilevamento:

Il modello del transformer, introdotto da Vaswani et al., 2017, ha rivoluzionato molti ambiti dell’apprendimento automatico, specialmente nel campo dell’elaborazione del linguaggio naturale. Ma prima del suo dominio e in alcuni settori anche ora, sono stati impiegati diversi modelli e tecniche per dati sequenziali e altri tipi di applicazioni. Ecco alcune alternative:

Reti neurali ricorrenti (RNN):

RNN standard: Le RNN originali possono ricordare dati passati in sequenza e sono state utilizzate principalmente per dati sequenziali. Tuttavia, soffrono del problema del gradiente che svanisce.

@media(min-width:0px){#div-gpt-ad-aitimejournal_com-leader-2-0-asloaded{max-width:336px!important;max-height:280px!important;}}

Long Short-Term Memory (LSTM): Una RNN migliorata, progettata per ricordare dati passati in sequenze per lunghi periodi. È molto popolare ed è stato efficace in compiti come la generazione di testo e altro.

Gated Recurrent Units (GRU): Una versione semplificata delle LSTM con prestazioni simili ma con meno parametri.

Reti neurali convoluzionali (CNN):

Tradizionalmente utilizzate per dati di immagini per la loro capacità di riconoscere modelli, texture e forme. Tuttavia, sono state adattate anche per dati sequenziali mediante l’applicazione di convoluzioni 1D.

Reti a funzione di base radiale (RBFN):

Sono principalmente utilizzate per compiti di classificazione e regressione, non necessariamente per dati sequenziali ma sono state impiegate in varie applicazioni.

Modelli di Markov nascosti (HMM):

Particolarmente popolari per il riconoscimento del parlato e altri compiti di etichettatura delle sequenze prima che i modelli di apprendimento profondo diventassero dominanti.

Modelli sequenza-sequenza:

Inizialmente progettati per compiti come la traduzione automatica, in cui una sequenza di input deve essere trasformata in una sequenza di output.

Mechanismi di attenzione (senza transformer):

L’attenzione è stata sviluppata per consentire ai modelli, specialmente nei compiti sequenza-sequenza, di concentrarsi su parti specifiche dell’input durante la produzione di un output. È stata la pietra miliare per i transformer, ma l’attenzione può essere e è stata utilizzata senza l’intera architettura del transformer.

Reti neurali feedforward (FNN) o Perceptron multistrato (MLP):

Sono le reti neurali standard utilizzate per vari compiti, dalla classificazione alla regressione.

Autoencoder:

Principalmente utilizzati per la riduzione della dimensionalità e il rilevamento delle anomalie, trovano pattern nei dati comprimendo e poi ricostruendo l’input.

Modelli basati su alberi:

Modelli come Random Forests, Gradient Boosted Trees, ecc., possono essere utilizzati per una varietà di compiti. Non sono adatti per i dati sequenziali ma possono essere alternative potenti a seconda dell’applicazione.

Modelli di previsione delle serie temporali:

Per i dati sequenziali specificamente legati alla previsione delle serie temporali, modelli tradizionali come ARIMA, Exponential Smoothing State Space Model (ETS) e Prophet possono essere efficaci.

La scelta tra queste alternative dipende dalla natura e dalla struttura dei dati, dall’applicazione specifica e dai requisiti del problema. Ad esempio, se l’aspetto temporale della sequenza è molto importante, modelli come LSTMs o GRUs potrebbero essere più adatti. D’altra parte, se i pattern spaziali sono più importanti (come nelle immagini), le CNN sarebbero una scelta naturale.

Anche se il modello transformer ha mostrato risultati impressionanti in molti domini del rilevamento delle frodi, è sempre essenziale considerare le specificità del problema e non assumere che il modello più recente o più popolare sia il più adatto. A volte, modelli più semplici o più vecchi possono superare quelli più recenti a seconda dell’insieme di dati e dei vincoli del problema.

In conclusione:

Attraverso il matrimonio tra i dati energetici e le tecniche avanzate di intelligenza artificiale, abbiamo creato un detective rudimentale capace di individuare modelli di consumo energetico insoliti. Sebbene il nostro modello sia di base, serve come base su cui possono essere costruiti sistemi più sofisticati per il rilevamento delle frodi.

@media(min-width:0px){#div-gpt-ad-aitimejournal_com-leader-3-0-asloaded{max-width:250px!important;max-height:250px!important;}}@media(min-width:0px){#div-gpt-ad-aitimejournal_com-leader-3-0_1-asloaded{max-width:250px!important;max-height:250px!important;}} .leader-3-multi-918{border:none !important;display:block !important;float:<invalid Value> !important;line-height:0px;margin-bottom:15px !important;margin-left:auto !important;margin-right:auto !important;margin-top:15px !important;max-width:100% !important;min-height:250px;min-width:250px;padding:0;text-align:center !important;}

Fonti:

Dati:

Zidi, S., Mihoub, A., Qaisar, S. M., Krichen, M., & AbuAl-Haija, Q. (2022). Dataset per il rilevamento delle frodi per il benchmarking e la classificazione basata sull’apprendimento automatico in un ambiente di smart grid. *Journal of King Saud University – Computer and Information Sciences*. Disponibile su: [https://doi.org/10.1016/j.jksuci.2022.05.007](https://doi.org/10.1016/j.jksuci.2022.05.007) [Consultato il 24 luglio 2023].

National Renewable Energy Laboratory. (2015). Dati della Smart Grid dai progetti dell’American Recovery and Reinvestment Act (ARRA) [insieme di dati]. Disponibile su: [https://data.openei.org/submissions/418](https://data.openei.org/submissions/418) [Consultato il 24 luglio 2023].

@media(min-width:0px){#div-gpt-ad-aitimejournal_com-large-mobile-banner-2-0-asloaded{max-width:250px!important;max-height:250px!important;}}@media(min-width:0px){#div-gpt-ad-aitimejournal_com-large-mobile-banner-2-0_1-asloaded{max-width:250px!important;max-height:250px!important;}} .large-mobile-banner-2-multi-701{border:none !important;display:block !important;float:none !important;line-height:0px;margin-bottom:15px !important;margin-left:auto !important;margin-right:auto !important;margin-top:15px !important;max-width:100% !important;min-height:250px;min-width:250px;padding:0;text-align:center !important;width:100%;}

Riferimenti accademici:

Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, L., & Polosukhin, I. (2017). Attention is all you need. arXiv preprint arXiv:1706.03762v6. Disponibile su: https://doi.org/10.48550/arXiv.1706.03762 [Consultato il 24 luglio 2023].

Liu, H., Liang, J., Liu, Y., & Wu, H. (2023). Una revisione della previsione energetica degli edifici basata sui dati. *Buildings*, 13(2), 532. Disponibile su: [https://doi.org/10.3390/buildings13020532](https://doi.org/10.3390/buildings13020532) [Consultato il 24 luglio 2023].