Reducción de dimensionalidad SVD para series de tiempo de diferente longitud


13

Estoy usando la descomposición del valor singular como técnica de reducción de dimensionalidad.

Dados los Nvectores de dimensión D, la idea es representar las características en un espacio transformado de dimensiones no correlacionadas, lo que condensa la mayor parte de la información de los datos en los vectores propios de este espacio en un orden decreciente de importancia.

Ahora estoy tratando de aplicar este procedimiento a datos de series temporales. El problema es que no todas las secuencias tienen la misma longitud, por lo que realmente no puedo construir la num-by-dimmatriz y aplicar SVD. Mi primer pensamiento fue rellenar la matriz con ceros construyendo una num-by-maxDimmatriz y llenando los espacios vacíos con ceros, pero no estoy tan seguro de si esa es la forma correcta.

Mi pregunta es ¿cómo aplica el enfoque SVD de reducción de dimensionalidad a series de tiempo de diferente longitud? Alternativamente, ¿hay otros métodos similares de representación del espacio propio usualmente utilizados con series de tiempo?

A continuación hay un fragmento de código MATLAB para ilustrar la idea:

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

(Estoy codificando principalmente en MATLAB, pero también estoy lo suficientemente cómodo como para leer R / Python / ...)


¡Buena pregunta! Creo que puede mejorar el título, podría haber algo como "datos faltantes" en alguna parte o "series de tiempo de diferente longitud".
robin girard

1
¿No lo llamaría "datos faltantes", tal vez "reducción de dimensionalidad SVD para series de tiempo de diferente longitud"?
Amro

1
¡Me gusta el título que propones!
robin girard

1
También sería útil saber por qué las series son de diferentes longitudes. Por ejemplo, si representan la trayectoria de un lápiz durante una tarea de escritura a mano, digamos el desplazamiento X mientras escribe un dígito, entonces es posible que desee alinear las series de tiempo para que tengan la misma longitud. También es importante saber qué tipo de variación le interesa retener y qué no.
vqv

Respuestas:


5

Existe un área de investigación razonablemente nueva llamada Matrix Completion , que probablemente haga lo que desee. Emmanuel Candes da una buena introducción en esta conferencia.


+1 para el sitio web VideoLecture, no lo sabía, ¿lo mencionaste en la pregunta sobre video conferencias?
robin girard

Solo he estado leyendo sobre estas cosas recientemente. Me gusta mucho el reciente trabajo de Candes y Tao sobre el tema arxiv.org/abs/0903.1476
Robby McKilliam

2

Llenar con cero es malo. Intente rellenar con remuestreo utilizando observaciones del pasado.


La replicación + remuestreo +1 definitivamente es mejor que el relleno cero ... aún así esperaré y veré si hay alguna otra idea :)
Amro

2

Solo un pensamiento: es posible que no necesite la SVD completa para su problema. Deje M = USV * ser la SVD de su matriz d por n ( es decir , las series temporales son las columnas). Para lograr la reducción de la dimensión que va a utilizar las matrices V y S . Puede encontrarlos diagonalizando M * M = V (S * S) V * . Sin embargo, debido a que le faltan algunos valores, no puede calcular . Al calcular cualquiera de los SSP, ignore los pares que implican valores faltantes. Cambie la escala de cada producto para tener en cuenta los valores faltantes: es decir, cada vez que un SSP incluya nk pares, vuelva a escalarlo en n / (nk). M * M . Sin embargo, puedes estimarlo. Sus entradas son sumas de productos de columnas de M Este procedimiento es un estimador "razonable" de M * M y puede proceder desde allí. Si quieres ponerte más elegante, quizás te ayuden las técnicas de imputación múltiples o Matrix Completion .

(Esto puede llevarse a cabo en muchos paquetes estadísticos calculando una matriz de covarianza por pares del conjunto de datos transpuesto y aplicando PCA o análisis factorial).


este procedimiento da como resultado una estimación de METROTMETROeso puede no ser semidefinido positivo, lo que sería malo.
shabbychef

Ese es un buen punto, pero el resultado podría no ser tan malo. Lo que uno espera es que la estimación de M * M esté lo suficientemente cerca del valor verdadero como para que la perturbación de los valores propios sea razonablemente pequeña. Por lo tanto, al proyectar en el espacio propio correspondiente a los valores propios más grandes, solo logra una ligera perturbación de la solución correcta, logrando aún la reducción de dimensión deseada. Quizás el mayor problema pueda ser algorítmico: dado que ya no puede asumir la semidefinición, es posible que deba usar un algoritmo de propósito más general para encontrar el sistema propio.
whuber

1

Puede estimar modelos de series temporales univariantes para las series 'cortas' y extrapolarlas en el futuro para 'alinear' todas las series.


la extrapolación incluiría suavidad en la parte rellenada que no existe en la parte existente. Hay que añadir aleatoriedad ... de ahí remuestreo (y resmapling en la extrapolación parece ser una buena idea)
Girard robin

Extrapolar el modelo requeriría muestrear el término de error que induciría la aleatoriedad deseada.

En mi opinión, ambas sugerencias se reducen a predecir valores futuros a partir de los existentes (¿modelos AR / ARMA tal vez?). Supongo que todavía espero una solución que no implique valores de muestreo (por lo tanto, la posibilidad de introducir un error). Además de estimar tales modelos es en sí mismo una forma de reducción de dimensionalidad :)
Amro

1

Estoy un poco confundido con su código de ejemplo, ya que parece que eliminas la Vvariable del cálculo de newX. ¿Está buscando modelar Xcomo un producto de rango reducido, o le interesa un espacio de columna reducido X? en el último caso, creo que un enfoque EM-PCA funcionaría. puede encontrar el código matlab bajo el título Probabilistic PCA con valores faltantes .

hth,


No estoy tratando de calcular una aproximación de rango reducido de X, sino una X transformada. Verán que mi objetivo no es filtrar secuencias ruidosas, sino encontrar una representación con una dimensionalidad reducida (para ser utilizada para la clasificación / agrupación de series temporales) ) ... ¿Podría explicar un poco sobre el enfoque EM-PCA?
Amro
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.