Pengurangan dimensi SVD untuk deret waktu dengan panjang berbeda

13

Saya menggunakan Dekomposisi Nilai Singular sebagai teknik reduksi dimensi.

Mengingat Nvektor dimensiD , idenya adalah untuk mewakili fitur-fitur dalam ruang yang ditransformasi dari dimensi yang tidak berkorelasi, yang memadatkan sebagian besar informasi data dalam vektor eigen ruang ini dalam urutan kepentingan yang menurun.

Sekarang saya mencoba menerapkan prosedur ini ke data deret waktu. Masalahnya adalah bahwa tidak semua urutan memiliki panjang yang sama, jadi saya benar-benar tidak bisa membangun num-by-dimmatriks dan menerapkan SVD. Pikiran pertama saya adalah mengisi matriks dengan nol dengan membangun num-by-maxDimmatriks dan mengisi ruang kosong dengan nol, tapi saya tidak begitu yakin apakah itu cara yang benar.

Pertanyaan saya adalah bagaimana Anda pendekatan pengurangan dimensi SVD ke deret waktu dengan panjang yang berbeda? Atau adakah metode representasi eigenspace serupa lainnya yang biasa digunakan dengan deret waktu?

Di bawah ini adalah bagian dari kode MATLAB untuk menggambarkan ide:

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

(Saya mengkode sebagian besar dalam MATLAB, tapi saya cukup nyaman untuk membaca R / Python / .. juga)

Amro
sumber
Pertanyaan bagus! Saya pikir Anda dapat meningkatkan judul, mungkin ada sesuatu seperti "data yang hilang" di suatu tempat atau "seri kali dengan panjang yang berbeda".
robin girard
1
Saya tidak akan menyebutnya "data yang hilang", mungkin "pengurangan dimensi SVD untuk deret waktu dengan panjang berbeda"?
Amro
1
Saya suka judul yang Anda ajukan!
robin girard
1
itu juga akan membantu untuk mengetahui mengapa seri memiliki panjang yang berbeda. Sebagai contoh, jika mereka mewakili lintasan pensil selama tugas tulisan tangan, katakanlah perpindahan X saat menuliskan angka, maka Anda mungkin ingin menyelaraskan deret waktu sehingga panjangnya sama. Penting juga untuk mengetahui jenis variasi apa yang Anda ingin pertahankan, dan apa yang tidak Anda pertahankan.
vqv

Jawaban:

5

Ada bidang penelitian yang cukup baru yang disebut Matrix Completion , yang mungkin melakukan apa yang Anda inginkan. Pengantar yang sangat bagus diberikan dalam kuliah ini oleh Emmanuel Candes

Robby McKilliam
sumber
+1 untuk situs web VideoLecture, saya tidak tahu, apakah Anda menyebutkannya dalam pertanyaan tentang video ceramah?
robin girard
Saya hanya membaca tentang hal ini baru-baru ini. Saya sangat suka karya Candes dan Tao baru-baru ini tentang topik arxiv.org/abs/0903.1476
Robby McKilliam
2

Mengisi dengan nol itu buruk. Coba isi dengan resampling menggunakan pengamatan dari masa lalu.

robin girard
sumber
Replikasi / resampling +1 pasti lebih baik daripada zero-padding .. masih saya akan menunggu dan melihat apakah ada ide lain di luar sana :)
Amro
2

Hanya pemikiran: Anda mungkin tidak membutuhkan SVD lengkap untuk masalah Anda. Misalkan M = USV * menjadi SVD dari matriks d oleh n Anda ( yaitu , deret waktu adalah kolom). Untuk mencapai pengurangan dimensi Anda akan menggunakan matriks V dan S . Anda dapat menemukannya dengan mendiagonalisasi M * M = V (S * S) V * . Namun, karena Anda kehilangan beberapa nilai-nilai, Anda tidak bisa menghitung M * M . Namun demikian, Anda dapat memperkirakannya. Entri-entrinya adalah jumlah produk dari kolom M . Saat menghitung salah satu SSP, abaikan pasangan yang melibatkan nilai yang hilang. Skala ulang setiap produk untuk memperhitungkan nilai-nilai yang hilang: yaitu, setiap kali SSP melibatkan pasangan nk , skala ulang dengan n / (nk). Prosedur ini merupakan penaksir "masuk akal" dari M * M dan Anda dapat melanjutkan dari sana. Jika Anda ingin menjadi pelamun, mungkin beberapa teknik imputasi atau Matrix Completion akan membantu.

(Ini dapat dilakukan dalam banyak paket statistik dengan menghitung matriks kovarians berpasangan dari dataset yang dialihkan dan menerapkan PCA atau analisis faktor untuknya.)

whuber
sumber
prosedur ini menghasilkan estimasi M.TM.itu mungkin bukan semidefinite positif, yang akan menjadi buruk.
shabbychef
Itu poin yang bagus, tetapi hasilnya mungkin tidak terlalu buruk. Yang diharapkan adalah bahwa perkiraan M * M cukup dekat dengan nilai sebenarnya sehingga gangguan nilai eigen cukup kecil. Dengan demikian, dengan memproyeksikan ke eigenspace yang sesuai dengan nilai eigen terbesar, Anda hanya mencapai sedikit gangguan dari solusi yang benar, masih mencapai pengurangan dimensi yang dicari. Mungkin masalah terbesar mungkin algoritmik: karena Anda tidak lagi dapat mengasumsikan semidefiniteness, Anda mungkin perlu menggunakan algoritma tujuan umum untuk menemukan sistem eigens.
whuber
1

Anda dapat memperkirakan model deret waktu univariat untuk seri 'pendek' dan mengekstrapolasi mereka ke masa depan untuk 'menyelaraskan' semua seri.


sumber
ekstrapolasi akan mencakup kelancaran di bagian yang diisi yang tidak ada di bagian yang ada. Anda harus menambahkan keacakan ... maka resampling (dan resmapling pada ekstrapolasi tampaknya menjadi ide yang baik)
robin girard
Ekstrapolasi model akan membutuhkan pengambilan sampel istilah kesalahan yang akan menginduksi keacakan yang diinginkan.
IMO kedua saran tersebut diramalkan untuk memprediksi nilai masa depan dari yang sudah ada (model AR / ARMA mungkin?). Saya kira saya masih berharap untuk solusi yang tidak melibatkan nilai sampling (sehingga kemungkinan memperkenalkan kesalahan) .. Selain memperkirakan model seperti itu sendiri merupakan bentuk pengurangan dimensionalitas :)
Amro
1

Saya agak bingung dengan kode contoh Anda, karena sepertinya Anda menjatuhkan Vvariabel dari perhitungan newX. Apakah Anda ingin memodelkan Xsebagai produk peringkat yang diperkecil, atau apakah Anda tertarik pada ruang kolom yang diperkecil X? dalam kasus terakhir, saya pikir pendekatan EM-PCA akan bekerja. Anda dapat menemukan kode matlab dengan judul Probabilistic PCA dengan nilai yang hilang .

hth,

shabbychef
sumber
Saya tidak mencoba menghitung perkiraan peringkat yang lebih rendah dari X, melainkan X yang ditransformasikan. Anda lihat tujuan saya bukan untuk menyaring urutan bising, tetapi untuk menemukan representasi dengan dimensi berkurang (digunakan untuk klasifikasi / pengelompokan deret waktu) ) ... Bisakah Anda menguraikan sedikit tentang pendekatan EM-PCA?
Amro