-
-
Notifications
You must be signed in to change notification settings - Fork 555
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
Add decomposition methods OnlineSVD, OnlinePCA, OnlineDMD/wC + Hankelizer #1509
base: main
Are you sure you want to change the base?
Conversation
…eig + FIX: exponential w in learn many + MINOR: robustness
… ADD: score attribute
Standardization of input shapes
: minor issues
…f OnlineDMDwC + TEST: OnlineDMDwC
Check out this pull request on See visual diffs & provide feedback on Jupyter Notebooks. Powered by ReviewNB |
Hello @MaxHalford and @hoanganhngo610, 👋 I believe the methods are ready for benchmarking. The results are published in this notebook. In the plot I combine two checks, performance w.r.t. number of features and delay imposed by conversion from pd.DataFrame (dict) to np.array used in the core. Mean absolute number of processed samples per second is provided here (for n features in range(3,20) as it remains pretty stable):
The results in the notebook indicate that using pd.DataFrame slows down OnlinePCA, which is the fastest decomposition implementation, by up to 14%. However, I believe your concerns are likely related to the fact that the core of the decomposition methods works with np.arrays, correct? What are your thoughts on the performance and adequacy of the evaluation? Thanks for your time 🙏 |
Hello @MaxHalford, @hoanganhngo610, and everyone 👋,
In #1366, @MaxHalford showed interest in implementation of OnlinePCA and OnlineSVD methods in river.
Given my current project involvement with online decomposition methods, I believe the community could benefit from having access to these methods and their maintenance over time. Additionally, I am particularly interested in DMD, which combines the advantages of PCA and FFT. Hence, I propose the introduction of three new methods as part of the new decomposition module:
decomposition.OnlineSVD
implemented based on Brand, M. (2006) (proposed by @MaxHalford in issue) with some considerations on re-orthogonalization. Since it is required quite often, compromising computation speed, it could be interesting to align with Zhang, Y. (2022) (I made some effort to implement but I'm yet to expore validity and possibility to implementrevert
in similar vein).decomposition.OnlinePCA
implemented based on Eftekhari, A. (2019) (proposed by @MaxHalford in issue), as it is currently state-of-the-art with all the proofs and guarantees. Would be happy to validate together if all considerations are handled in proposed OnlinePCA.decomposition.OnlineDMD
implemented based on Zhang, H. 2019. It can operate as MiniBatchTransformer, MiniBatchRegressor (sort of), and works with Rolling so I would need some help figuring out how we'd like to classify it (maybe new base class Decomposer.Additionally, I propose
preprocessing.Hankelizer
, which could be beneficial for various regressors and particularly useful for enhancing feature space by introducing time-delayed embedding.I've tried to include all necessary tests. However, I need to investigate why re-orthogonalization in OnlineSVD yields significantly different values when tested on various operating systems (locally, all tests pass).
Looking forward for your comments and revisions. 😌