Algorithm to extract linearly dependent columns in a large scale [-1,1] matrix ( 10^5 by 10^6)

3 visualizzazioni (ultimi 30 giorni)
I am trying to find an efficient algorithm for extracting linear independent collumns ( an old problem) but on a Very large matrix ( 10^5 rows, 10^6 columns) with all +-1 Real elements.... so , a dense matrix.
these matrcies are so large that I have no hope to put them in memory all at once, and then use the standard QR algorithm (or other real matrix decompositions that I have found) .
I know the choice of spanning collumns are not unique. I just want a subset "Q" of N colums of the Matrix A, such that rank(A) = N = rank(Q)
I have been looking for a clever random algorithm with bounded error.
Cheers
  5 Commenti
Wayne Shanks
Wayne Shanks il 4 Gen 2023
I store these matricies as blocks of binary files, When I load them into memory to process , I convert the [0,1] bts to [-1,1] single floats
I am starting to read some articles on "out of core SVD" algorithms,
Bruno Luong
Bruno Luong il 4 Gen 2023
Modificato: Bruno Luong il 4 Gen 2023
SVD cannot find independent set of columns, QR does.
Do not use Gram Schmidt, it is numerically unstable. Use Housholder, and Q-less QR algorithm with permutation, until the projection is numerically 0.
But still storing R required few hundred Gb. It is doable on HD but it will take very long to compute.

Accedi per commentare.

Risposte (1)

Joss Knight
Joss Knight il 7 Gen 2023
You might consider using distributed arrays on an HPC cluster.

Categorie

Scopri di più su Linear Algebra in Help Center e File Exchange

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by