Czy splajny mogą być używane do przewidywania?

20

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ć?

Peter Flom - Przywróć Monikę
źródło
2
Oczywiście można ich użyć do przewidywania, ale musisz zwrócić uwagę na to, jak właściwie dostroić hiperparametry modelu. Wybór funkcji splajnu (stała, liniowa, sześcienna) jest również ważnym problemem. IIRC, liniowe funkcje splajnu w MARS są zwykle używane, a splajny wyższego rzędu unikane z obawy o ekstrapolację / przeregulowanie.
Sycorax mówi Przywróć Monikę
1
Czy jest coś, czym martwisz się w szczególności, co doprowadziłoby Cię do wątpliwości co do zastosowanej metody? Twoja dokładność wydaje się nieoczekiwanie niska, czy coś takiego? Czy próbowałeś innych metod? Jak oni się porównują?
one_observation
1
@Sophologist Głównie dlatego, że skończą z powodu nowych wartości, ponieważ węzły i linie opierają się na wartościach z przeszłości. Powiedzmy, że liniowy splajn z napisem „wzrost o XXX o każdy rok po 2014 r.” Byłby oparty tylko na danych z 2015 r., Ale w przypadku zastosowania do 2016 r. Byłby kontynuowany w tym samym kierunku.
Peter Flom - Przywróć Monikę
3
@PeterFlom: Właściwie byłem bardzo zdezorientowany co do twojego pytania (splajny są bardzo częste w przypadku przewidywania), dopóki nie przeczytałem twojej odpowiedzi na Sophologa. Zredagowałem twoje pytanie, aby podkreślić dokładnie to, co moim zdaniem dotyczy twojej troski. Zapoznaj się.
Cliff AB
2
@PeterFlom: zakładając, że moja edycja jest poprawna, czy modelujesz efekt czasu za pomocą splajnu? Jeśli tak, byłbym bardzo zaniepokojony. Jeśli jednak modelujesz efekt czasu za pomocą efektu opóźnienia i innych zmiennych towarzyszących za pomocą splajnów, nie widziałbym problemu?
Cliff AB

Odpowiedzi:

15

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

fa^(x)=ja=1nαjabja(x[ja])
αja jest zasady działania w perspektywie i'th i x [ i ] reprezentuje wybrany z wektora cech w i'th perspektywie funkcję. Podstawowa funkcja może być stała lub może być funkcją zawiasową (prostownikiem). Funkcja zawiasu jest po prostu m a x ( 0 , x [ i ] + c i ) To, co funkcja zawiasu zmusza model, to utworzenieczęściowejfunkcji liniowej (ciekawe jest to, że sieć neuronowa z rektyfikowaną funkcją aktywacji liniowej może być postrzegany jako model nadzbiór modelu MARS). bjax[ja]
mzax(0,x[ja]+doja)

R

fa^(x)=5+mzax(0,x-5)+2)mzax(0,x-10)

10
fa^(x)=10+2)(x-10)=2)x-10
5

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.

Armen Aghajanyan
źródło