Regresja logistyczna dla szeregów czasowych

21

Chciałbym zastosować binarny model regresji logistycznej w kontekście przesyłania strumieniowego danych (wielowymiarowe szeregi czasowe), aby przewidzieć wartość zmiennej zależnej danych (tj. Wiersza), które właśnie nadeszły, biorąc pod uwagę wcześniejsze obserwacje. O ile mi wiadomo, regresja logistyczna jest tradycyjnie stosowana do analizy pośmiertnej, gdzie każda zmienna zależna została już ustawiona (albo przez kontrolę, albo przez charakter badania).

Co dzieje się jednak w przypadku szeregów czasowych, w których chcemy przewidzieć (w locie) zmienną zależną w odniesieniu do danych historycznych (na przykład w oknie czasowym ostatnich sekund) i, oczywiście, poprzednie szacunki zmiennej zależnej?t

A jeśli z czasem zobaczysz powyższy system, jak należy go skonstruować, aby regresja działała? Czy musimy go najpierw wyszkolić, oznaczając, powiedzmy, pierwsze 50 wierszy naszych danych (tj. Ustawiając zmienną zależną na 0 lub 1), a następnie wykorzystujemy bieżące oszacowanie wektora do oszacowania nowego prawdopodobieństwa zmiennej zależnej 0 lub 1 dla danych, które właśnie dotarły (tj. Nowy wiersz, który właśnie został dodany do systemu)?β

Aby wyjaśnić mój problem, próbuję zbudować system, który analizuje zestaw danych wiersz po wierszu i próbuje przewidzieć wynik binarny (zmienna zależna), biorąc pod uwagę wiedzę (obserwację lub oszacowanie) wszystkich poprzednich zależnych lub objaśniających zmienne, które dotarły w ustalonym oknie czasowym. Mój system znajduje się w Rerl i korzysta z R do wnioskowania.

Regresor
źródło
5
czy możesz założyć strukturę korelacji na swoich danych? Twój przypadek jest szczególnym przypadkiem GLMM z łączem logit, ale struktura korelacji w danych szeregów czasowych musi być odpowiednio modelowana, aby uzyskać rozsądną odpowiedź.
suncoolsu
1
ytyt1
2
czy mógłbyś podać zwięzły opis swoich danych, aby podać konkretne rozwiązanie? twój problem można rozwiązać coś takiego: stat.ethz.ch/pipermail/r-sig-mixed-models/2010q4/004530.html
suncoolsu
2
Mam szereg czasowy ruchu sieciowego o następującej formie: Protokół, SrcIP SrcPort, DestIP, DestPort, TimeSec, Timeusec, PackLength TCP, 200.80.199.105,3523,207.216.233.144,9658,11223344,941818,62 UDP, 142.144.155.120 , 1751,244.72.151.2,1935, 11223344,941843,60 Chcę oszacować, czy pakiet (lub grupa pakietów) jest złośliwy, wykorzystując wiedzę z zestawów danych oznaczonych do zbudowania samouczącego się modelu. Uśrednianie, o którym mówiłem, jest stosowane dla powyższych wskaźników, aby zapewnić poziom agregacji i uczynić system bardziej praktycznym dla dużego ruchu.
Regressor,
2
To naprawdę brzmi jak praca dla maszyny wektorów wsparcia. Czy coś brakuje? Jeśli naprawdę martwisz się autokorelacją lub strukturą szeregów czasowych danych, możesz wypróbować ARIMA i / lub wielopoziomowy model podłużny. W przypadku modeli podłużnych polecam Willly i Singing's Applied Longitudinal Data Analysis , dla których witryna ATS UCLA zawiera przykłady kodu R.
ashaw

Odpowiedzi:

6

Istnieją dwie metody do rozważenia:

  1. Używaj tylko ostatnich N próbek wejściowych. Zakładając, że sygnał wejściowy ma wymiar D, wówczas masz próbki N * D na podstawie etykiety prawdziwej ziemi. W ten sposób możesz trenować, używając dowolnego klasyfikatora, w tym regresji logistycznej. W ten sposób każde wyjście jest uważane za niezależne od wszystkich innych wyjść.

  2. Użyj ostatnich N próbek wejściowych i ostatnich N wygenerowanych wyników. Problem jest podobny do dekodowania viterbi . Możesz wygenerować wynik niebinarny na podstawie próbek wejściowych i połączyć wynik wielu próbek za pomocą dekodera viterbi. Jest to lepsze niż metoda 1., jeśli teraz coś o relacjach czasowych między wyjściami.

Mr. White
źródło