3 votos

Descomposición del valor singular más columnas que filas

Estoy confundido con la descomposición del valor singular de una matriz. Puede que sólo sea un malentendido de lo que hace la descomposición del valor singular, así que, por favor, sé amable conmigo. Si hago una descomposición de valor singular en $X$ con $m$ filas y $n$ columnas de tal manera que obtengo $X=U\Sigma V$ . $V^*$ se supone que es una matriz cuadrada nxn (véase por ejemplo Wikipedia . Sin embargo, para una matriz x por ejemplo de tamaño (40,100) obtengo en Julia (y también en R):

x = randn(40, 100)
xsvd = svdfact(x)
size(xsvd.Vt)
(40,100)

Estoy esperando (100,100). Sin embargo, para

x = randn(100, 40)
xsvd = svdfact(x)
size(xsvd.Vt)
(40,40)

Tengo lo que espero.

¿Puede alguien explicarme qué está pasando aquí? ¿Y posiblemente indicarme algún lugar donde pueda leer los fundamentos?

0 votos

Cuando se realiza la SVD de una matriz nXp, normalmente se obtienen 3 matrices como resultado: vectores propios izquierdos U (nXn), vectores propios derechos V (pXp), matriz diagonal de valores singulares S (nXp). Algunas implementaciones de la función pueden cortar filas o columnas vacías de S.

0 votos

@ttnphns: sí, tienes razón. Mi pregunta es con respecto a los vectores propios de la derecha $V^*$ . Supongo que debería haber sido más preciso.

0 votos

Debe tener en cuenta que sólo tienen sentido los vectores propios correspondientes a valores singulares distintos de cero. Por lo tanto, los vectores propios finales de V, correspondientes a valores singulares nulos, pueden fijarse en cero. Si es así, pueden no calcularse o no mostrarse mediante una función.

6voto

Brian Borchers Puntos 2546

Si miras $U \Sigma V^{T}$ cuando $m<n$ Verá que el último $n-m$ columnas de $V$ (filas de $V^{T}$ ) se multiplican por 0. Muchos paquetes de software calculan una forma compacta de la SVD en la que no se devuelven estas columnas.

0 votos

Así que los valores singulares en $\Sigma$ ¿son 0? Eso tendría algún sentido. Ahora ya sé lo que pasa. ¿Puedes explicarme o indicarme algún sitio donde pueda aprender por qué ocurre eso?

0 votos

$\Sigma$ es un $m$ por $n$ matriz diagonal, con valores singulares posiblemente distintos de cero en $\Sigma_{1,1}$ a través de $\sigma_{m,m}$ pero los valores singulares de $m+1$ , $\ldots$ , $n$ se consideran todos 0 (no hay lugar para poner estos ceros en el $m$ por $n$ matriz $\Sigma$ .)

0voto

Ângelo Polotto Puntos 101

Me encontré con este mismo problema en SciDart ( https://scidart.org/ ) y la respuesta de Brian Borchers me ayudó a encontrar una salida. Pero mi enfoque fue diferente (puedes encontrar mi implementación aquí https://github.com/scidart/scidart/blob/9f5d4e42996b35d32976d571b2acd8804298ed4d/lib/src/numdart/linalg/decompositions/svd.dart#L84 ) y mi implementación se basa en la biblioteca JAMA ( https://math.nist.gov/javanumerics/jama/doc/Jama/SingularValueDecomposition.html ):

  1. si $m < n$ , añadir nuevo $n - m$ líneas a su entrada y rellenarla con ceros, obtendrá un $n x n$ matriz cuadrada como entrada;
  2. calcular la SVD;
  3. si $m < n$ multiplicar cada elemento de $U$ y $V$ por -1;

Donde

  • $m$ es el número de filas;
  • $n$ es el número de columnas;

1 votos

¿Podría explicar en qué consiste la multiplicación por $-1$ se pretende hacer? No parece alterar ninguna de las propiedades que definen el SVD.

0 votos

No puedo explicar matemáticamente, pero es probablemente un artefacto del algoritmo que estoy usando.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X