Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Descomposición en Valores Singulares (SVD) | Álgebra Lineal y Operaciones con Matrices
Introducción a SciPy

Descomposición en Valores Singulares (SVD)

Desliza para mostrar el menú

La descomposición en valores singulares (SVD) es una técnica matemática que ayuda a comprender y simplificar datos complejos. Imagina que tienes una gran tabla de números: SVD te permite dividir esta tabla en tres partes más pequeñas y fáciles de entender. Cada parte revela diferentes aspectos de los datos originales, como sus patrones principales o características importantes.

El propósito de SVD es dar sentido a la información complicada. Al separar una matriz (una cuadrícula de números) en componentes más simples, puedes:

  • Identificar las tendencias o características más importantes en tus datos;
  • Eliminar el ruido o detalles irrelevantes que podrían confundir tu análisis;
  • Reducir la cantidad de información que necesitas almacenar o procesar, haciendo los cálculos más rápidos y eficientes;
  • Descubrir relaciones o estructuras ocultas que no son evidentes a simple vista.

SVD se utiliza en muchas tecnologías cotidianas y campos científicos. Por ejemplo:

  • En la compresión de imágenes, SVD ayuda a reducir el tamaño de los archivos de fotos sin perder detalles clave;
  • En el procesamiento de música y voz, ayuda a reducir el ruido de fondo y aclarar las señales;
  • En los sistemas de recomendación, como los que usan los servicios de streaming, SVD encuentra patrones en tus preferencias para sugerir nuevo contenido;
  • En el procesamiento de lenguaje natural, ayuda a agrupar temas o significados similares en grandes colecciones de texto.

Comprender SVD te brinda una herramienta poderosa para trabajar con datos, sin importar tu formación. Permite extraer información valiosa, simplificar datos y mejorar el rendimiento de los sistemas digitales modernos.

12345678910111213
import numpy as np from scipy.linalg import svd # Create a sample matrix A = np.array([[3, 1, 1], [-1, 3, 1]]) # Compute the Singular Value Decomposition U, s, VT = svd(A) print("U matrix:\n", U) print("Singular values:", s) print("VT matrix:\n", VT)
Descripción del código
expand arrow

Este código demuestra cómo realizar la descomposición en valores singulares (SVD) utilizando SciPy en Python:

  • Se comienza importando las bibliotecas necesarias: numpy para crear y manipular arreglos, y scipy.linalg.svd para realizar la SVD;
  • Se crea una matriz de ejemplo A como un arreglo de 2x3 números;
  • La función svd descompone la matriz A en tres componentes: U, s y VT. Aquí, U contiene los vectores singulares izquierdos, s contiene los valores singulares y VT contiene los vectores singulares derechos (transpuestos);
  • El código imprime cada uno de estos componentes en la consola para que puedas ver los resultados de la descomposición.

Este ejemplo ayuda a comprender cómo descomponer una matriz en sus partes fundamentales, lo cual es útil para el análisis de datos, la compresión y la identificación de patrones en tus datos.

12345678910111213141516171819202122
import numpy as np from scipy.linalg import svd # Original matrix A = np.array([[3, 1, 1], [-1, 3, 1]]) # Full SVD U, s, VT = svd(A) # Reconstruct the original matrix from all singular values S_full = np.zeros((U.shape[1], VT.shape[0])) np.fill_diagonal(S_full, s) A_reconstructed = np.dot(U, np.dot(S_full, VT)) print("Reconstructed matrix (all singular values):\n", A_reconstructed) # Truncate to keep only the largest singular value S_truncated = np.zeros_like(S_full) S_truncated[0, 0] = s[0] A_truncated = np.dot(U, np.dot(S_truncated, VT)) print("Reconstructed matrix (truncated):\n", A_truncated)
Descripción del código
expand arrow

Este código demuestra cómo utilizar la descomposición en valores singulares (SVD) para descomponer una matriz y luego reconstruirla usando todos o solo algunos de sus valores singulares. El proceso paso a paso es el siguiente:

  1. Creación de la matriz original: Se define una matriz A utilizando NumPy. Este es el punto de partida para la SVD.
  2. SVD completa: La función svd de SciPy divide A en tres matrices: U, s y VT. Estas representan los vectores singulares izquierdos, los valores singulares y los vectores singulares derechos, respectivamente.
  3. Reconstrucción con todos los valores singulares: Se crea una matriz diagonal S_full a partir de los valores singulares y se multiplican las matrices (U, S_full, VT) para reconstruir la matriz original. Esto muestra que la SVD puede reconstruir perfectamente la matriz cuando se utilizan todos los valores singulares.
  4. Truncamiento para aproximación: Se crea una nueva matriz diagonal S_truncated que conserva solo el valor singular más grande (los demás se establecen en cero). Al multiplicar U, S_truncated y VT se obtiene una aproximación de la matriz original. Este paso demuestra la reducción de dimensionalidad: al usar menos valores singulares, se simplifica la matriz manteniendo sus características más importantes.
  5. Salida: El código imprime tanto la matriz completamente reconstruida como la versión truncada, permitiendo comparar los efectos de la reducción de dimensionalidad. La matriz truncada captura la estructura principal pero pierde algunos detalles, mostrando cómo la SVD puede utilizarse para compresión de datos y extracción de características.

La SVD es especialmente valiosa para la reducción de dimensionalidad. Al conservar solo los valores singulares más grandes y sus vectores correspondientes, es posible aproximar la matriz original con muchas menos dimensiones. Este proceso elimina el ruido y la información redundante, facilitando la visualización y el procesamiento de los datos mientras se mantienen sus características más importantes. En términos prácticos, esto significa que se pueden comprimir conjuntos de datos, acelerar algoritmos de aprendizaje automático y descubrir la estructura subyacente de los datos.

1. ¿Cuáles son las tres matrices producidas por la SVD?

2. ¿Cómo se puede utilizar la SVD para la compresión de datos?

3. ¿Qué función de SciPy se utiliza para la descomposición en valores singulares?

question mark

¿Cuáles son las tres matrices producidas por la SVD?

Selecciona la respuesta correcta

question mark

¿Cómo se puede utilizar la SVD para la compresión de datos?

Selecciona la respuesta correcta

question mark

¿Qué función de SciPy se utiliza para la descomposición en valores singulares?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 5

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 2. Capítulo 5
some-alt