So che ci sono pacchetti in R per archiviare efficientemente matrici sparse. C'è anche un modo per memorizzare una matrice di basso grado in modo efficiente? Per esempio:Memorizzare efficientemente una matrice grande ma di basso grado
A <- matrix(rnorm(1e6), nrow=1e5, ncol=1e1)
B <- A %*% t(A)
Ora, B
è troppo grande per memorizzare nella memoria, ma è a basso contenuto di rango. C'è un modo per costruire e memorizzare B
in modo efficiente, in modo tale che alcuni metodi di lettura di base (rowSums
, colSums
, ecc.) Vengano eseguiti al volo, al fine di scambiare cpu o memoria?
Interessante domanda: quali applicazioni avrebbe? (Dove appaiono generalmente le matrici di basso rango?) –
@DavidRobinson: Queste matrici vengono utilizzate, ad esempio, come approssimazioni di matrici di grandi dimensioni (troppo grandi per calcolare, o anche per memorizzare), in alcuni [algoritmi di ottimizzazione] (http://en.wikipedia.org/wiki/Limited-memory_BFGS). –
Se sei disposto ad approssimare B, potresti usare un'approssimazione a bassa dimensione, ad es. utilizzare un SVD e mantenere le prime n dimensioni del SVD? Non è sicuro che sia proprio quello che vuoi, ma potrebbe valere la pena di essere preso in considerazione. –