2010-02-07 32 views
11

Sto provando a scrivere un programma per le previsioni del tempo usando backpropagation. Sono un principiante in questo campo. Ho dati storici con diversi parametri come temperatura, umidità, velocità del vento, precipitazioni ecc.Previsioni del tempo usando una rete neurale

Sono confuso su come fornire questi dati al livello di input. A ogni nodo di input viene assegnato l'intero dato per un dato giorno o devo avere una rete diversa per ogni parametro? Sono anche confuso riguardo al livello di output.

risposta

1

Mi sembra che gli alberi decisionali potrebbero essere una soluzione migliore a questo problema rispetto alle reti neurali. Here è una descrizione di come funzionano gli alberi decisionali. Inoltre, è disponibile un software che ha implementazioni di vari classificatori incluse le reti neurali. Ho lavorato con Weka e funziona molto bene. Esistono anche librerie che è possibile utilizzare per utilizzare le funzionalità di Weka con linguaggi di programmazione come Java e C#. Se decidi di lavorare con Weka, assicurati di familiarizzare con il formato .arff descritto in here.

+0

Se si è interessati all'uso di Weka, un'opzione potrebbe essere quella di provare Knime, un pacchetto di flusso di lavoro basato su Eclipse che include i primitivi di Weka. –

+0

Sono curioso di sapere come applicare gli alberi decisionali a questo problema. – brian

+0

Le foreste casuali sono divertenti – ron

2

Nel livello di input sono presenti X nodi separati per ogni dimensione (meteo, vento, ecc.) Dei dati di input, dove X è il numero di giorni a cui guardare indietro (diciamo 4-7). Quindi dovresti normalizzare ogni dimensione di input in un intervallo adatto, diciamo [-1.0, 1.0].

Avere un secondo livello "nascosto" completamente interconnesso con il primo strato (e anche con un nodo di "bias" di input 1.0 fisso da servire come punto fisso). Ci dovrebbero essere meno nodi qui che nel livello di input, ma questa è solo una regola empirica, potrebbe essere necessario sperimentare.

L'ultimo livello è il livello di output completamente interconnesso con il secondo livello (e anche il bias). Avere un neurone di uscita separato per ogni dimensione.

Non dimenticare di allenarsi con i valori normalizzati sia sull'ingresso che sull'uscita. Dal momento che si tratta di una serie temporale, potrebbe non essere necessario randomizzare l'ordine dei dati di addestramento, ma dar loro da mangiare come vengono in tempo - la rete imparerà anche i rapporti temporali (con fortuna :)

(Si noti anche che c'è un metodo chiamato "backpropagation temporale" che è sintonizzato per dati di serie temporali)

+0

Sarebbe corretto presumere che le variabili più correlate includessero il più preciso? cioè usando {Temp, Pressure, Humidity}, meglio di {Rainfall, Windspeed, UV Index}? –

+0

@Aaron: È sempre preferibile utilizzare più variabili correlate, tuttavia se esiste una relazione forte, la rete potrebbe essere in grado di apprendere utilizzando anche altre variabili. Si noti inoltre che potrebbe essere necessaria la trasformazione di alcuni dati (ad esempio per la scala di registrazione, ecc.) Affinché la rete possa studiare meglio. – ron

Problemi correlati