¿Cuáles son los algoritmos comunes para calcular / estimar eficientemente la covarianza de la muestra?

Lo que tiene es una matriz de diseño único [math] M \ in \ mathbb {R} ^ {n \ times p} [/ math]. La construcción de la matriz de gramo [matemática] A = M ^ {T} M [/ matemática] estará dominada por la complejidad de multiplicación de la matriz que es [matemática] O (p ^ {2} n) [/ matemática].

La SVD para la matriz [matemática] M [/ matemática] con [matemática] p \ leq n [/ matemática] se puede calcular en [matemática] O (p ^ {2} n) [/ matemática]. Es posible que pueda hacerlo un poco mejor si considera una aproximación de bajo rango, que puede brindarle un rendimiento subcúbico. Luego deberá calcular la matriz de gramo utilizando estos componentes, que es [math] O (nrp) [/ math], donde [math] r [/ math] denota el primer [math] r [/ math] [math] \ sigma_ {i} [/ math] valores singulares. Esto también se conoce como un SVD compacto.

Sin embargo, un enfoque aún más fácil y menos propenso a errores sería considerar el muestreo ya que su cuello de botella es [matemático] n [/ matemático] En algún momento aprenderá / encontrará varias vulnerabilidades, que no detallaré aquí porque son muy problemáticas eso puede aumentar el tiempo de ejecución, pero vendrá a expensas de la pérdida de precisión. Ten cuidado con esto.

No estoy seguro de si la estimación de matrices de covarianza podría ayudar.

Realmente no conozco ningún método. Yo diría que una complejidad O (n ^ 2) no es tan mala en comparación con muchos algoritmos de matriz SVD es O (n ^ 3). Pensé en una técnica de reducción de dimensiones como el análisis de componentes principales pero esto requiere calcular la covarianza como primer paso para que eso no ayude.