I want to automatically find the "knee" point of the eigenvalue plot. I.e. I have a vector of eigenvalues (sorted from highest to lowest) and I want some heuristic to find the "knee" point.
Is there some heuristic for doing that
I've found the two following proposals so far.
Setting a threshold, say 0.99, or 0.95 and keep m of n eigenvalues when T(m-1) < 0.99 *T(n) <= T(m) where T(m) = sum(i=1:m){lambda(i)}
The knee is located at a point where the radius of curvature is a local minimum. For a curve y = f(x) the curvature is k = y''/(1+(y')^2)^(3/2). Just replace the derivatives with finite differences.
What do you think of these two proposals? How can I implement the second one? I don't understand how to replace the derivatives with the differences