Wiem, że istnieją pakiety w R do efektywnego przechowywania macierzy rzadkich. Czy istnieje również sposób na wydajne przechowywanie matrycy niskiej rangi? Na przykład:Przechowywanie dużej, ale niskiej rangi macierzy wydajnie
A <- matrix(rnorm(1e6), nrow=1e5, ncol=1e1)
B <- A %*% t(A)
Teraz B
jest zbyt duża, aby zapisać w pamięci, ale ma niską rangę. Czy istnieje sposób na wydajne konstruowanie i przechowywanie w taki sposób, że niektóre podstawowe metody odczytu (rowSums
, colSums
, itp.) Są wykonywane w locie, w celu wymiany na cpu lub pamięć?
Interesujące pytanie - jakie to ma zastosowania? (Gdzie zazwyczaj pojawiają się matryce niskopoziomowe?) –
@DavidRobinson: Te macierze są używane, na przykład, jako przybliżenia dużych gęstych macierzy (zbyt dużych do obliczenia lub nawet do przechowywania), w niektórych [algorytmy optymalizacyjne] (http://en.wikipedia.org/wiki/Limited-memory_BFGS). –
Jeśli chcesz przybliżyć B, możesz użyć przybliżenia niskowymiarowego, np. użyć SVD i zachować pierwsze n wymi SVD? Nie jestem pewien, czy to jest dokładnie to, czego chcesz, ale może być warte rozważenia. –