Open
Description
Hi,
I am encountering the following issue when using CCIPCA:
When I call fit!
repeatedly with the same input vector it can happen that the CCIPCA eigenvectors & -values become NaN.
Minimal Example:
a = [0.027667, 0.0428616, 0.57036, 0.382638, 68.4809, 24.4805, 230.786, 32.9694]
o = OnlineStats.CCIPCA(3, 8; l=3)
fit!(o, a)
display(o.U)
fit!(o,a)
display(o.U)
Leading to output:
8×3 Matrix{Float64}:
0.000113292 0.0 0.0
0.000175511 0.0 0.0
0.00233553 0.0 0.0
0.00156684 0.0 0.0
0.280418 0.0 0.0
0.100244 0.0 0.0
0.945031 0.0 0.0
0.135004 0.0 0.0
8×3 Matrix{Float64}:
-0.000113292 NaN 0.0
-0.000175511 NaN 0.0
-0.00233553 NaN 0.0
-0.00156684 NaN 0.0
-0.280418 NaN 0.0
-0.100244 NaN 0.0
-0.945031 NaN 0.0
-0.135004 NaN 0.0
From my limited experience I can see that the issue occurs when we divide by o.lambda
within the fitting procedure.
Either at
OnlineStats.jl/src/stats/pca.jl
Line 103 in b99b6cc
or
OnlineStats.jl/src/stats/pca.jl
Line 108 in b99b6cc
when the current eigenvalue is
o.lambda[i]=0.0
.
Is this something which is attributable to user error? If so how can I make sure to avoid it in the future?
Metadata
Metadata
Assignees
Labels
No labels