Strona głównaArtykuły

Prognostycznego modelowania liczebności pasażerów lotniczych za pomocą sieci LSTM

budowanie i trening sieci Long Short-Term Memory z podstaw z użyciem PyTorch do prognozowania miesięcznych liczebności pasażerów lotniczych, oraz odkrycia wynikające z tych prognoz w zakresie możliwości sieci LSTM i okien widoczności

mysimulator teamZaktualizowano — czerwiec 2026≈ 5 min czytania▶ Otwórz symulację

Zbiór danych: 144 miesięcy pasażerów lotniczych

Klasyczny zbiór danych dotyczący pasażerów lotniczych rejestruje liczbę międzynarodowych pasażerów (w tysiącach) dla każdego miesiąca od stycznia 1949 roku do grudnia 1960 roku — w sumie 144 punkty danych, z wyraźną rosnącą trendem i cyklicznością sezonową roczną. Zadanie jest sformułowane jako problem regresji: podane są liczby pasażerów dla ostatnich miesięcy, a cel polega na przewidzeniu liczby pasażerów dla następnego miesiąca.

Jedno wymiarowe cechy zapisywane są w formacie float32 zamiast domyślnego float64, co pozwala zmniejszyć zużycie pamięci o pół bez znaczącego utraty dokładności — praktyka ta ma większy wpływ na duże zbiory danych i modele, nawet jeśli dla 144 wierszy jest niewidoczna. Następnie seria jest podzielona 67/33 na zestawy treningowe i testowe bez losowego przetasowania, zachowując starsze miesiące (1949-1956) do treningu i nowsze miesiące (1957-1960) do testów. Taka chronologiczna podział jest nieprzekonawalna dla serii czasowych: losowe przetasowanie pozwoliłoby modelowi 'widzieć przyszłość' podczas treningu i powodowałoby fałszywie wysokie odczucie jego skuteczności w prognozowaniu.

Z jednego szeregu czasowego do przykładów treningowych

LSTM potrzebuje par (wejście, cel), a nie prostej sekwencji. Funkcja okienkowa przesuwająca konwertuje szereg na nadlaczone okna: dla lookback równego 1, każdy przykład treningowy to liczba pasażerów w danym miesiącu jako wejście (X) i liczba pasażerów w następnym miesiącu jako cel (y). Pakowane w TensorDataset z PyTorch oraz DataLoader z wielkością lotej 8 i mieszaniem między epokami, to tworzy 12 zestawów danych treningowych na podstawie 95 dostępnych okien — małe liczby, które wskazują, jak niewiele danych dostarczają czytelne zapisy miesięczne od 1949 do 1960 roku porównane z współczesnym zestawem danych głębokiej uczenia się.

Model: jedna warstwa LSTM plus head liniowy

Architektura AirModel jest świadomie minimalista: jedna warstwa nn.LSTM (wymiar wejściowy 1, ponieważ dla każdego taktu istnieje pojedyncza cecha) prowadząca do jednej warstwy nn.Linear przekształcającej stan ukryty LSTM w pojedyncze prognozowane wartość. Ustawienie batch_first=True w warstwie LSTM zachowuje konwencjonalny porządek kształtów tensorowych (batch, sekwencja, cechy). Trening trwał 2000 epok z użyciem optymalizatora Adam i funkcji błędu kwadratowego średniego. Błąd modelu jest sprawdzany co 100 epok na danych treningowych i testowych za pomocą błędu pierwiastkowego kwadratu średniego (RMSE) — pierwiastek z MSE, wybranego ze względu na to, że jest wyrażony w tych samych jednostkach co oryginalne liczby pasażerów, co pozwala na bezpośrednie interpretację.

Wyniki: nauczanie się dzieje, ale różnica między treningem a testem jest rzeczywista

Z ukrytym rozmiarem 50 strata z powodu treningu spada około o 90% w ciągu 2000 epok (od błędu średniokwadratowego (MSE) około 51,000 do około 5,000), a krzywa straty pokazuje klasyczną formę pomyślnego nauczania: ogromny początkowy spadek, po którym następuje długie i wolne płaskowgiowe. Ale końcowe liczby opowiadają o bardziej nuanowanej historii: błąd średniokwadratowy (RMSE) z powodu treningu osiąga około 71, podczas gdy błąd średniokwadratowy (RMSE) z powodu testu pozostaje znacznie wyższy, około 208 — co oznacza, że przewidywania dla niezobserwowanych miesięcy są na średnim poziomie o około 208,000 pasażerów. Podwójne zwiększanie rozmiaru ukrytego do 100 lekko poprawia zarówno błąd średniokwadratowy (RMSE) z powodu treningu, jak i testu, ale ta różnica nadal trwa.

Ta różnica jest kluczowym odkryciem całego badania. Niekoniecznie oznacza to, że model jest przeszkolony w klasycznej interpretacji (błąd z powodu treningu nie jest znacznie niższy od błędu z powodu testu) — bardziej prawdopodobne jest, że widoczny okres wynosi tylko 1 miesiąc poprzedni, co daje modelowi za mało kontekstu, aby zrozumieć cykliczność sezonową o 12 miesięcy, co prowadzi do przewidywania słabej intensywności zmian sezonowych, szczególnie w późniejszych latach testu, które mają wyższy poziom pasażerów.

Co rzeczywiście mogłoby poprawić prognozę

Wielokrotne zmiany bezpośrednio wynikają z różnicy między RMSE: zwiększenie okna lookback do 12 miesięcy pozwoli modelowi zobaczyć pełny cykl sezonowy przed prognozowaniem kolejnego punktu, a nie extrapolować na podstawie jednej poprzedniej wartości; normalizacja oryginalnych liczb pasażerów (za pomocą MinMax lub StandardScaler) przed treningiem prawdopodobnie sprawi, że optymalizacja będzie bardziej stabilna, ponieważ sieć obecnie uczy się na wartościach w procentach zamiast raw values w setkach; dodanie dropoutu lub drugiego warstwy LSTM mogłoby pomóc modelowi generalizować, a nie dopasowywać szum w małym zestawie treningowym. Nikuna z tych poprawek jest ekscytująca — są to standardowe procedury dla prognozowania serii czasowych przy użyciu sieci rekurencyjnych, a ten przykład jest czystą ilustracją, dlaczego każda z nich istnieje.

Często zadawane pytania

Dlaczego nie można przetasować danych serii czasowych przed podziałem na zestaw treningowy i testowy?

Przetasowanie by połączyło obserwacje przyszłe z zestawem treningowym, pozwalając modelowi niewłaściwie uczyć się z danych, których nigdy nie powinien było zobaczyć podczas prognozowania. To nazywa się kradzieżą danych (data leakage), co prowadzi do oszustwownie optymistycznego estymatu wydajności — model będzie wydawać się przewidywać poprawnie podczas ewaluacji, ale rzeczywiście nie powinien działać w praktyce, gdzie przyszłość naprawdę jeszcze nie nastąpiła.

Co ogranicza lookback=1 do tego, co model może zobaczyć?

Z lookbackem równym 1 każda prognoza opiera się na dokładnie jednym poprzednim miesiącu, bez możliwości wykrycia powtarzającego się wzoru sezonowości o okresie 12 miesięcy. Zwiększenie lookbacku do 12 lub więcej daje LSTM wystarczającą historię w każdym oknie treningowym, aby potencjalnie rozpoznawać wzory typu 'to wygląda jak grudniowy miesiąc z poprzedniego roku', co jest kluczowe dla serii o silnej sezonowości rocznej, takich jak liczby pasażerów lotnictwa.

Dlaczego używać RMSE zamiast MSE do raportowania wydajności modelu?

MSE jest wyrażany w kwadratowych jednostkach pierwotnej zmiennej (tysiące pasażerów, podniesione do kwadratu), co sprawia, że trudno go interpretować intuicyjnie. Przyjmowanie pierwiastka kwadratowego przyprowadza błąd z powrotem do oryginalnych jednostek, więc RMSE wynoszące 208 ma bezpośrednio i znacząco zrozumiałą interpretację: prognozy są typowo o 208 tysięcy pasażerów od rzeczywistej wartości, co jest łatwo zrozumiałe dla nieprzedsztalconych interesantów.

Wypróbuj na żywo

Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz LSTM Airline Passenger Forecasting Lab i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.

▶ Otwórz symulację LSTM Airline Passenger Forecasting Lab

Co znalazłeś?

Dodaj kroki odtworzenia (opcjonalnie)