Una aproximación matricial CUR es un conjunto de tres matrices que, al multiplicarse entre sí, se aproximan estrechamente a una matriz dada. [1] [2] [3] Una aproximación CUR se puede utilizar de la misma manera que la aproximación de bajo rango de la descomposición en valores singulares (SVD). Las aproximaciones CUR son menos precisas que la SVD, pero ofrecen dos ventajas clave, ambas derivadas del hecho de que las filas y columnas provienen de la matriz original (en lugar de vectores singulares izquierdo y derecho):
Formalmente, una aproximación matricial CUR de una matriz A son tres matrices C , U y R tales que C está formada por columnas de A , R está formada por filas de A y que el producto CUR se aproxima estrechamente a A . Por lo general, se selecciona que la CUR sea una aproximación de rango - k , lo que significa que C contiene k columnas de A , R contiene k filas de A y U es una matriz k por k . Hay muchas aproximaciones matriciales CUR posibles y muchas aproximaciones matriciales CUR para un rango dado.
La aproximación matricial CUR se utiliza a menudo [ cita requerida ] en lugar de la aproximación de bajo rango de la SVD en el análisis de componentes principales . La CUR es menos precisa, pero las columnas de la matriz C se toman de A y las filas de R se toman de A. En PCA, cada columna de A contiene una muestra de datos; por lo tanto, la matriz C está formada por un subconjunto de muestras de datos. Esto es mucho más fácil de interpretar que los vectores singulares izquierdos de la SVD, que representan los datos en un espacio rotado. De manera similar, la matriz R está formada por un subconjunto de variables medidas para cada muestra de datos. Esto es más fácil de comprender que los vectores singulares derechos de la SVD, que son otras rotaciones de los datos en el espacio.
Hamm [4] y Aldroubi et al. [5] describen el siguiente teorema, que describe una descomposición CUR de una matriz con rango :
Teorema: Consideremos los índices de fila y columna con . Denotemos submatrices y . Si rank( ) = rank( ), entonces , donde denota la pseudoinversa de Moore–Penrose .
En otras palabras, si tiene rango bajo, podemos tomar una submatriz del mismo rango, junto con algunas filas y columnas de y usarlas para reconstruir .
La descomposición CURT de tensor [6] es una generalización de la descomposición CUR de matriz. Formalmente, una aproximación de tensor CURT de un tensor A son tres matrices y un tensor (central) C , R , T y U tales que C está formado por columnas de A , R está formado por filas de A , T está formado por tubos de A y que el producto U(C,R,T) (donde la -ésima entrada de este es ) se aproxima estrechamente a A . Por lo general, se selecciona que la CURT sea una aproximación de rango - k , lo que significa que C contiene k columnas de A , R contiene k filas de A , T contiene tubos de A y U es un tensor (central) k -por- k -por- k .
La aproximación de la matriz CUR no es única y existen múltiples algoritmos para calcularla. Uno de ellos es ALGORITHMCUR. [1]
El algoritmo "Linear Time CUR" [7] simplemente selecciona J mediante un muestreo aleatorio de columnas (con reemplazo) con probabilidad proporcional a las normas de columna al cuadrado, ; y de manera similar, un muestreo de I proporcional a las normas de fila al cuadrado, . Los autores muestran que tomando y donde , el algoritmo alcanza el límite de error de Frobenius , donde es la aproximación óptima de rango k .