¿Cuál es la mejor manera de introducir la descomposición de valores singulares (SVD) en un curso de álgebra lineal? por que es tan importante? ¿Hay alguna aplicación que tenga un impacto real?

Aplicaciones de SVD: la compresión de imágenes es un buen ejemplo. Utiliza una matriz [matemática] A [/ matemática] (donde [matemática] Rango (A) = r [/ matemática]), que representa la siguiente imagen [1].

Luego, representa la imagen usando [matemática] r [/ matemática] matrices de rango uno [matemática] A = \ sum_ {i = 1} ^ r \ sigma_i u_i v_i ^ T [/ matemática] (la descomposición de valores singulares de [matemática] ] A [/ matemáticas]).

La imagen (la matriz de datos) se puede aproximar utilizando menos matrices de rango uno, por ejemplo, [matemáticas] k [/ matemáticas] (aproximación de rango bajo). [matemáticas] \ tilde {A} = \ sum_ {i = 1} ^ k \ sigma_i u_i v_i ^ T [/ matemáticas].
Y aquí están los resultados del uso de diferentes valores de [matemáticas] k [/ matemáticas] [2].

Entonces el error relativo [matemáticas] \ frac {|| A – \ tilde {A} || _2} {|| A || _2} [/ matemáticas] debería ser algo como la siguiente figura [2].


Lo que muestra que el uso de más componentes de rango uno reduce el error, y los datos se pueden aproximar con un error razonable usando un rango más bajo.

Entonces, puede presentar la idea de usar menos matrices de rango uno para aproximar la matriz de datos original. La matriz de datos puede ser una imagen como el ejemplo anterior o datos de texto donde cada matriz de rango uno puede representar un concepto.

[1] Figura de Aplicaciones de SVD: compresión de imagen
[2] Figura de la página en cs.uwaterloo.ca

SVD tiene un inmenso impacto en la vida real y es una de las factorizaciones más importantes. Como mi prof. dice: “Conoces una matriz cuando conoces su SVD”. La aplicación directa de SVD es el análisis de componentes principales utilizado para la reducción de dimensionalidad en Machine Learning.

Algunas de las propiedades más utilizadas de SVD son: –

  • El rango de A es r, el número de valores singulares distintos de cero.
  • rango (A) = (r = número de valores singulares distintos de cero, y u (i) es el conjunto de valores singulares izquierdos) y nulo ( A) = .
  • Los valores singulares distintos de cero de A son las raíces cuadradas de los valores propios distintos de cero de A * A.
  • | det (A) | = producto de sus valores singulares
  • Uso de SVD en aproximaciones de bajo rango (que inspira PCA).
  • La diagonalización de una matriz es cuando el rango se expresa en base a columnas de U y el dominio en base a columnas de V.
  • Relación de la SVD con el número de condición de una matriz.

Todo lo anterior se puede utilizar para motivar SVD. Sin embargo, me presentaron SVD a través de su significado geométrico, que también encontré bastante perspicaz y útil.

La figura y la mayoría de las discusiones anteriores se han inspirado en el libro “Álgebra lineal numérica” ​​de Trefethen y Bau. Las primeras conferencias sobre SVD en el libro son bastante intuitivas.

Imaginemos el ejemplo más simple en dos dimensiones. Se generaliza muy naturalmente a dimensiones superiores.

Supongamos que tenemos dos vectores bidimensionales, x₁ = ( x , y ) y x₂ = ( x₂ , y₂ ). Podemos ajustar una elipse con eje mayor, a , y eje menor, b , a estos dos vectores como se muestra en la figura. Pero para facilitarnos las cosas y ahorrar escritura, escribimos las ecuaciones usando álgebra matricial.

Podemos construir una elipse de cualquier tamaño y orientación estirando y girando un círculo unitario.

Sea x ‘= ( x ‘, y ‘) las coordenadas transformadas:

donde R es una matriz de rotación:

y M es una matriz diagonal que contiene los ejes mayor y menor:

Vamos a escribir esto término por término, tanto para el caso general:

donde m ᵢ es la iésima diagonal de la matriz, M , y para el caso de dos dimensiones:

Tenga en cuenta que la rotación es en el sentido de las agujas del reloj, opuesto al sentido habitual porque estamos pasando del sistema de coordenadas no transformado al transformado en lugar de al revés. Para la elipse resultante, el ángulo estará en el sentido habitual en sentido antihorario.

La ecuación para un círculo unitario es la siguiente:

Deseamos ajustar un conjunto de x ‘s, que recopilamos como las filas de una matriz, X :

La ecuación matricial resultante se da:

Esto es solo una reorganización de la ecuación (3). Si consideramos A como una colección de puntos, los valores singulares son los ejes de un elipsoide ajustado de mínimos cuadrados, mientras que V es su orientación. La matriz U es la proyección de cada uno de los puntos en A sobre los ejes.

Aprenda sobre las aplicaciones populares y ejemplos aquí .

Lo presentamos en nuestro curso en línea ( http://lem.ma/LA ) como consecuencia de la muy general “descomposición polar”. La discusión comienza en la lección Descomposición polar: un producto de matrices ortogonales y simétricas y llega a la SVD razonablemente rápido.

SVD es importante por varias razones, pero aquí hay una que no se menciona con suficiente frecuencia: surge cuando se analiza la minimización de | Axe | sujeto a la restricción | x | = 1.

SVD es una de las herramientas más versátiles de la historia. Se puede usar para diseccionar una matriz por completo. Toda la información que se puede obtener de una matriz se puede obtener de una SVD simple.

[matemáticas] A = U \ Sigma V ^ T [/ matemáticas]

Miro SVD como una forma de encontrar una base unitaria para los 4 espacios fundamentales de la matriz . Por lo tanto, termino dividiendo el Dominio de la matriz en (Espacio nulo del espacio de filas) = ​​(V) y el Rango de la matriz en (Espacio nulo izquierdo del espacio de columnas) = ​​(U)

¿Cómo presentarlo?

El siguiente proceso de pensamiento ayudará a hacer obvia la existencia de SVD:

  1. Los 4 espacios de una matriz existen
  2. Debe haber alguna forma matemática de encontrar la base de estos espacios.
  3. SVD es el procedimiento para encontrar estas bases.

En lugar de introducir SVD como una herramienta mágica que puede diagonalizar matrices rectangulares, me gustaría enfatizar en la división de la perspectiva base.

Una vez que la estructura de una matriz ha quedado al descubierto, puede explotar todas sus propiedades. Las aplicaciones son inmensas. Desde el simple cálculo del rango hasta las variables aleatorias sin correlación, usamos SVD. Estos pueden recibir diferentes nombres como PCA, Compresión de imagen, etc.

En un proyecto mío, uso las siguientes funciones que dependen de SVD:

def columspace( mat ): ''' Generates the Unitary basis vectors which span the column space of the given matrix''' col,eigen,row = numpy.linalg.svd(mat) # SVD return col[:,:matrix_rank(mat)] #SVD def nullspace( mat ): '''Generates the Unitary basis for the null-space of the given matrix''' col, eigen, row = numpy.linalg.svd( mat ) #SVD return (row.T)[:,(matrix_rank(mat)):] #SVD def removeBasis( space, basis ): ''' Removes the mentioned basis and provides the vestigial basis for the subspace.''' to_remove = columnProj( space, basis, 1 ) null = nullspace( to_remove.T ) # SVD return numpy.dot( space, null ) 

La SVD es esencialmente una generalización de la diagonalización, con el beneficio de que siempre existe, sin importar la naturaleza de la matriz, mientras que la diagonalización requiere matrices cuadradas y no defectuosas. Como señala Sharad, SVD puede considerarse como una descomposición en matrices de rango uno, lo cual es útil para muchos propósitos, incluido PCA. Para visualizarlo, piense en la matriz como una transformación de una hiperesfera a un hiper-elipsoide, con la SVD que especifica la dirección y la magnitud de los semiejes del hiper-elipsoide.

Las SVD son muy utilizadas en física computacional. Por ejemplo, cuando se estudian sistemas electrónicos de baja dimensión, el método más avanzado, conocido como DMRG, es básicamente un refinamiento algorítmico de un grupo de SVD.

Disfrazados de las descomposiciones de Schmidt, son la carta de presentación numérica del enredo cuántico.