You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In this particular case, the rank-4 absolute error with TSVD is a few percent better than with IncrementalSVD.
39
-
The error of incremental SVD comes from the fact that it works on chunks, and there is a truncation step after each chunk that discards information; see [Brand 2006](#references) Eq 5 for more insight.
44
+
The error of incremental SVD comes from the fact that it works on chunks, and after each chunk any excess components are truncated, resulting in a loss of information.
45
+
See [Brand 2006](#references) Eq 5 for more insight.
40
46
41
-
However, the *real* use-case for IncrementalSVD is in computing incremental updates or handling cases where `X` is too large to fit in memory all at once, and for such applications it handily beats alternatives like random projection + power iteration (e.g., `rsvd` from [RandomizedLinAlg.jl](https://github.com/JuliaLinearAlgebra/RandomizedLinAlg.jl)).
47
+
However, the *real* use-case for IncrementalSVD is in computing incremental updates or handling cases where `X` is too large to fit in memory all at once, and for such applications it handily beats alternatives like random projection + power iteration (e.g., `rsvd` from [RandomizedLinAlg.jl](https://github.com/JuliaLinearAlgebra/RandomizedLinAlg.jl)). See details below.
42
48
43
49
## Incremental updates
44
50
@@ -63,7 +69,11 @@ julia> s
63
69
4.18050301615471
64
70
3.662876466035874
65
71
2.923979120208828
72
+
```
73
+
74
+
For comparison, the true answer is:
66
75
76
+
```julia
67
77
julia> F =svd(X);
68
78
69
79
julia> F.S
@@ -75,6 +85,8 @@ julia> F.S
75
85
1.7956053622541457
76
86
```
77
87
88
+
The singular values computed by `update!` were accurate to 3-5 digits.
89
+
78
90
`isvd` is just a thin wrapper over this basic iterative update.
0 commit comments