Álgebra lineal: ¿Cuál es la mejor manera de calcular vectores propios para una matriz grande (~ 6000 x 6000)?

Espero que alguien pueda proporcionar una mejor respuesta que esta, pero aquí hay un comienzo:

  • La forma estándar de resolver problemas de álgebra lineal es usar una biblioteca llamada LAPACK (http://www.netlib.org/lapack/)
  • Existe una versión de las rutinas LAPACK específicamente diseñadas para el procesamiento paralelo en múltiples computadoras: ScaLAPACK (http://www.netlib.org/scalapack/).
  • Aquí hay una descripción de cómo podría usar algo como ScaLAPACK en Amazon EC2: http://www.slideshare.net/pskomo… (no es terriblemente satisfactorio, pero es lo mejor que pude encontrar)

Hay rutinas específicas disponibles para varios tipos de matrices (simétricas, hermitianas, dispersas, etc.) que se ejecutan mucho más rápido que las rutinas generales, por lo que cuanto más sepa sobre su matriz, mejor.

Si tiene curiosidad sobre los cálculos de álgebra lineal en general, y quiere tener una idea de lo que realmente está sucediendo en las diversas rutinas que utilizará, le recomiendo leer Recetas numéricas – http://www.nr.com/ – a la versión anterior gratuita (que está bien ya que realmente no usará su código) está disponible en http://www.nrbook.com/a/bookcpdf…

6000 × 6000 dobles es menos de 400 MB, e incluso los algoritmos directos N ^ 3 le darán respuestas en un solo cuadro en un período de tiempo razonable. Yo diría que pruebe LAPACK y vea cómo funciona sin la informática distribuida. Diablos, hacerlo en R incluso podría funcionar (y sería aún más fácil).

Lapack es un solucionador denso
Si su matriz es escasa, puede aplicar un solucionador escaso (es decir, Lanczos o un Lanczos preacondicionado). Pruebe SVDLIBC o un contenedor de Python para este o un método relacionado:

http://tedlab.mit.edu/~dr/SVDLIBC/

http://pypi.python.org/pypi/spar

si quieres ir a lo grande, olvida Mahout (¿es una broma, en serio?
Si ejecuta un solucionador de Lanczos, use preacondicionamiento.
¡Esto fue resuelto / inventado por los químicos cuánticos en los años 70!

ER Davidson.
El cálculo iterativo de algunos de los valores propios más bajos y los vectores propios correspondientes de grandes matrices simétricas reales.
J. Comput. Phys. 17: 87-94, 1975.