Redukcja wymiarów SVD dla szeregów czasowych o różnej długości


13

Używam Singular Value Decomposition jako techniki redukcji wymiarowości.

Biorąc pod uwagę Nwektory wymiaru D, ideą jest przedstawienie cech w przekształconej przestrzeni o nieskorelowanych wymiarach, która kondensuje większość informacji danych w wektorach własnych tej przestrzeni w malejącym porządku ważności.

Teraz próbuję zastosować tę procedurę do danych szeregów czasowych. Problem polega na tym, że nie wszystkie sekwencje mają tę samą długość, dlatego naprawdę nie mogę zbudować num-by-dimmatrycy i zastosować SVD. Moją pierwszą myślą było num-by-maxDimwypełnienie macierzy zerami poprzez zbudowanie macierzy i wypełnienie pustych miejsc zerami, ale nie jestem pewien, czy to jest właściwy sposób.

Moje pytanie brzmi: w jaki sposób podejście SVD do redukcji wymiarowości do szeregów czasowych o różnej długości? Alternatywnie, czy istnieją inne podobne metody reprezentacji przestrzeni własnej zwykle stosowane w szeregach czasowych?

Poniżej znajduje się fragment kodu MATLAB ilustrujący ten pomysł:

X = randn(100,4);                       % data matrix of size N-by-dim

X0 = bsxfun(@minus, X, mean(X));        % standarize
[U S V] = svd(X0,0);                    % SVD
variances = diag(S).^2 / (size(X,1)-1); % variances along eigenvectors

KEEP = 2;                               % number of dimensions to keep
newX = U(:,1:KEEP)*S(1:KEEP,1:KEEP);    % reduced and transformed data

(Piszę głównie w MATLAB, ale czuję się wystarczająco dobrze, aby czytać również R / Python / ..)


Dobre pytanie! Myślę, że możesz poprawić tytuł, może być coś takiego jak „brakujące dane” lub „szereg razy różnej długości”.
— robin girard

1
Nie nazwałbym tego „brakującymi danymi”, może „zmniejszeniem wymiarów SVD dla szeregów czasowych o różnej długości”?
— Amro

1
Podoba mi się tytuł, który proponujesz!
— robin girard

1
pomogłoby to również dowiedzieć się, dlaczego seria ma różne długości. Na przykład, jeśli reprezentują trajektorię ołówka podczas zadania pisma ręcznego, powiedz przesunięcie X podczas wypisywania cyfry, możesz chcieć wyrównać szeregi czasowe, aby były tej samej długości. Ważne jest również, aby wiedzieć, jaki rodzaj wariacji chcesz zachować, a czym nie.
— vqv,

Odpowiedzi:


5

Istnieje całkiem nowy obszar badań o nazwie Matrix Completion , który prawdopodobnie robi to, co chcesz. Naprawdę miłe wprowadzenie znajduje się w tym wykładzie Emmanuela Candesa


+1 dla strony internetowej VideoLecture, nie wiedziałem, czy wspomniałeś o tym w pytaniu o wykładach wideo?
— robin girard

Dopiero ostatnio czytam o tym. Bardzo podoba mi się najnowszy artykuł Candes and Tao na temat arxiv.org/abs/0903.1476
— Robby McKilliam

2

Wypełnianie zera jest złe. Spróbuj wypełnić ponownie próbkowaniem, korzystając z obserwacji z przeszłości.


Replikacja +1 / resampling są zdecydowanie lepsze niż wypełnianie zerami .. wciąż będę czekać i zobaczę, czy są jeszcze jakieś inne pomysły :)
— Amro

2

Tylko myśl: możesz nie potrzebować pełnej SVD dla swojego problemu. Niech M = USV * będzie SVD twojej d przez n macierzy ( tj. Szeregi czasowe są kolumnami). Aby osiągnąć zmniejszenie wymiaru będziesz używając macierzy V i S . Możesz je znaleźć przekątnie M * M = V (S * S) V * . Jednakże, ponieważ brakuje niektórych wartości, nie można obliczyć m * K . Niemniej jednak możesz to oszacować. Wpisy są sumami iloczynów kolumn M. Podczas obliczania któregokolwiek z dostawców SSP zignoruj ​​pary zawierające brakujące wartości. Ponownie przeskaluj każdy produkt, aby uwzględnić brakujące wartości: to znaczy, ilekroć SSP obejmuje pary nk , przeskaluj go o n / (nk). Ta procedura jest „rozsądnym” estymatorem M * M i możesz zacząć od tego. Jeśli chcesz stać się bardziej wyrafinowany, być może pomoże Ci wiele technik imputacji lub Ukończenie macierzy .

(Można to przeprowadzić w wielu pakietach statystycznych, obliczając parą macierz kowariancji transponowanego zestawu danych i stosując do tego PCA lub analizę czynnikową.)


ta procedura daje oszacowanie które może nie być dodatnim półfinałem, co byłoby złe. MTM
— shabbychef

To dobra uwaga, ale wynik może nie być taki zły. Należy mieć nadzieję, że oszacowanie M * M jest wystarczająco zbliżone do prawdziwej wartości, że zaburzenie wartości własnych jest stosunkowo niewielkie. W ten sposób, rzutując na przestrzeń własną odpowiadającą największym wartościom własnym, osiągasz tylko nieznaczne zaburzenie prawidłowego rozwiązania, nadal osiągając pożądaną redukcję wymiarów. Być może największym problemem może być algorytm: ponieważ nie można dłużej zakładać niedokładności, może być konieczne użycie bardziej ogólnego algorytmu do znalezienia systemu eigens.
— whuber

1

Można oszacować jednorodne modele szeregów czasowych dla „krótkich” serii i ekstrapolować je w przyszłości, aby „wyrównać” wszystkie serie.


ekstrapolacja obejmowałaby gładkość w wypełnionej części, która nie istnieje w istniejącej części. Musisz dodać losowość ... stąd ponowne próbkowanie (i ponowne mapowanie ekstrapolacji wydaje się być dobrym pomysłem)
— robin girard

Ekstrapolacja modelu wymagałaby próbkowania składnika błędu, który wywołałby pożądaną losowość.

Obie sugestie IMO sprowadzają się do przewidywania przyszłych wartości na podstawie istniejących (być może modeli AR / ARMA?). Wydaje mi się, że wciąż mam nadzieję na rozwiązanie, które nie wymaga próbkowania wartości (a więc możliwości wprowadzenia błędu). Poza tym szacowanie takich modeli samo w sobie jest formą redukcji wymiarów :)
— Amro

1

Jestem nieco zdezorientowany twoim przykładowym kodem, ponieważ wydaje się, że usuwasz Vzmienną z obliczeń newX. Czy chcesz modelować Xjako produkt o zmniejszonej rangi, czy interesuje Cię zmniejszona przestrzeń kolumny X? w tym drugim przypadku myślę, że podejście EM-PCA byłoby skuteczne. kod matlab można znaleźć pod tytułem Probabilistic PCA z brakującymi wartościami .

hth


Nie próbuję obliczać przybliżenia X zmniejszonej rangi, a raczej przekształconego X. Widzisz, moim celem nie jest filtrowanie hałaśliwych sekwencji, ale znalezienie reprezentacji o zmniejszonej wymiarowości (do zastosowania w klasyfikacji / grupowaniu szeregów czasowych ) ... Czy mógłbyś trochę rozwinąć podejście do EM-PCA?
— Amro
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.