0Pricing
Learn AI with Python · Lekcja

LSTM do prognozowania szeregów czasowych

Przygotowywanie sekwencji, bezstanowe i stanowe LSTM, okno wsteczne, prognozowanie wielokrokowe.

LSTM do prognozowania szeregów czasowych to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Dlaczego LSTM w szeregach czasowych?

LSTM (Long Short-Term Memory) to rekurencyjna sieć neuronowa, która zapamiętuje wzorce w długich sekwencjach dzięki bramkowanym komórkom pamięci. Potrafi modelować nieliniowe zależności, których nie uwzględnia ARIMA, dzięki czemu przy wystarczającej ilości danych dobrze sprawdza się w przypadku złożonych szeregów.

Okna sekwencji

Sieci LSTM uczą się na podstawie okien: fragmentów wcześniejszych kroków o stałej długości, używanych do przewidywania następnej wartości. Przy oknie o długości 10 model widzi kroki 1–10, aby przewidzieć krok 11, następnie kroki 2–11, aby przewidzieć krok 12, i tak dalej.

Tworzenie okien w kodzie

Funkcja pomocnicza przekształca jednowymiarowy szereg w pary wejściowe i docelowe.

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)

Skalowanie danych

Sieci neuronowe lepiej uczą się na przeskalowanych danych wejściowych. Proszę użyć MinMaxScaler, aby odwzorować wartości na zakres [0, 1], i pamiętać o późniejszym przywróceniu oryginalnej skali predykcji.

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
scaled = scaler.fit_transform(values.reshape(-1, 1))

Zmiana kształtu danych dla LSTM

Warstwy LSTM biblioteki Keras oczekują danych wejściowych o kształcie (samples, timesteps, features). W przypadku szeregu jednowymiarowego liczba cech wynosi 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)

Budowanie modelu

Prosta architektura obejmuje jedną warstwę LSTM(50), która przekazuje dane do warstwy wyjściowej Dense(1) przewidującej następną wartość.

from tensorflow.keras import Sequential
from tensorflow.keras.layers import LSTM, Dense

model = Sequential([
    LSTM(50, input_shape=(X.shape[1], 1)),
    Dense(1)
])

Dlaczego Dense(1)

Prognozowanie o jeden krok naprzód jest zadaniem regresji z pojedynczym wynikiem liczbowym, dlatego warstwą końcową jest Dense(1) bez funkcji aktywacji. W przypadku prognoz wielokrokowych można użyć Dense(n_steps).

Kompilowanie

Proszę użyć optymalizatora adam i funkcji straty mse (błąd średniokwadratowy), czyli standardowego wyboru w regresji dla ciągłych wartości docelowych.

model.compile(optimizer="adam", loss="mse")

Trenowanie

Proszę wytrenować model na danych podzielonych na okna. Podział walidacyjny monitoruje zdolność generalizacji w kolejnych epokach.

history = model.fit(
    X, y,
    epochs=50,
    batch_size=32,
    validation_split=0.2
)

Przewidywanie

Proszę wykonywać predykcje dla nowych okien, a następnie przywrócić oryginalną skalę wyników.

pred_scaled = model.predict(X_test)
pred = scaler.inverse_transform(pred_scaled)

Łączenie warstw i strojenie

W przypadku trudniejszych szeregów można układać warstwy LSTM jedna na drugiej (ustawiając return_sequences=True we wszystkich warstwach oprócz ostatniej) i dodać dropout. Większa liczba warstw pozwala uchwycić głębsze wzorce, ale wymaga większej ilości danych i zwiększa ryzyko przeuczenia.

model = Sequential([
    LSTM(50, return_sequences=True, input_shape=(X.shape[1], 1)),
    LSTM(50),
    Dense(1)
])

Szybki test

Sprawdź swoją wiedzę na temat prognozowania za pomocą LSTM.

Podsumowanie

Przygotowano okna, przeskalowano dane za pomocą MinMaxScaler, zmieniono ich kształt na (samples, timesteps, features), zbudowano model LSTM(50) + Dense(1), skompilowano go z użyciem adam/mse, wytrenowano i wykonano predykcje, przywracając na końcu oryginalną skalę. Na tym kończy się kurs Szeregi czasowe. Następny kurs: Systemy rekomendacyjne.

Często zadawane pytania

Czy lekcja „LSTM do prognozowania szeregów czasowych” jest bezpłatna?

Tak — pełny tekst „LSTM do prognozowania szeregów czasowych” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Co nauczysz się w „LSTM do prognozowania szeregów czasowych”?

Przygotowywanie sekwencji, bezstanowe i stanowe LSTM, okno wsteczne, prognozowanie wielokrokowe. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?

Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „LSTM do prognozowania szeregów czasowych”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?

Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Składowe szeregów czasowych i stacjonarność
  2. Modele ARIMA i SARIMA
  3. Prophet do automatycznego prognozowania
  4. LSTM do prognozowania szeregów czasowych
← Powrót do Learn AI with Python