Eigenvectores y eigenvalores con NumPy

Resumen

Los eigenvectores son los ejes fundamentales de cualquier transformación lineal y entender cómo funcionan junto a sus eigenvalores es clave para dominar técnicas como PCA en machine learning. Aquí verás la intuición geométrica, el cálculo con NumPy y por qué importan al analizar datos.

¿Qué define a un eigenvector y a un eigenvalor?

La relación que conecta a un eigenvector V con su eigenvalor lambda para una matriz A se expresa así: A·V = lambda·V. El lado izquierdo representa transformar el vector V aplicando la matriz A, y el lado derecho es ese mismo vector escalado por un número.

Cuando aplicas la transformación A a uno de sus eigenvectores, el resultado cae sobre la misma línea que el original. La matriz lo estira, lo encoge o lo invierte, pero nunca lo rota [00:32].

¿Qué es un eigenvector? Es un vector que, al ser transformado por una matriz, conserva su dirección original. Solo cambia su longitud o su sentido, nunca su línea.

¿Cómo interpretar el valor de lambda?

El eigenvalor lambda es el factor de escala. Tres casos te ayudan a leerlo de un vistazo:

  • Si lambda es 2, el eigenvector duplica su longitud.
  • Si lambda es 0.5, el eigenvector se encoge a la mitad.
  • Si lambda es -1, el eigenvector invierte su sentido pero permanece en la misma línea.

Esto significa que el signo y la magnitud de lambda te cuentan toda la historia de lo que la matriz le hace al vector [01:18].

¿Cómo calcular eigenvectores y eigenvalores con NumPy?

En Google Colab, después de importar NumPy y Matplotlib, puedes definir una matriz de transformación y obtener sus eigenelementos en una sola línea. Por ejemplo, con la matriz A igual a [[3,1],[1,2]] [01:48].

La función clave es np.linalg.eig(A), que devuelve dos cosas:

  • Un array con los eigenvalores, máximo dos para una matriz 2x2.
  • Una matriz donde cada columna es un eigenvector correspondiente.

python import numpy as np

A = np.array([[3, 1], [1, 2]]) eigenvalores, eigenvectores = np.linalg.eig(A)

print(f"eigenvectores: {eigenvectores}") print(f"eigenvalores: {eigenvalores}")

¿Cómo comprobar la ecuación A·V = lambda·V?

Para validar que el resultado cumple la teoría, extrae el primer eigenvector y su lambda correspondiente, y compara ambos lados de la ecuación [03:24].

python V1 = eigenvectores[:, 0] lambda1 = eigenvalores[0]

A_V1 = A @ V1 lambda1_V1 = lambda1 * V1

print(f"AV1: {A_V1}") print(f"lambda*V1: {lambda1_V1}")

Al correrlo, ambos resultados son idénticos: aproximadamente [3.07, 1.90]. El eigenvector fue escalado por un factor de 3.61, el primer eigenvalor, pero permanece en su mismo espacio generado tras la transformación [04:30].

¿Cómo visualizar un eigenvector y su transformación?

Graficar ayuda a internalizar la idea. Con plt.quiver puedes dibujar el vector original y su versión escalada partiendo del origen.

python import matplotlib.pyplot as plt

plt.figure(figsize=(8, 8)) plt.quiver(0, 0, V1[0], V1[1], angles='xy', scale_units='xy', scale=1, color='blue', label='eigenvector original') plt.quiver(0, 0, A_V1[0], A_V1[1], angles='xy', scale_units='xy', scale=1, color='red', label='eigenvector escalado') plt.xlim(0, 4) plt.ylim(0, 4) plt.title('Un eigenvector y su transformación') plt.legend() plt.grid(True) plt.show()

La flecha azul es el vector original y la roja, su versión transformada. Si reemplazas A_V1 por lambda1 * V1, el gráfico es idéntico, lo que confirma visualmente que estamos frente a un eigenvector de la matriz [05:42].

¿Por qué los eigenvectores importan en machine learning?

Aquí viene lo interesante. En machine learning no analizamos cualquier matriz, sino una muy especial: la matriz de covarianza.

  • Los eigenvectores de la matriz de covarianza señalan las direcciones de máxima varianza en tus datos.
  • Los eigenvalores te dicen cuánta información hay en cada una de esas direcciones.
  • Dominar este concepto es el primer paso para aplicar PCA, el análisis de componentes principales.

¿Para qué sirven los eigenvectores en PCA? Indican los ejes donde tus datos varían más. PCA los usa para reducir dimensiones conservando la mayor cantidad de información posible.

Reto: ¿qué pasa si lambda es negativo?

Piensa en esto y experimenta: si un eigenvalor lambda fuera negativo, ¿qué le haría la matriz a su eigenvector correspondiente? Descríbelo en una frase, crea una matriz 2x2 que tenga un eigenvalor negativo, grafícala y comparte tus resultados en los comentarios.