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