태그 보관물: time-series

time-series

다른 길이의 시계열에 대한 SVD 차원 축소 시계열과 함께 일반적으로 사용되는 다른 고유

특이 값 감소 기술로 특이 값 분해를 사용하고 있습니다.

N차원이 주어진 벡터는 D상관 관계가없는 차원으로 변환 된 공간의 특징을 나타내며,이 공간의 고유 벡터에있는 데이터 정보의 대부분을 중요도가 감소하는 순서로 요약합니다.

이제이 절차를 시계열 데이터에 적용하려고합니다. 문제는 모든 시퀀스의 길이가 같지 않기 때문에 실제로 num-by-dim행렬을 만들고 SVD를 적용 할 수 없다는 것 입니다. 내 첫 번째 생각은 num-by-maxDim행렬을 만들고 빈 공간을 0으로 채워서 행렬을 0으로 채우는 것이었지만 올바른 방법인지는 확실하지 않습니다.

내 질문은 어떻게 다른 길이의 시계열에 대한 차원 축소의 SVD 접근 방식을 사용합니까? 또는 시계열과 함께 일반적으로 사용되는 다른 고유 공간 표현 방법이 있습니까?

아래는 아이디어를 설명하기위한 MATLAB 코드입니다.

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

(주로 MATLAB으로 코딩하고 있지만 R / Python / ..도 읽을 수있을 정도로 편안합니다.)



답변

Matrix Completion 이라는 합리적으로 새로운 연구 영역이 있으며 , 아마도 당신이 원하는 것을 할 것입니다. 이 강의 에서 Emmanuel Candes 가 정말 좋은 소개를합니다.


답변

0으로 채우는 것은 좋지 않습니다. 과거의 관측치를 사용하여 리샘플링을 채우십시오.


답변

단지 생각 : 문제에 대한 완전한 SVD가 필요하지 않을 수 있습니다. M = USV *를 d x n 행렬 의 SVD라고 하자 ( , 시계열은 열임). 치수 축소를 달성하기 위해 행렬 VS를 사용하게 됩니다. M * M = V (S * S) V * 를 대각선으로 지정하여 찾을 수 있습니다 . 그러나 일부 값이 누락 되었기 때문에 M * M을 계산할 수 없습니다 . 그럼에도 불구하고 추정 할 수 있습니다. 항목은 M 열의 곱의 합입니다.. SSP를 계산할 때는 결 측값과 관련된 쌍을 무시하십시오. 결 측값을 설명하기 위해 각 제품의 크기를 조정하십시오. 즉, SSP가 nk 쌍을 포함 할 때마다 n / (nk)로 크기를 조정하십시오 . 이 절차는 M * M 의 “합리적인”추정기이며 거기서부터 진행할 수 있습니다. 더 멋진 경험을 원한다면 여러 대치 기술 또는 Matrix Completion 이 도움이 될 것입니다.

(이것은 전치 된 데이터 세트의 쌍별 공분산 행렬을 계산하고 PCA 또는 요인 분석을 적용하여 많은 통계 패키지에서 수행 할 수 있습니다.)


답변

‘짧은’계열에 대한 일 변량 시계열 모델을 추정하고 미래에 외삽하여 모든 계열을 ‘정렬’할 수 있습니다.


답변

V의 계산 에서 변수 를 삭제하는 것처럼 보이기 때문에 예제 코드에 다소 혼란 스럽습니다 newX. X감소 된 순위의 제품 으로 모델링하려고 X합니까? 또는 감소 된 열 공간에 관심이 있습니까? 후자의 경우 EM-PCA 접근 방식이 효과적이라고 생각합니다. 누락 된 값이있는 Probabilistic PCA 제목에서 matlab 코드를 찾을 수 있습니다 .

hth,


답변