Cálculo de la seudo inversa de Moore-Penrose en Python

Clase 13 de 18Curso de Álgebra Lineal Aplicada para Machine Learning

Resumen

La pseudoinversa de Moore Penrose es una aplicación directa de *singular value decomposition (*SVD), que nos permite resolver en determinados momentos sistemas de ecuaciones lineales con múltiples soluciones.

La matriz pseudoinversa es utilizada cuando en un sistema de ecuaciones lineales, representado por Ax = B, x no tiene inversa. Esta operación es única y existe si se verifican 4 condiciones.

Ejemplo de pseudoinversa de una matriz

En el siguiente ejemplo, verás las 4 condiciones para obtener una fórmula Penrose.

https://i.imgur.com/0QofiWv.png

Cómo calcular la matriz pseudoinversa de Moore Penrose

Para calcularla se siguen los siguientes pasos:

  • Calcular las matrices U, D, y V (matrices SVD) de A.
  • Construir D_pse: una matriz de ceros que tiene igual dimension de A, y que luego se transpone.
  • Reemplazar la submatriz D_pse[: D.shape[0], : D.shape[0]] por np.linalg.inv(np.diag(D))
  • Reconstruir pseudoinversa: A_pse = V.T.dot(D_pse).dot(U.T)

Cómo calcular la pseudoinversa de Moore Penrose en Python

Para calcularla automáticamente por Python: np.linalg.pinv(A)Lo que obtenemos con A_pse es una matriz muy cercana a la inversa. Cercano en el sentido de que minimiza la norma dos de estas distancias. O sea, de estos errores que estamos cometiendo.

A_pse no es conmutativa, es decir, A_pse·A ≠ A·A_pse

Aporte de María José Medina.