Bienvenido a Platzi

Bryan Castano

Bryan Castano

student
hace 2 meses

Hola Chicos, Yo os comparto algunas notas y outputs de mi tutot de LinAlg "Gemini" que es genial en su modo "learning".

Si el Eigendecomposition Av = lambda .v es como entender el ADN de una matriz cuadrada, la Descomposición en Valores Singulares (SVD) es como hacerle una radiografía completa a cualquier matriz, sea cuadrada o no.

La SVD establece que cualquier matriz $A$ de dimensiones $m x n$ puede ser factorizada en el producto de tres matrices especiales:

$$A = U \Sigma V^T$$

Donde:

  1. $U$ ($m \times m$): Es una matriz ortogonal ($U^T U = I$). Sus columnas son los vectores singulares izquierdos. Representan una rotación en el espacio de llegada.
  2. $\Sigma$ ($m \times n$): Es una matriz diagonal (no necesariamente cuadrada). Sus elementos en la diagonal son los valores singulares $\sigma_1 > \sigma_2 > ... > 0$. Indican cuánto se estira la matriz en cada dirección.
  3. $V^T$ ($n x n$): Es la transpuesta de otra matriz ortogonal. Sus columnas son los vectores singulares derechos. Representan una rotación inicial en el espacio de partida.
  • Compresión de Datos: Los valores singulares en $\Sigma$ están ordenados por importancia. Si te quedas solo con los primeros $k$ valores (los más grandes), puedes reconstruir una aproximación muy cercana a la original usando mucho menos espacio.
  • PCA (Análisis de Componentes Principales): El PCA, que usas para reducir dimensiones en Machine Learning, es básicamente SVD aplicado a una matriz de datos centrada.
  • Sistemas de Recomendación: Algoritmos como los que usa Netflix para predecir qué película te gustará se basan en SVD para encontrar "factores latentes" entre usuarios y películas.

@Aqui un script de ejempl oque Gemini me ha dado :

import numpy as np import matplotlib.pyplot as plt def svd_compression_demo(): # 1. Crear una matriz de 100x100 con un patrón (nuestra "imagen") # Usamos un producto exterior para crear una matriz de bajo rango x = np.linspace(-5, 5, 100) y = np.linspace(-5, 5, 100) X, Y = np.meshgrid(x, y) A = np.sin(X) + np.cos(Y) # Un patrón complejo # 2. Aplicar SVD # U: Vectores izquierdos, s: Valores singulares, Vt: Vectores derechos U, s, Vt = np.linalg.svd(A) # 3. Reconstrucción con diferentes rangos (k) # k es el número de valores singulares que decidimos mantener ranks = [2, 5, 10, 50] plt.figure(figsize=(12, 8)) # Imagen Original plt.subplot(2, 3, 1) plt.imshow(A, cmap='viridis') plt.title("Original (Rango 100)") plt.axis('off') for i, k in enumerate(ranks): # Reconstrucción: U[:, :k] @ Sigma[:k, :k] @ Vt[:k, :] # En numpy, 's' es un vector, lo convertimos a diagonal A_approx = U[:, :k] @ np.diag(s[:k]) @ Vt[:k, :] plt.subplot(2, 3, i + 2) plt.imshow(A_approx, cmap='viridis') plt.title(f"Reconstrucción con k={k}") plt.axis('off') plt.tight_layout() plt.show() # Mostrar la importancia de los valores singulares plt.figure(figsize=(6, 4)) plt.plot(s, 'ro-', markersize=2) plt.title("Magnitud de los Valores Singulares ($\sigma$)") plt.xlabel("Índice") plt.ylabel("Valor") plt.grid(True) plt.show() if __name__ == "__main__": svd_compression_demo()
  1. La jerarquía de la información: Verás que con solo k=5 o k=10 valores singulares, ya puedes reconocer la forma general del patrón. Esto es porque los primeros valores de $\sigma$ capturan la mayor parte de la varianza (energía) del sistema.
  2. Reducción de ruido: En Machine Learning, a menudo los valores singulares más pequeños representan "ruido". Al descartarlos (Truncated SVD), no solo comprimes, sino que limpias tus datos.

recuerda siempre la conexión sagrada entre SVD y los Eigenvalores:

  • Los Valores Singulares ($\sigma_i$) son las raíces cuadradas de los eigenvalores de $A^T A$.
  • Los Vectores Singulares Derechos ($V$) son los eigenvectores de $A^T A$.
  • Los Vectores Singulares Izquierdos ($U$) son los eigenvectores de $AA^T$.

Much ode esto ha sido expliicado por el profesor durante esgte curso, por tanto si Gemini y @Daniel dicen l omismo es por la plena real.

No hay respuestas
Curso Avanzado de Álgebra Lineal y Machine Learning: PCA y SVD

Curso Avanzado de Álgebra Lineal y Machine Learning: PCA y SVD

Domina técnicas avanzadas de descomposición matricial para IA. Implementa PCA y SVD desde cero con Python y NumPy. Aprende a combatir la maldición de la dimensionalidad, interpreta la matriz de covarianza y optimiza modelos de Machine Learning. Aplica la ecuación característica con NumPy, estudia eigenvectores y descubre por qué SVD es clave en redes neuronales.

Curso Avanzado de Álgebra Lineal y Machine Learning: PCA y SVD

Curso Avanzado de Álgebra Lineal y Machine Learning: PCA y SVD

Domina técnicas avanzadas de descomposición matricial para IA. Implementa PCA y SVD desde cero con Python y NumPy. Aprende a combatir la maldición de la dimensionalidad, interpreta la matriz de covarianza y optimiza modelos de Machine Learning. Aplica la ecuación característica con NumPy, estudia eigenvectores y descubre por qué SVD es clave en redes neuronales.