疎な行列を効率的に格納するためのRのパッケージがあることは知っています。低ランクの行列を効率的に格納する方法もありますか?たとえば:大きいが低いランクの行列を効率的に格納する
A <- matrix(rnorm(1e6), nrow=1e5, ncol=1e1)
B <- A %*% t(A)
は今、B
は、メモリに格納するには余りにも大きいですが、それは、ランクが低いです。効率的な方法でB
を構築して保存する方法はありますか?そのため、CPUやメモリを交換するために、いくつかの基本的な読み取り方法(rowSums
、colSums
など)が実行されていますか?私は、これは大きな行列のためになる方法を効率的に知るために経験を逃すものの、ここで
興味深い質問 - アプリケーションにはどのようなものがありますか? –
@DavidRobinson:これらの行列は、いくつかの[最適化アルゴリズム](http://www.adobe.com)で、(計算には大きすぎる、または格納するには大きすぎる)密行列の近似として使用されます。 /en.wikipedia.org/wiki/Limited-memory_BFGS)。 –
Bを近似したい場合は、低次元の近似を使用できますか? SVDを使用し、SVDの最初のn次元を維持しますか? これはあなたが欲しいものですが、考慮する価値があるかもしれません。 –