Jak przypisać większą wagę do najnowszych obserwacji w R?
Zakładam, że jest to często zadawane pytanie lub pragnienie, ale trudno mi dokładnie wymyślić, jak to zrealizować. Próbowałem znaleźć wiele, ale nie jestem w stanie znaleźć dobrego praktycznego przykładu.
W moim przykładzie z czasem miałbym duży zestaw danych. Chcę powiedzieć, że zastosuj jakiś wykładniczy ważenie wierszy danych, które są nowsze. Miałbym więc jakąś funkcję wykładniczą, mówiąc, że obserwacje w 2015 roku są ___ ważniejsze dla szkolenia modelu niż obserwacje w 2012 roku.
Moje zmienne zestawu danych zawierają połączenie wartości kategorycznych i liczbowych, a moim celem jest wartość liczbowa - jeśli to ma znaczenie.
Chciałbym przetestować / wypróbować to przy użyciu modeli takich jak GBM / Random Forest, najlepiej w pakiecie CARET.
pytanie o aktualizację
Doceniam odpowiedź podaną poniżej na temat wykładniczego rozkładu masy według odległości daty między dwoma punktami.
Jeśli jednak chodzi o szkolenie tego modelu w karetce, w jaki sposób uwzględniane są wagi? Wartość masy w każdym rzędzie treningowym to odległość między pewnym punktem w przyszłości a momentem, w którym ten punkt miał miejsce w przeszłości.
Czy odważniki wchodzą w grę tylko podczas prognozy? Bo jeśli wejdą w grę podczas treningu, czy nie spowodowałoby to różnego rodzaju problemów, ponieważ różne krzyżówki miałyby różne ciężary, próbując przewidzieć coś, co może mieć w danym momencie wcześniej?
źródło
Odpowiedzi:
Jak przypisać większą wagę do najnowszych obserwacji w R?
Chyba masz znacznik czasu związany z każdą obserwacją. Możesz obliczyć zmienną
timeElapsed = modelingTime - observationTime
. Teraz zastosujesz prostą funkcję wykładniczą, ponieważW=K*exp(-timeElapsed/T)
, gdzieK
jest stałą skalowania iT
jest stałą czasową dla funkcji rozpadu.W
działa jak waga skrzynki.Zgodnie z moją najlepszą wiedzą, wiele funkcji in
caret
zezwalaweight
jako parametr, który jest kolumną wag, które należy podać do odpowiedniej obserwacji (a więc mają taką samą długość jak # strzałki).źródło
caret::train
toweights
.Dane (a nie analityk przyjmujący założenia - przypuszczenia) często mogą sugerować formę schematu ważenia. Odbywa się to za pomocą GLS, gdzie odpowiednie wagi dla ważonego modelu najmniejszych kwadratów są uzyskiwane ze statystycznie istotnych różnic stwierdzonych w wariancji błędu. Spójrz na wykrywanie zmian i wartości odstających za pomocą ARIMA (procedura Tsay) i tutaj http://docplayer.net/12080848-Outliers-level-shift-and-variance-changes-in-time-series.html . Jeśli chcesz opublikować dane, zrób to tutaj, a ja postaram się pomóc, ponieważ mam rutynowy dostęp do oprogramowania, które może cię oświecić.
Istnieje wersja R oprogramowania, którego używam.
Możesz spojrzeć na Jak uwzględnić zmienne kontrolne w analizie interwencji z ARIMA? ponieważ ma przykład identyfikowania wag i wykorzystywania ich do ustabilizowania wariancji błędu, tym samym skutecznie wierząc / nie wierząc / dyskontując / ważąc / ufając pewnym wcześniejszym wartościom.
źródło