¿Cuáles son las razones para preferir la descomposición de valores propios a la descomposición de valores singulares para calcular numéricamente el pseudoinverso de una matriz real simétrica? En el caso de que se quiera formar el pseudoinverso de una matriz de covarianza y también se tenga acceso a la matriz de datos original, ¿tiene más sentido utilizar la SVD?
Utilizando SciPy como ejemplo, la documentación de scipy.linalg.pinvh
afirma
Calcular el pseudoinverso (Moore-Penrose) de una matriz hermitiana.
Calcular la inversa generalizada de una matriz hermitiana o simétrica real utilizando su descomposición de valores propios e incluyendo todos los valores propios con valor absoluto "grande".
¿Por qué preferimos la descomposición de valores propios en este caso?
Supongamos que en lugar de calcular el pseudoinverso de una matriz arbitraria, se parte de una $m \times n$ matriz $X$ y queremos calcular el pseudoinverso de su matriz de covarianza $C = XX^*$ . Parece que hay dos enfoques obvios y estrechamente relacionados.
Desde $C$ es real y simétrica, puede ser diagonalizada ortogonalmente: $C = Q \Lambda Q^T$ , donde $Q$ contiene vectores propios, $\Lambda$ contiene valores propios, y $QQ^T = I$ . Podemos obtener el pseudoinverso de $C$ del pseudoinverso de $\Lambda$ como $C^+ = Q \Lambda^+ Q^T$ .
Como alternativa, se puede partir de la descomposición del valor singular de $X$ como $X = U \Sigma V^*$ . Entonces $C = U \Sigma \Sigma^* U^*$ y podemos obtener el pseudoinverso de nuevo a partir del pseudoinverso de $\Sigma \Sigma^*$ .
Pensé que el cálculo de los valores singulares era siempre un problema bien condicionado, y que esto significaría que la SVD sería un mejor enfoque para calcular el pseudoinverso de una matriz de covarianza. ¿Es eso cierto? ¿Qué otros problemas podría estar pasando por alto?