Зменшення розмірності SVD для часових рядів різної довжини


13

Я використовую сингулярне значення декомпозиції як метод зменшення розмірності.

З огляду на Nвектори розмірності D, ідея полягає у представленні ознак у перетвореному просторі некоррельованих розмірів, що конденсує більшу частину інформації даних у власних векторах цього простору у зменшуваному порядку важливості.

Зараз я намагаюся застосувати цю процедуру до даних часових рядів. Проблема полягає в тому, що не всі послідовності мають однакову довжину, тому я не можу реально створити num-by-dimматрицю і застосувати SVD. Моя перша думка полягала в тому, щоб забивати матрицю нулями, будуючи num-by-maxDimматрицю і заповнюючи порожні пробіли нулями, але я не так впевнений, чи це правильний шлях.

Моє запитання - як ви підходите до зменшення розмірності 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 / ..)


Гарне питання! Я думаю, ви можете покращити назву, могло б бути щось на зразок "відсутні дані" десь або "часові ряди різної довжини".
Робін Жирард

1
Я б не назвав це "відсутніми даними", можливо, "зменшення розмірності SVD для часових рядів різної довжини"?
Amro

1
Мені подобається титул, який ти пропонуєш!
Робін Жирард

1
це також допоможе дізнатися, чому серіали мають різну тривалість. Наприклад, якщо вони представляють траєкторію олівця під час рукописного завдання, скажіть переміщення X під час написання цифри, то, можливо, ви захочете вирівняти часовий ряд так, щоб вони були однакової довжини. Також важливо знати, який тип варіанту ви хочете зберегти, а який - не.
vqv

Відповіді:


5

Існує досить нова область досліджень під назвою Matrix Completion , яка, ймовірно, робить те, що ви хочете. Справді приємне вступ дано в цій лекції Еммануеля Кандеса


+1 для веб-сайту VideoLecture, я не знав, ви це згадали у запитанні про відео лекції?
Робін Жирард

Я недавно читав про цей матеріал недавно. Мені дуже подобається нещодавній документ
Candes

2

Заповнення нуля - це погано. Спробуйте заповнити переустановку, використовуючи спостереження минулого.


Реплікація / повторне розміщення +1, безумовно, краще, ніж нульове накладення .. все-таки я зачекаю, і чи є ще якісь ідеї там :)
Amro

2

Просто думка: вам може не знадобиться повний SVD для вашої проблеми. Нехай M = USV * - SVD матриці d по n ( тобто часовий ряд є стовпцями). Для того, щоб досягти зменшення розміру ви будете використовувати матриці V і S . Ви можете їх знайти, діагоналізуючи M * M = V (S * S) V * . Тим НЕ менше, тому що вам не вистачає кілька значень, ви не можете обчислити M * M . Тим не менш, ви можете це оцінити. Його записи - це суми продуктів стовпців М. Під час обчислення будь-якого з SSP ігноруйте пари, що містять відсутні значення. Повторний масштаб кожного продукту для врахування відсутніх значень: тобто, кожного разу, коли SSP включає nk- пари, змініть їх масштаб на n / (nk). Ця процедура є "розумним" оцінником M * M, і ви можете продовжити звідти. Якщо ви хочете отримати більш фантазії, можливо , допоможуть кілька методів імпутації або завершення матриці .

(Це може бути здійснено у багатьох статистичних пакетах, обчисливши парну коваріаційну матрицю транспонованого набору даних та застосувавши до неї PCA або факторний аналіз.)


MTM

Це хороший момент, але результат може бути не таким поганим. Сподіваємось, що оцінка M * M досить близька до справжнього значення, що збурення власних значень досить мало. Таким чином, проектуючи на власний простір, що відповідає найбільшим власним значенням, ви досягаєте лише невеликого збурення правильного рішення, все-таки досягаючи шуканого зменшення розміру. Мабуть, найбільша проблема може бути алгоритмічною: оскільки ви більше не можете припускати напіввизначеність, вам може знадобитися використовувати алгоритм загального призначення, щоб знайти власну систему.
whuber

1

Ви можете оцінити одноманітні моделі часових рядів для «коротких» серій та екстраполювати їх у майбутнє, щоб «вирівняти» всі серії.


екстраполяція включала б гладкість у заповненій частині, яка не існує в існуючій частині. Ви повинні додати випадковість ... отже, перекомпонування (і повторний вибір на екстраполяцію здається гарною ідеєю)
Робін Жирард

Екстраполяція моделі потребує вибірки терміна помилки, який може викликати бажану випадковість.

Обидві пропозиції ІМО зводяться до прогнозування майбутніх значень із існуючих (можливо, моделі AR / ARMA?). Я думаю, що я все ще сподіваюся на рішення, яке не передбачає вибіркових значень (таким чином, можливість ввести помилку). Крім того, оцінка таких моделей сама по собі є формою зменшення розмірності :)
Amro

1

Я дещо заплутаний у вашому прикладі коду, оскільки, здається, ви скидаєте Vзмінну з обчислення newX. Ви шукаєте модель Xяк продукт зниженого рангу, або вас цікавить скорочений простір стовпців X? в останньому випадку я думаю, що підхід EM-PCA спрацював би. ви можете знайти код matlab під заголовком ймовірнісний PCA з відсутніми значеннями .

hth,


Я не намагаюся обчислити наближення X зі зменшеним рангом, а перетворений X. Ви бачите, що моя мета - не фільтрувати галасливі послідовності, а знайти представлення зі зменшеною розмірністю (використовувати для класифікації / кластеризації часових рядів ) ... Не могли б ви трохи детальніше зупинитися на підході EM-PCA?
Amro
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.