-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Time-lagged slow feature analysis #5
Comments
May I ask how "time-lagged" SFA is specified? Is there a paper or chapter about it? What do you hope to achieve by "time-lagged" SFA? That said, it is interesting that you use SVD on the data matrix (rather than on the covariance). I haven't seen such an approach to SFA before, however I am not sure if it is beneficial. SVD is dominated by the smaller dimension, the dimension of the data in your case. But the length of the training phase would participate as a linear cost factor AFAIK (typically length >> data dim). That's of course similar to the computation of the covariance matrix in usual SFA, so it should not differ much in cost. Your variant would probably not permit data processing in chunks. Also I do not see how you accomplish sphering of the input signal. |
Thanks @Stewori . Not a SFA expert but here is my thinking:
|
C(tau) in the linked article is an auto correlation matrix rather than the covariance matrix of the derivative, which SFA uses. I.e. <x(t) x(t-1)^T> (TICA) rather than <(x(t)-x(t-1)) (x(t)-x(t-1))^T> (SFA). Yes, there is the relation (x(t)-x(t-1)) (x(t)-x(t-1))^T = x(t)x(t)^T - x(t)-x(t-1)^T - x(t-1)x(t)^T + x(t-1)x(t-1)^T, so auto correlation matrices in a way do participate in SFA. However, I doubt that relation can be exploited for implementing TICA on top of SFA. Even if it could, that would be a cumbersome TICA implementation, probably with hampered efficiency. Doesn't there exist a TICA node for scikits readily? Otherwise I would recommend to leverage a proper TICA implementation and use a wrapper node if integration with scikit is strictly required. Or you just check out SFA instead of TICA; it is not so bad for dimensionality reduction as it stands :) |
Hey sbhakat, (and hey Stewori - since I already typed most of this answer, I'm gonna send it now anyway. It overlaps with parts of your answer you sent just now :) ) if I see this correctly, tICA is similar to PCA, only that it calculates the covariance matrix between features and their time-lagged versions. So instead of finding decorrelated dimensions with largest variance (PCA) it finds decorrelated dimensions with the largest covariance between original and time-lagged version of the feature combination. In other words, it finds orthogonal feature combinations that have the largest autocorrelation for a specified lag. This idea is somewhat unrelated to SFA, which simply tries to find features combinations that vary the most slowly. It does this by "performing PCA" on temporal differences but looking for smallest rather than largest variance. SFA in itself has no concept of autocorrelation, but imagine a feature that changes periodically and very slowly, and a feature that changes periodically and quickly. The autocorrelation of the slow feature will be large for big time lags ( Introducing This is just my personal understanding however. Regardless, if you want to try using SFA with a lag, this is the line where the difference is calculated for the standard |
Having given it some more thought, it occurs to me that SFA (discrete SFA that approximates SFA wants to find Since If I am not mistaken, the former is the SFA objective and the latter is the tICA objective. If that's correct, then yes, you should be able to use SFA instead of tICA and vice versa (for tau=1). I am not the maintainer of this node, but I recommend to make tau a proper parameter. That is a trivial adjustment and would permit advertising the node additionally as tICA node. |
Hi @Stewori you are right. According to the paper http://redwood.psych.cornell.edu/discussion/papers/2006_SFA_ICA_blaschke_berkes_wiskott.pdf That's not true (at least that's what I understood from the paper) if |
I am trying to implement a demo version of time-lagged slow feature analysis:
Two questions:
Any help will be highly appreciated!
The text was updated successfully, but these errors were encountered: