LSTM per il forecasting delle serie temporali
Preparazione delle sequenze, LSTM stateless e stateful, finestra di look-back, forecasting multi-step
LSTM per il forecasting delle serie temporali è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Perché usare LSTM per le serie temporali?
LSTM (Long Short-Term Memory) è una rete neurale ricorrente che ricorda gli schemi presenti in sequenze lunghe utilizzando celle di memoria con meccanismi di gating. Può modellare dipendenze non lineari che ARIMA non riesce a rappresentare, risultando potente per le serie complesse quando si dispone di dati sufficienti.
Suddivisione in finestre della sequenza
Le reti LSTM apprendono da finestre: porzioni di lunghezza fissa dei passaggi precedenti utilizzate per prevedere il valore successivo. Con una finestra di 10, il modello osserva i passaggi da 1 a 10 per prevedere il passaggio 11, poi da 2 a 11 per prevedere il 12, e così via.
Creazione delle finestre nel codice
Una funzione di supporto trasforma una serie 1D in coppie input/target.
import numpy as np
def make_windows(series, window):
X, y = [], []
for i in range(len(series) - window):
X.append(series[i:i+window])
y.append(series[i+window])
return np.array(X), np.array(y)
X, y = make_windows(values, window=10)Ridimensionamento dei dati
Le reti neurali si addestrano meglio con input ridimensionati. Utilizzi MinMaxScaler per mappare i valori nell'intervallo [0, 1] e ricordi di applicare successivamente la trasformazione inversa alle previsioni.
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaled = scaler.fit_transform(values.reshape(-1, 1))Rimodellamento per LSTM
I livelli LSTM di Keras si aspettano un input con forma (samples, timesteps, features). Per una serie univariata, features è 1.
# X is (samples, timesteps); add a feature axis
X = X.reshape((X.shape[0], X.shape[1], 1))
print(X.shape) # (samples, timesteps, 1)Costruzione del modello
Un'architettura semplice è composta da un livello LSTM(50) che alimenta un output Dense(1) per prevedere il valore successivo.
from tensorflow.keras import Sequential
from tensorflow.keras.layers import LSTM, Dense
model = Sequential([
LSTM(50, input_shape=(X.shape[1], 1)),
Dense(1)
])Perché Dense(1)
La previsione a un passaggio in avanti è un problema di regressione con un singolo output numerico, quindi il livello finale è Dense(1) senza funzione di attivazione. Per previsioni su più passaggi si utilizzerebbe Dense(n_steps).
Compilazione
Utilizzi l'ottimizzatore adam e la funzione di perdita mse (errore quadratico medio), la scelta standard per la regressione su target continui.
model.compile(optimizer="adam", loss="mse")Addestramento
Esegua il fit sui dati suddivisi in finestre. Una suddivisione per la validazione monitora la capacità di generalizzazione durante le epoche.
history = model.fit(
X, y,
epochs=50,
batch_size=32,
validation_split=0.2
)Esecuzione delle previsioni
Esegua le previsioni su nuove finestre, quindi applichi la trasformazione inversa per tornare alla scala originale.
pred_scaled = model.predict(X_test)
pred = scaler.inverse_transform(pred_scaled)Impilamento e ottimizzazione
Per le serie più difficili, impili più livelli LSTM (imposti return_sequences=True su tutti tranne l'ultimo) e aggiunga il dropout. Un numero maggiore di livelli cattura schemi più profondi, ma richiede più dati e aumenta il rischio di overfitting.
model = Sequential([
LSTM(50, return_sequences=True, input_shape=(X.shape[1], 1)),
LSTM(50),
Dense(1)
])Verifica rapida
Verifichi le Sue conoscenze sulle previsioni con LSTM.
Riepilogo
Ha preparato le finestre, ridimensionato i dati con MinMaxScaler, rimodellato i dati nella forma (samples, timesteps, features), creato LSTM(50) + Dense(1), compilato il modello con adam/mse, eseguito l'addestramento e le previsioni (riportandole alla scala originale con la trasformazione inversa). Questo conclude il corso sulle serie temporali. Corso successivo: Sistemi di raccomandazione.
Domande Frequenti
La lezione «LSTM per il forecasting delle serie temporali» è gratuita?
Sì — il testo completo di «LSTM per il forecasting delle serie temporali» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «LSTM per il forecasting delle serie temporali»?
Preparazione delle sequenze, LSTM stateless e stateful, finestra di look-back, forecasting multi-step Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «LSTM per il forecasting delle serie temporali»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Componenti e stazionarietà delle serie temporali
- Modelli ARIMA e SARIMA
- Prophet per il forecasting automatizzato
- LSTM per il forecasting delle serie temporali