Rilevamento dei valori anomali del consumo di gas - Progetto di rete neurale. Cattivi risultati


10

Ho cercato di rilevare valori anomali nel consumo di gas energetico di alcuni edifici olandesi, costruendo un modello di rete neurale. Ho dei risultati molto negativi, ma non riesco a trovare il motivo.

Non sono un esperto, quindi vorrei chiederti cosa posso migliorare e cosa sto facendo di sbagliato. Questa è la descrizione completa: https://github.com/denadai2/Gas-consumption-outliers .

La rete neurale è una rete FeedFoward con propagazione posteriore. Come descritto qui, ho diviso il set di dati in un "piccolo" set di dati di 41'000 righe, 9 funzionalità e ho provato ad aggiungere altre funzionalità.

Ho addestrato le reti ma i risultati hanno 14.14 RMSE, quindi non è possibile prevedere così bene i consumi di gas, consecutivamente non posso eseguire un buon meccanismo di rilevamento anomalo. Vedo che in alcuni articoli che anche se prevedono il consumo giornaliero o orario di energia elettrica, presentano errori come MSE = 0,01.

Cosa posso migliorare? Che cosa sto facendo di sbagliato? Puoi dare un'occhiata alla mia descrizione?


2
Cosa intendi con risultati negativi? Descrivi il tuo processo, i tuoi risultati e come differiscono da ciò che ti aspettavi, invece di collegarti solo al repository git. Altrimenti questa discussione non sarà di alcuna utilità per nessuno.
Air

È anche vero questo: D. Ho aggiunto la descrizione nella pagina "I risultati hanno un 14.14 RMSE, quindi non può prevedere così bene i consumi di gas, consecutivamente non posso eseguire un buon meccanismo di rilevamento anomalo. Vedo che in alcuni articoli che anche se prevedono consumo giornaliero o orario di energia elettrica, presentano errori come MSE = 0,01 ".
marcodena,

1
@marcodena Questo è un sito di controllo qualità e altri devono sapere cosa stai cercando di risolvere, in modo che possano capire le risposte e, si spera, saranno in grado di usarle nei propri problemi. Questo è ciò che intendeva AirThomas, ed è anche il motivo per cui sarebbe bello se tu potessi descrivere ciò che stai facendo e ciò che pensi esattamente sia sbagliato. Se il link alla tua pagina git-hub cambia, il link qui non sarà valido e gli altri non saranno in grado di capire quale sia il problema. Per favore, prenditi un minuto per rendere la tua domanda autonoma. Grazie.
Rubens,

1
Quando scopri che il tuo problema richiede molto tempo per essere spiegato, è quando è più importante passare il tempo a spiegare la tua domanda agli altri, esplicitamente e con molti dettagli e discussioni sulla tua ricerca / tentativi. Spesso durante questo processo troverai tu stesso alcune o tutte le risposte. Non solo è una bella sensazione, se ciò che trovi è utile per gli altri, puoi comunque pubblicare quella domanda su cui passi così tanto tempo e le risposte che hai trovato.
Air

1
Solo un chiarimento, quando dici che "in alcuni documenti hanno errori come MSE = 0,01", fai riferimento allo stesso set di dati che stai utilizzando? O è un set di dati completamente diverso?
insys,

Risposte:


8

Solo un'idea: i tuoi dati sono altamente stagionali: i cicli giornalieri e settimanali sono abbastanza percepibili. Quindi, prima di tutto, prova a scomporre le tue variabili (consumo di gas ed elettricità, temperatura e radiazione solare). Ecco un bel tutorial sulla scomposizione di serie storiche per R.

Dopo aver ottenuto tendenze e componenti stagionali, inizia la parte più interessante. È solo un presupposto, ma penso che le variabili di consumo di gas ed elettricità sarebbero abbastanza prevedibili mediante l'analisi delle serie temporali (ad esempio, il modello ARIMA ). Dal mio punto di vista, la parte più eccitante qui è cercare di prevedere i residui dopo la decomposizione, usando i dati disponibili (anomalie della temperatura, radiazione solare, velocità del vento). Suppongo che questi residui sarebbero anomali, che stai cercando. Spero che lo troverai utile.


3

Nel quaderno di formazione vengono presentati i risultati per l'allenamento con 20 epoche. Hai provato a variare quel parametro, per vedere se influisce sulle tue prestazioni? Questo è un parametro importante per la propagazione all'indietro.

Per stimare i parametri del tuo modello, come ha sottolineato l'utente tomaskazemekas, tracciare le curve di apprendimento è un ottimo approccio. Inoltre, puoi anche creare un grafico usando un parametro del modello (ad esempio epoche di allenamento o dimensione del livello nascosto) rispetto all'errore di addestramento e convalida. Ciò ti consentirà di comprendere il compromesso di bias / varianza e di aiutarti a scegliere un buon valore per i tuoi parametri. Alcune informazioni sono disponibili qui . Naturalmente, è una buona idea conservare una piccola percentuale dei dati per un (terzo) set di test.

Come nota a margine, sembra che l'aumento del numero di neuroni nel modello non mostri miglioramenti significativi per il tuo RMSE. Ciò suggerisce che potresti anche provare con un modello più semplice, cioè con meno neuroni e vedere come si comporta il tuo modello.

In effetti, suggerirei (se non lo hai già fatto) di provare un modello semplice con pochi o nessun parametro prima, ad esempio Regressione lineare, e confrontare i tuoi risultati con la letteratura, proprio come un controllo di integrità.


Ho aggiunto alcuni grafici, dopo aver migliorato MOLTO il modello. In github ci sono i nuovi passaggi. Posso chiederti come posso applicare la regressione lineare in un problema di serie temporali? :(
marcodena,

2

Il problema principale qui è che anche prima di tentare di applicare algoritmi di rilevamento delle anomalie, non si ottengono previsioni abbastanza buone sul consumo di gas utilizzando le reti neurali.

Se l'obiettivo principale qui è quello di raggiungere lo stadio in cui è possibile utilizzare algoritmi di rilevamento delle anomalie e si afferma di avere accesso ad esempi di applicazione riuscita della regressione lineare per questo problema, questo approccio potrebbe essere più produttivo. Uno dei principi dell'applicazione di apprendimento automatico di successo è che è possibile provare diversi algoritmi diversi prima della selezione finale in base ai risultati.

Se scegli di ottimizzare le prestazioni della tua rete neurale, puoi utilizzare la curva di apprendimento che traccia l'effetto della variazione in diversi iperparametri sul tasso di errore. Gli iperparametri che possono essere modificati sono:

  • numero di funzionalità
  • ordine del polinomio
  • parametro di regolarizzazione
  • numero di strati nella rete

Le migliori impostazioni possono essere selezionate dalle prestazioni sul set di convalida incrociata.


Ho aggiunto alcuni grafici e ora puoi controllare anche i parametri :)
marcodena,

2

Nei tuoi notebook non ho visto il tuo modello di rete neurale, puoi indicare quale libreria sta usando, quanti layer hai e che tipo di rete neurale stai usando?

Nei tuoi notebook, sembra che tu stia utilizzando il set di dati rumoroso e anomalo per addestrare la rete neurale, penso che dovresti addestrare la rete neurale sul set di dati che non hai valori anomali in modo da poter vedere la distanza di osservazione dalla previsione di la rete neurale per etichettare l'osservazione in modo anomalo o meno.

Ho scritto un paio di cose sul rilevamento anomalo nei segnali di serie temporali, i tuoi dati sono altamente stagionali come menzionato sopra e potresti usare FFT (primo link sopra) per ottenere la tendenza generale del segnale. Dopo aver ottenuto il componente di frequenza nel consumo di gas, è possibile esaminare i componenti ad alta frequenza per ottenere i valori anomali.

Inoltre, se vuoi insistere sull'uso della rete neurale per i dati stagionali, potresti voler controllare le reti neurali ricorrenti in quanto potrebbero incorporare le osservazioni passate meglio di una rete neurale vaniglia e presumibilmente potrebbero fornire un risultato migliore per i dati che hai .


Ho provato il tuo metodo FFT ma non riesco davvero a impostare la soglia di frequenza e l'ampiezza con i miei dati. Continuerò a cercare, ma se mi potessi aiutare ...
Marcodena,

Ho aggiunto anche le fonti
marcodena,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.