Tôi đang sử dụng Phân tích giá trị số ít như một kỹ thuật giảm kích thước.
Đưa ra N
các vectơ kích thước D
, ý tưởng là thể hiện các tính năng trong một không gian biến đổi của các kích thước không tương quan, điều chỉnh hầu hết thông tin của dữ liệu trong các hàm riêng của không gian này theo thứ tự quan trọng giảm dần.
Bây giờ tôi đang cố gắng áp dụng quy trình này cho dữ liệu chuỗi thời gian. Vấn đề là không phải tất cả các chuỗi có cùng độ dài, do đó tôi không thể thực sự xây dựng num-by-dim
ma trận và áp dụng SVD. Suy nghĩ đầu tiên của tôi là đệm các ma trận bằng các số 0 bằng cách xây dựng một num-by-maxDim
ma trận và lấp đầy các khoảng trống bằng các số 0, nhưng tôi không chắc đó có phải là cách chính xác hay không.
Câu hỏi của tôi là làm thế nào để bạn tiếp cận SVD về giảm kích thước theo chuỗi thời gian có độ dài khác nhau? Ngoài ra, có bất kỳ phương pháp tương tự khác của biểu diễn không gian điện tử thường được sử dụng với chuỗi thời gian không?
Dưới đây là một đoạn mã MATLAB để minh họa ý tưởng:
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
(Tôi đang viết mã chủ yếu bằng MATLAB, nhưng tôi cũng đủ thoải mái để đọc R / Python / ..)