Hay un poco de matemática al comienzo de esta publicación, pero también escribí un programa rápido de MATLAB que visualiza lo que SVD puede hacer a una imagen.
En el contexto del análisis de datos, la idea es utilizar una aproximación de rango reducido de un conjunto de datos para generalizar algunas de las propiedades / estructuras.
¿Qué es la descomposición del valor singular?
Para encontrar una SVD de A, debemos encontrar V, \ Sigma y U de manera que:
- ¿Cuál es el significado detrás del inverso del gradiente o del operador laplaciano?
- ¿Cuáles son algunos de los usos del producto de matriz de entrada ‘ingenuo’ [matemáticas] (A \ circ B) _ {ij}: = a_ {ij} \ cdot b_ {ij} [/ matemáticas]?
- ¿Por qué no multiplicamos dos matrices al igual que sumar dos matrices?
- ¿Cuál es el estado del arte en la multiplicación de matrices grandes en grupos de computadoras (octubre de 2014)?
- ¿Qué significa que una matriz sea linealmente dependiente?
[matemáticas] A = U \ Sigma V ^ T [/ matemáticas]
1. [matemática] V [/ matemática] debe diagonalizar [matemática] A ^ TA [/ matemática]
1.1. [math] v_i [/ math] son vectores propios de [math] A ^ TA [/ math].
2. [matemática] \ Sigma [/ matemática] donde [matemática] \ Sigma_ {ii} [/ matemática] son valores singulares de [matemática] A [/ matemática].
3. [matemática] U [/ matemática] debe diagonalizar [matemática] AA ^ T [/ matemática]
3.1 [math] u_i [/ math] son vectores propios de [math] AA ^ T [/ math].
Si [matemáticas] A [/ matemáticas] tiene rango [matemáticas] r [/ matemáticas] entonces:
1. [math] v_i \ cdots v_r [/ math] forma una base ortonormal para el rango de [math] A ^ T [/ math]
2. [math] u_i \ cdots u_r [/ math] forman una base ortonormal para el rango de [math] A [/ math]
3. El rango de [matemáticas] A [/ matemáticas] es igual al número de entradas distintas de cero de S. De la forma de esta factorización
Vemos que podemos expresar [matemática] A [/ matemática] de otra manera, se puede demostrar que [matemática] A [/ matemática] puede escribirse como una suma de matrices de Rango = 1.
[matemáticas] A = \ sum_ {i = 1} ^ r \ sigma_iu_iv_i ^ T [/ matemáticas]
Sabemos que por construcción [math] \ sigma_i [/ math] decreciente monotónico, la importancia / peso del término [math] n ^ {th} [/ math] disminuye. Esto significa que la suma de [math] k <r [/ math] es una aproximación [math] \ hat {A} [/ math] de rango [math] k [/ math] para la matriz [math] A [/ matemáticas].
tl; dr
La descomposición de valores singulares trata esencialmente de reducir una matriz de rango [matemática] R [/ matemática] a una matriz de rango K.
Pero ¿qué significa esto?
Significa que podemos tomar una lista de vectores únicos [matemáticos] R [/ matemáticos] y aproximarlos como una combinación lineal de vectores únicos [matemáticos] K [/ matemáticos].
Tome este ejemplo, la imagen a continuación es una imagen hecha de 400 vectores de fila únicos.
SVD es mi algoritmo favorito, y Feynman es mi científico favorito.
¿Qué sucede si tomo el primer vector singular?
Tenga en cuenta que cada fila de píxeles es la misma … solo diferente ‘brillo’
Esencialmente, cada fila ahora se puede escribir como [math] R_i = c_i \ cdot SV_1 [/ math] donde [math] c_i [/ math] es el factor de escala y [math] SV_1 [/ math] es el vector singular con El valor singular más alto (mayor contribución a los datos)
¿Qué sucede si tomo los primeros dos vectores singulares?
Ahora, cada fila se puede escribir como la suma de dos vectores
[matemáticas] R_i = c_i \ cdot SV_1 + b_i \ cdot SV_2 [/ matemáticas]
Donde [math] SV_2 [/ math] es el segundo vector singular más influyente.
k = 10
¿Puedes creerlo? ¡Con solo 10 vectores únicos, casi puedo distinguir la imagen!
k = 50
Ahí tienes.
Usando 50 valores únicos y obtienes una representación decente de cómo se ven 400 valores únicos.
Espacio vectorial de las cosas.
Piensa en otro ejemplo. Digamos que soy netflix. Y tengo 100 millones de usuarios y cada uno ha visto las mismas 500 películas.
Lo que puedo decir es que cada persona puede caracterizarse en base a [matemáticas] R ^ n [/ matemáticas] donde [matemáticas] n = 100 [/ matemáticas]. Entonces cada usuario está en el espacio vectorial de las películas.
¿Cómo razono sobre estos datos? No tenemos forma de ‘reducir’ la dimensión del espacio vectorial de las películas. ¿Cómo obtengo información?
Tal vez tomaré la SVD truncada en … k = 50.
¿Qué significa esto? Esto significa que voy a encontrar los mejores 50 vectores que podrían ser una buena representación de la matriz. Voy a encontrar los vectores singulares, lo que hago es matemáticamente la siguiente declaración.
Es un cambio de base de la base de la película a la primera base de vector singular k. La interpretación podría ser que cada usuario puede ser igual a
[matemáticas] usuario = \ Sigma ^ {50} c_i \ cdot SV_i [/ matemáticas]
Donde SV son los vectores singulares.
Podemos considerar esos 50 valores singulares como ‘tipos de usuarios’. Podemos descubrir que [math] SV_3 [/ math] tiene calificaciones altas en películas deportivas mientras que [math] SV_2 [/ math] tiene calificaciones muy altas en películas de terror.
Esto nos permite considerar solo 50 tipos de usuarios y usar esos 50 para generalizar los 500 (tada, tiene reducción de dimensionalidad)
SV_1 = documentales
SV_2 = horror
SV_3 = deportes
…
Cuando miramos los valores singulares (en lugar de los vectores singulares) notamos que un usuario tiene los valores [0,4,2,0 ..]
Esto significa que user = [math] 4 \ cdot SV_2 + 2 \ cdot SV_3 +… [/ math]
Traducción: a este usuario le gustan las películas de terror y tal vez también ve deportes.
Podemos reescribir a las personas desde la base de la película al género de la película. Eso es matemático, también funciona bastante bien.
Otros ejemplos podrían ser desde la base de la palabra hasta la base del tema o la base de la ropa y la moda.