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.