Anteriormente pregunté esto en StackOverflow, pero parece que podría ser más apropiado aquí, dado que no obtuvo ninguna respuesta en SO. Es una especie de intersección entre la estadística y la programación.
Necesito escribir un código para hacer PCA (Análisis de Componentes Principales). He navegado por los algoritmos conocidos y he implementado este que, por lo que sé, es equivalente al algoritmo NIPALS. Funciona bien para encontrar los primeros 2-3 componentes principales, pero luego parece volverse muy lento para converger (del orden de cientos a miles de iteraciones). Aquí están los detalles de lo que necesito:
-
El algoritmo debe ser eficiente cuando se trata de un gran número de características (del orden de 10.000 a 20.000) y de tamaños de muestra del orden de unos pocos cientos.
-
Debe ser razonablemente implementable sin una biblioteca de álgebra lineal/matriz decente, ya que el lenguaje de destino es D, que aún no tiene una, e incluso si la tuviera, preferiría no añadirla como dependencia al proyecto en cuestión.
Como nota al margen, en el mismo conjunto de datos R parece encontrar todos los componentes principales muy rápidamente, pero utiliza la descomposición del valor singular, que no es algo que quiera codificar yo mismo.