Farklı uzunluktaki zaman serileri için SVD boyutsallık azalması


13

Tekil Değer Ayrışmasını boyutsallık azaltma tekniği olarak kullanıyorum.

NBoyut vektörleri göz önüne alındığında D, fikir, ilişkisiz boyutların dönüştürülmüş bir uzayındaki özellikleri temsil etmek, bu da bu alanın özvektörlerindeki verilerin bilgilerinin çoğunu azalan bir önem sırasına yoğunlaştırmaktır.

Şimdi bu prosedürü zaman serisi verilerine uygulamaya çalışıyorum. Sorun şu ki, tüm diziler aynı uzunlukta değil, bu yüzden gerçekten num-by-dimmatrisi inşa edemem ve SVD'yi uygulayamıyorum. İlk düşüncem, bir num-by-maxDimmatris oluşturarak ve boş alanları sıfırlarla doldurarak matrisi sıfırlarla doldurmaktı, ama bunun doğru yol olup olmadığından emin değilim.

Benim sorum, SVD'nin farklı uzunluktaki zaman serilerine boyutsallık azaltma yaklaşımı nasıl? Alternatif olarak, genellikle zaman serileri ile kullanılan başka benzer eigenspace gösterimi yöntemleri var mı?

Fikri göstermek için bir parça MATLAB kodu aşağıdadır:

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

(Çoğunlukla MATLAB'da kod yazıyorum, ancak R / Python / .. da okuyacak kadar rahatım)


İyi soru! Ben başlığı geliştirebilirsiniz düşünüyorum, bir yerde "eksik veri" veya "farklı uzunlukta kez serisi" gibi bir şey olabilir.
robin girard

1
Ben buna "eksik veri", belki "farklı uzunlukta zaman serileri için SVD boyutsal azaltma" demezdim?
Amro

1
Önerdiğiniz başlığı beğendim!
robin girard

1
ayrıca serinin neden farklı uzunluklarda olduğunu bilmek de yardımcı olacaktır . Örneğin, bir el yazısı görevi sırasında bir kalemin yörüngesini temsil ediyorsa, bir rakam yazarken X'in yer değiştirmesini söyleyin, o zaman zaman serilerini aynı uzunlukta olacak şekilde hizalamak isteyebilirsiniz. Hangi tür varyasyonları korumak istediğinizi ve ne olmadığınızı bilmek de önemlidir.
vqv

Yanıtlar:



2

Sıfırla doldurmak kötü. Geçmişten gelen gözlemleri kullanarak yeniden örnekleme ile doldurmayı deneyin.


+1 çoğaltma / yeniden örnekleme kesinlikle sıfır dolgudan daha iyidir .. yine de bekleyeceğim ve başka fikirlerin olup olmadığını göreceğim :)
Amro

2

Sadece bir düşünce: Sorununuz için tam SVD'ye ihtiyacınız olmayabilir. Let M = USV * daki SVD olmak d ile N matrisi ( yani , zaman serisi sütun olanlar),. Boyut küçültmeyi elde etmek için V ve S matrislerini kullanacaksınız . Bunları M * M = V (S * S) V * 'yi köşegenleştirerek bulabilirsiniz . Ancak, bazı değerleri kaçırdığınız için M * M hesaplayamazsınız . Yine de tahmin edebilirsiniz. Girişleri M sütunlarının ürünlerinin toplamıdır. SSP'lerden herhangi birini hesaplarken eksik değerleri içeren çiftleri yok sayın. Eksik olan değerleri hesaba katmak için her ürünü yeniden ölçeklendirin : yani, bir SSP nk çiftlerini içerdiğinde , n / (nk) ile yeniden ölçeklendirin . Bu prosedür M * M'nin "makul" bir tahmincisidir ve oradan devam edebilirsiniz. Daha meraklı olmak istiyorsanız, belki birden fazla imputation tekniği veya Matrix Tamamlama yardımcı olacaktır.

(Bu, aktarılan veri kümesinin çift kovaryans matrisini hesaplayarak ve PCA veya faktör analizi uygulayarak birçok istatistik paketinde gerçekleştirilebilir.)


MTM

Bu iyi bir nokta, ama sonuç o kadar da kötü olmayabilir. Biri, M * M tahmininin özdeğerlerin bozulmasının makul derecede küçük olduğu gerçek değere yeterince yakın olmasıdır. Böylece, en büyük özdeğerlere karşılık gelen öz uzaya yansıtarak, doğru çözümün sadece küçük bir pertürbasyonunu elde edersiniz, yine de aranan boyut küçülmesini elde edersiniz. Belki de en büyük problem algoritmik olabilir: Artık yarı bitiriliği kabul edemeyeceğiniz için, öz sistemi bulmak için daha genel amaçlı bir algoritma kullanmanız gerekebilir.
whuber

1

'Kısa' seri için tek değişkenli zaman serisi modellerini tahmin edebilir ve tüm dizileri 'hizalamak' için geleceğe tahmin edebilirsiniz.


ekstrapolasyon mevcut kısımda olmayan doldurulmuş kısımda düzgünlüğü içerir. Rasgelelik eklemek zorundasınız ... bu nedenle yeniden örnekleme (ve ekstrapolasyon üzerinde yeniden şekillendirme iyi bir fikir gibi görünüyor)
robin girard

Modelin ekstrapolasyonu için, istenen rasgeleliğe neden olacak hata teriminin örneklenmesi gerekecektir.

IMO her iki öneri de mevcut olanlardan gelecekteki değerleri tahmin etmeye dayanmaktadır (belki AR / ARMA modelleri?). Sanırım hala örnekleme değerlerini içermeyen bir çözüm umuyorum (bu nedenle hata getirme olasılığı) .. Bu tür modelleri tahmin etmenin yanı sıra kendi içinde bir boyutsal azaltma şeklidir :)
Amro

1

VDeğişkenin hesaplamasından düştüğü gibi, örnek kodunuzla biraz kafam karıştı newX. Daha Xdüşük seviyeli bir ürün olarak model mi arıyorsunuz , yoksa daha az sütun alanı ile ilgileniyor Xmusunuz? ikinci durumda, bir EM-PCA yaklaşımının işe yarayacağını düşünüyorum. matlab kodunu eksik değerlere sahip Olasılıksal PCA başlığı altında bulabilirsiniz .

hth,


X, daha ziyade dönüştürülmüş bir X düşük dereceli bir yaklaşım hesaplamak için çalışmıyorum. Amacım gürültülü dizileri süzmek değil, daha düşük bir boyutsallık (zaman serilerinin sınıflandırılması / kümelenmesi için kullanılacak bir temsil) bulmak olduğunu görüyorum ) ... EM-PCA yaklaşımı hakkında biraz bilgi verebilir misiniz?
Amro
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.