valores una singulares resueltos propios propiedades ortogonal matriz los ejercicios descomposición descomposicion definicion autovectores autovalores aplicaciones algunas math matrix linear-algebra svd

math - una - svd matlab



Qué es SVD(descomposición del valor singular) (5)

¿Cómo reduce realmente el ruido? ¿Puede sugerir algunos buenos tutoriales?


La SVD puede entenderse desde un sentido geométrico para matrices cuadradas como una transformación en un vector.

Considere una matriz nxn cuadrada M que multiplica un vector v para producir un vector de salida w:

w = M*v

La descomposición de valores singulares M es el producto de tres matrices M=U*S*V , entonces w=U*S*V*v . U y V son matrices ortonormales. Desde un punto de vista de transformación geométrica (que actúa sobre un vector multiplicándolo), son combinaciones de rotaciones y reflejos que no cambian la longitud del vector que están multiplicando. S es una matriz diagonal que representa escalado o aplastamiento con diferentes factores de escala (los términos diagonales) a lo largo de cada uno de los n ejes.

Entonces el efecto de multiplicar por la izquierda un vector v por una matriz M es rotar / reflejar v por el factor ortonormal V de M, luego escalar / aplastar el resultado por un factor diagonal S, luego rotar / reflejar el resultado por el factor ortonormal U de M.

Una razón por la cual la SVD es deseable desde un punto de vista numérico es que la multiplicación por matrices ortonormales es una operación invertible y extremadamente estable (el número de condición es 1). La SVD captura cualquier mal condicionamiento en la matriz de escalado diagonal S.


La SVD también se puede usar para facilitar enormemente la adaptación global (es decir, a todas las observaciones simultáneamente) de un modelo arbitrario (expresado en una fórmula) a los datos (con respecto a dos variables y expresado en una matriz).
Por ejemplo, la matriz de datos A = D * M T donde D representa los estados posibles de un sistema y M representa su evolución con alguna variable (por ejemplo, el tiempo).
Por SVD, A (x, y) = U (x) * S * V T (y) y por lo tanto D * M T = U * S * V T
luego D = U * S * V T * M T + donde el "+" indica un pseudoinverso.
Uno puede entonces tomar un modelo matemático para la evolución y ajustarlo a las columnas de V , cada una de las cuales es una combinación lineal de los componentes del modelo (esto es fácil, ya que cada columna es una curva 1D). Esto obtiene los parámetros del modelo que generan M ? (el? indica que se basa en la adaptación).
M * M ? + * V = V ? que permite residuos R * S 2 = V - V ? para ser minimizado, determinando así D y M.

Genial, ¿eh?

Las columnas de U y V también se pueden inspeccionar para obtener información sobre los datos; por ejemplo, cada punto de inflexión en las columnas de V típicamente indica un componente diferente del modelo.

Finalmente, y en realidad abordando su pregunta, es importante notar que aunque cada valor singular sucesivo (elemento de la matriz diagonal S ) con sus vectores auxiliares U y V tiene una señal más baja al ruido, la separación de los componentes del modelo en estos vectores "menos importantes" son en realidad más pronunciados. En otras palabras, si los datos se describen mediante un conjunto de cambios de estado que siguen una suma de exponenciales o lo que sea, los pesos relativos de cada exponencial se acercan entre sí en los valores singulares más pequeños. En otras palabras, los últimos valores singulares tienen vectores que son menos lisos (más ruidosos) pero en los cuales el cambio representado por cada componente es más distinto .


La descomposición de valores singulares es un método para tomar una matriz nxm M y "descomponerla" en tres matrices de modo que M = U S V. S es un cuadrado diagonal (las únicas entradas diferentes de cero están en la diagonal de arriba a la izquierda a abajo a la derecha ) matriz que contiene los "valores singulares" de M. U y V son ortogonales, lo que conduce a la comprensión geométrica de SVD, pero eso no es necesario para la reducción de ruido.

Con M = U S V, todavía tenemos la matriz original M con todo su ruido intacto. Sin embargo, si solo mantenemos los k valores individuales más grandes (lo cual es fácil, dado que muchos algoritmos SVD calculan una descomposición donde las entradas de S se ordenan en orden no ascendente), entonces tenemos una aproximación de la matriz original. Esto funciona porque suponemos que los valores pequeños son el ruido, y que los patrones más significativos en los datos se expresarán a través de los vectores asociados con valores singulares más grandes.

De hecho, la aproximación resultante es la aproximación rank-k más precisa de la matriz original (tiene el error de mínimos cuadrados).


Para responder a la pregunta tilde: SVD es una generalización de autovalores / vectores propios a matrices no cuadradas. Digamos, $ X / in N / veces p $, entonces la descomposición SVD de X produce X = UDV ^ T donde D es diagonal y U y V son matrices ortogonales. Ahora X ^ TX es una matriz cuadrada, y la descomposición SVD de X ^ TX = VD ^ 2V donde V es equivalente a los vectores propios de X ^ TX y D ^ 2 contiene los valores propios de X ^ TX.


Una forma de usar SVD para reducir el ruido es hacer la descomposición, configurar los componentes que están cerca de cero para que sean exactamente cero, luego volver a componer.

Aquí hay un tutorial en línea sobre SVD.

Es posible que desee echar un vistazo a Recetas Numéricas .