En un proyecto de software en el que estoy trabajando, ciertos cálculos son mucho más fáciles para matrices densas de bajo rango. Algunas instancias de problemas involucran matrices densas de bajo rango, pero me las dan en su totalidad, en lugar de como factores, por lo que tendré que verificar el rango y factorizar la matriz si quiero aprovechar la estructura de bajo rango. .
Las matrices en cuestión son típicamente completamente o casi completamente densas, con n que van desde cien hasta unos pocos miles. Si una matriz tiene un rango bajo (digamos menos de 5 a 10), entonces vale la pena calcular la SVD y usarla para formar una factorización de bajo rango. Sin embargo, si la matriz no es de bajo rango, entonces el esfuerzo se desperdiciaría.
Por lo tanto, me gustaría encontrar una forma rápida y razonablemente confiable de determinar si el rango es bajo o no antes de invertir el esfuerzo para hacer una factorización SVD completa. Si en algún momento queda claro que el rango está por encima del límite, el proceso puede detenerse de inmediato. Si el procedimiento declara por error que la matriz es de rango bajo cuando no lo es, esto no es un gran problema, ya que todavía estaría haciendo una SVD completa para confirmar el rango bajo y encontrar una factorización de rango bajo.
Las opciones que he considerado incluyen un rango que revela la factorización LU o QR seguido de una SVD completa como verificación. ¿Hay otros enfoques que debería considerar?
fuente
El problema, por supuesto, es que calcular el rango verdadero (por ejemplo, mediante una descomposición QR) no es realmente más barato que calcular una representación de bajo rango de la matriz.
Lo mejor que probablemente puede hacer es usar un algoritmo aleatorio para encontrar aproximaciones de bajo rango. Estos pueden, al menos en teoría, ser significativamente más rápidos que trabajar en toda la matriz porque, en esencia, solo calculan descomposiciones para proyecciones de la matriz en subespacios aleatorios.
Si eso vale la pena para una matriz de tamaño puede ser una buena pregunta, pero si sus problemas realmente se vuelven grandes, sospecharía que vale la pena.100 × 100
fuente
Otro enfoque que vale la pena intentar es utilizar la aproximación cruzada adaptativa (ACA). Es un algoritmo bastante popular que tiene muchas implementaciones disponibles en línea. Para la referencia, puede ver el documento original:
ACA y sus variaciones (por ejemplo, ACA +, HCA de aproximación cruzada híbrida) se pueden usar en diferentes escenarios. Usted, que ya tiene calculada toda la matriz densa, es uno de los favorables, ya que podrá calcular los residuos exactamente si es necesario.
Si los residuos heurísticos (ver el algoritmo) son suficientes, creo que su complejidad será , dondeNO (Nr ) norte r ( ϵ ) r ϵ O ( N2r )
fuente
fuente