Nie mogę sprecyzować charakteru danych, ponieważ są one zastrzeżone, ale załóżmy, że mamy takie dane: Każdego miesiąca niektóre osoby zapisują się na usługi. Następnie w każdym kolejnym miesiącu osoby te mogą uaktualnić usługę, przerwać usługę lub odmówić usługi (np. Z powodu braku zapłaty). Dla najwcześniejszej kohorty w naszych danych mamy około 2 lat danych (24 miesiące).
Liczba osób dołączających do każdego miesiąca jest duża (w zakresie 100 000), a liczba wykonująca jedną z tych trzech czynności jest w tysiącach. Jednak nie używamy danych na poziomie indywidualnym (które byłyby milionami wierszy), ale dane agregowane według miesiąca i kohorty (jaki odsetek każdej kohorty robi każdą rzecz każdego miesiąca).
Modelujemy istniejące dane przy użyciu wielowymiarowych splajnów regresji adaptacyjnej (MARS) i znajdujemy kilka interesujących wyników. Martwię się jednak o wykorzystanie ich do ekstrapolacji lub przewidywania przyszłości. Moje obawy wynikają z tego, że prognozy na przyszłość muszą koniecznie znajdować się poza przestrzenią próbki (pod względem czasu), a splajny mogą stać się niestabilne przy ekstrapolacji.
Czy to jest legalna metoda? Jakie są obawy i czy można je rozwiązać?
źródło
Odpowiedzi:
Z mojej interpretacji pytania, podstawowe pytanie, które zadajesz, brzmi: czy możesz modelować czas jako splajn, czy nie.
Pierwsze pytanie, na które spróbuję odpowiedzieć, brzmi: czy możesz użyć splajnów do ekstrapolacji danych. Krótka odpowiedź brzmi: to zależy, ale w większości przypadków splajny nie są tak świetne do ekstrapolacji. Splajny są zasadniczo metodą interpolacji, dzielą przestrzeń, na której znajdują się twoje dane, i na każdej partycji pasują do prostego regresora. Spójrzmy więc na metodę MARS. Sposób Mars jest zdefiniowana jako f ( x ) = n Σ i = 1 α I B I ( x [ i ] ) , gdzie α i jest stałe w perspektywie i'th w modelu MARS
Teraz wróćmy do szeregów czasowych. Szeregi czasowe są szczególnym przypadkiem w uczeniu maszynowym. Zwykle mają trochę struktury, niezależnie od tego, czy jest to częściowa wariancja, czy jeden z wielu różnych rodzajów podstruktur, i tę strukturę można wykorzystać. Ale potrzebne są specjalne algorytmy, które potrafią wykorzystać tę strukturę, niestety splajny tego nie robią.
Jest kilka rzeczy, które poleciłbym wypróbować. Pierwszą z nich byłyby sieci reccurent. Jeśli twoje szeregi czasowe nie są tak długie (i nie mają długoterminowych zależności), powinieneś być w stanie uciec od korzystania z prostej waniliowej sieci cyklicznej. Jeśli chcesz być w stanie zrozumieć, co się dzieje, możesz użyć rektyfikowanej jednostki liniowej z odchyleniami jako funkcji aktywacyjnej, co będzie równoznaczne z wykonaniem modelowania MARS na podzbiorze szeregów czasowych i „pamięci”, która stanowi rekurencyjna sieć neuronowa trzyma. Trudno byłoby zinterpretować sposób zarządzania pamięcią przez sieć, ale powinieneś dowiedzieć się, jak obsługiwana jest podprzestrzeń w odniesieniu do generowanej częściowej funkcji liniowej. Również jeśli masz funkcje statyczne, które nie należą do szeregów czasowych, stosunkowo łatwo jest nadal używać ich w sieci.
Jeśli posiadane przez ciebie szeregi czasowe są bardzo długie i mogą mieć długoterminowe zależności, polecam użycie jednej z bramkowanych sieci cyklicznych, takich jak GRU lub LSTM.
Na bardziej klasycznej stronie klasyfikacji szeregów czasowych można użyć ukrytych modeli markowa. Nie będę zagłębiał się w te kwestie, ponieważ nie znam ich tak dobrze.
Podsumowując, nie zalecałbym używania splajnów z dwóch powodów. Po pierwsze, nie jest w stanie poradzić sobie ze skomplikowanymi problemami ekstrapolacji, co wydaje się być problemem, który opisujesz. Po drugie, splajny nie wykorzystują podstruktur szeregów czasowych, które mogą być bardzo mocne w klasyfikacji szeregów czasowych.
Mam nadzieję że to pomoże.
źródło