Korzystałem z pakietu Caret w R do budowania modeli predykcyjnych do klasyfikacji i regresji. Caret zapewnia zunifikowany interfejs do dostrajania hiperparametrów modelu poprzez weryfikację krzyżową lub wiązanie rozruchu. Na przykład, jeśli budujesz prosty model „najbliższych sąsiadów” do celów klasyfikacji, ilu sąsiadów powinieneś użyć? 2? 10? 100? Caret pomaga odpowiedzieć na to pytanie, ponownie próbkując dane, wypróbowując różne parametry, a następnie agregując wyniki, aby zdecydować, które dają najlepszą dokładność predykcyjną.
Podoba mi się to podejście, ponieważ zapewnia solidną metodologię wybierania hiperparametrów modelu, a po wybraniu ostatecznych hiperparametrów zapewnia weryfikację krzyżową oceny „dobrego” modelu przy użyciu dokładności do modeli klasyfikacji i RMSE dla modeli regresji.
Mam teraz pewne dane szeregów czasowych, dla których chcę zbudować model regresji, prawdopodobnie używając losowego lasu. Jaka jest dobra technika oceny dokładności predykcyjnej mojego modelu, biorąc pod uwagę charakter danych? Jeśli losowe lasy tak naprawdę nie dotyczą danych szeregów czasowych, jaki jest najlepszy sposób na zbudowanie dokładnego modelu zestawu do analizy szeregów czasowych?
Odpowiedzi:
„Klasyczna” k-krotna technika walidacji krzyżowej opiera się na fakcie, że każda próbka w dostępnym zestawie danych jest używana (k-1) razy do trenowania modelu i 1 raz do testowania go. Ponieważ walidacja modeli szeregów czasowych na „przyszłych” danych jest bardzo ważna, takie podejście nie przyczyni się do stabilności modelu.
Jedną ważną właściwością wielu (najbardziej?) Szeregów czasowych jest korelacja między sąsiednimi wartościami. Jak zauważył IrishStat, jeśli użyjesz wcześniejszych odczytów jako zmiennych niezależnych twojego kandydata na model, ta korelacja (lub brak niezależności) odgrywa znaczącą rolę i jest kolejnym powodem, dla którego walidacja krzyżowa razy K nie jest dobrym pomysłem.
Jednym ze sposobów rozwiązania tego problemu jest „nadpróbkowanie” danych i ich korelacja. Jeśli proces dekorelacji zakończy się powodzeniem, wówczas stosowanie weryfikacji krzyżowej w szeregach czasowych stanie się mniej problematyczne. Nie rozwiąże to jednak problemu walidacji modelu na podstawie przyszłych danych
Wyjaśnienia
przez sprawdzanie poprawności modelu na przyszłych danych mam na myśli konstruowanie modelu, czekanie na nowe dane, które nie były dostępne podczas budowy modelu, testowania, dostrajania itp. i sprawdzanie poprawności na tych nowych danych.
przez nadpróbkowanie danych mam na myśli zbieranie danych szeregów czasowych z częstotliwością znacznie wyższą niż praktycznie potrzebna. Na przykład: pobieranie próbek cen akcji co 5 sekund, gdy naprawdę interesują Cię zmiany godzinowe. Tutaj, kiedy mówię „próbkowanie”, nie mam na myśli „interpolacji”, „szacowania” itp. Jeśli danych nie można zmierzyć z większą częstotliwością, technika ta nie ma znaczenia
źródło
http://robjhyndman.com/researchtips/crossvalidation/ zawiera szybką wskazówkę dotyczącą krzyżowej weryfikacji szeregów czasowych. Jeśli chodzi o użycie losowego lasu do danych szeregów czasowych ... nie jestem pewien, chociaż wydaje się to dziwnym wyborem, biorąc pod uwagę, że model jest dopasowany przy użyciu próbek bootstrap. Istnieją oczywiście klasyczne metody szeregów czasowych (np. ARIMA), podobnie jak techniki ML, takie jak sieci neuronowe (przykładowy przykład pdf ). Być może niektórzy eksperci od szeregów czasowych mogą komentować, jak dobrze działają techniki ML w porównaniu do algorytmów specyficznych dla szeregów czasowych.
źródło
Oto przykładowy kod do sprawdzania poprawności modeli szeregów czasowych. I rozszerzony na ten kod w moim blogu , włączenie pakietu foreach do rzeczy przyspieszyć i pozostawienie do ewentualnego terminu xreg w przekroju walidacji.
Oto kopia kodu z bloga Roba Hyndmana:
źródło
Jeśli masz dane szeregów czasowych, możesz mieć „problem ze stopniami swobody”. Na przykład, jeśli masz 4 obserwacje wykonane w odstępach godzinnych, a następnie zdecydujesz się na użycie 241 obserwacji w odstępach 1-minutowych, masz 241 obserwacji, ale niekoniecznie są one niezależne. Gdy prześlesz te 241 wartości / pomiarów do pakietu analitycznego, pakiet może spodziewać się, że są to 241 niezależnych wartości w miarę wykonywania określonej magii. Jeśli masz dane szeregów czasowych, być może będziesz musiał zaktualizować swoje dane analityczne. Nie znam programu, do którego się odwołujesz, ale z mojej strony rozsądnie zgaduję (mogę się mylić!), Że to testy (testy F / testy T ... itd.) Prawdopodobnie nie dotyczą twojego zestawu problemów.
źródło
Mogę polecić Ci 2 ciekawe artykuły do przeczytania, które są dostępne online 1. Uczenie się w trybie ciągłym: One-Pass SVM, autor: Piyush Rai, Hal Daum´e III, Suresh Venkatasubramanian 2. Mówienie w przybliżeniu k-oznacza, autor: Nir Ailon
Mam nadzieję, że to trochę wyjaśni twoje pomysły
źródło