Transformaciones Lineales con Matrices en Python: Visualización y Análisis
Clase 2 de 18 • Curso de Álgebra Lineal Aplicada para Machine Learning
Resumen
¿Cómo entendemos las matrices como transformaciones lineales?
Las matrices pueden entenderse como transformaciones lineales que, al aplicarse a un espacio o un vector, generan una transformación. Cuando aplicamos una matriz, podemos afectar a un vector modificando su tamaño o incluso rotándolo. En el mundo de la programación, podemos llevar esto a la práctica utilizando Python y librerías como NumPy y Matplotlib para representar gráficamente estos cambios.
¿Cómo configuramos nuestro entorno en Python para visualizaciones?
Para empezar, necesitamos importar las librerías necesarias. Aquí va un pequeño fragmento de código en Python que nos permitirá ver los gráficos debajo de cada celda de nuestro notebook:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
Posteriormente, definimos nuestras matrices y vectores usando numpy
.
¿Cómo definimos y aplicamos una transformación con matrices?
Supongamos que tenemos la siguiente matriz:
A = np.array([[-1, 3], [2, -2]])
Queremos investigar qué transformación genera esta matriz al aplicarla al siguiente vector:
v = np.array([2, 1])
La transformación de un vector v
usando una matriz A
se realiza a través del producto interno de la matriz y el vector. Pero antes de eso, definamos una función para graficar los vectores.
¿Cómo graficamos vectores en Python?
Es útil tener una función versátil para graficar múltiples vectores. Aquí hay una base de cómo podemos definir y utilizar esta función:
def graficar_vectores(vectores, colores, alpha=1):
plt.figure()
plt.axvline(x=0, color='grey', lw=1)
plt.axhline(y=0, color='grey', lw=1)
for i in range(len(vectores)):
x = np.concatenate([[0, 0], vectores[i]])
plt.quiver(*x[::2], *x[1::2], angles='xy', scale_units='xy', scale=1, color=colores[i], alpha=alpha)
plt.xlim(-3, 3)
plt.ylim(-3, 3)
plt.show()
v_flaten = v.flatten()
graficar_vectores([v_flaten], ['blue'])
Esta función ayuda a visualizar cómo han cambiado los vectores al ser transformados por la matriz. Los ejes cruzan en x=0
y el color de las líneas es gris
.
¿Cómo se transforman los vectores utilizando matrices?
Cuando aplicamos la matriz A
al vector v
, podemos ver el cambio que se produce. Primero, realizamos el cálculo del producto interno:
v_transformado = A.dot(v)
graficar_vectores([v.flatten(), v_transformado.flatten()], ['blue', 'orange'])
Aquí, graficamos el vector original v
junto con el vector v_transformado
para observar la transformación visualmente, comparando sus posiciones y direcciones.
¿Por qué es importante entender estas transformaciones en Aprendizaje Automático?
Las transformaciones de matrices son fundamentales en el aprendizaje automático, especialmente cuando trabajamos con imágenes o datos que tienen representaciones matriciales. Las matrices permiten transformar estos datos de manera que pueden ser procesados más eficientemente por algoritmos de Deep Learning o Machine Learning.
Entender las representaciones de vectores y matrices y cómo podemos alargar, rotar o modificar su escala es clave para manipular datos estructurados como imágenes, en las cuales cada pixel puede ser parte de una matriz mayor. Cuando llevamos matrices a vectores, este proceso se llama "flatten" y es crucial para el tratamiento de datos en modelos computacionales.
¿Qué papel juegan los determinantes en estas transformaciones?
El determinante de una matriz nos ofrece información valiosa sobre la transformación. Un determinante negativo (como el -4
en nuestro ejemplo) puede indicarnos que la transformación involucra una inversión o un giro. Por otro lado, si las normas de los vectores antes y después de la transformación se mantienen iguales, puede señalar que hay vectores en el espacio que no cambian su longitud.
determinante = np.linalg.det(A)
print(f"Determinante de la matriz A: {determinante}")
En esta exploración, continuamos profundizando en cómo las operaciones de matriz y producto escalar nos ayudan a dar forma a datos y patrones, sentando las bases para descubrimientos más intrincados en el vasto campo del análisis de datos y Machine Learning.