-
Notifications
You must be signed in to change notification settings - Fork 2
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
JOSS review #21
Comments
Code
|
Documentation
MathBregman divergences
I'm not sure I understand. Isn't this just the gradient?
How do
Why is that the case? EPCA objectives
The hyperparameter
You probably mean
It would be nice to add a table summing up how specific versions like ConstructorsGamma
Why is the default upper bound negative? Wouldn't API documentation
This is not very clear to an average user, even to one familiar with autodiff. |
Thank you again for all the incredibly detailed feedback @gdalle! Working on addressing the feedback as I go.
|
Answering these questions, as I have time. Will continue to update this post as I answer more questions.
Agree to all the above, working on these.
No. Besides traditional PCA, there are no other EPCA implementations in Julia, so not sure if benchmarking would make sense for most of the distributions. That said, I did do some testing with MultivariateStats.jl's implementation of traditional PCA which is faster than our implementation of Gaussian EPCA. I haven't looked at their source code, but I suspect it's because they use the closed form solution for PCA whereas we use the same general iterative optimization procedure for Gaussian EPCA that we use for all EPCA objectives. I suspect it would be very hard (and not entirely the package's focus) to implement a faster version of PCA than MultivariateStats.jl's.
I did some crude benchmarking using
There are in fact many ways to derive the EPCA objectives, more than the 7 ways I listed in the documentation. The 4 I ended up picking where the ones that I believed would be most useful and efficient in practice. Let me know if this explanation makes sense. Happy to clarify.
Agree, looking into this. Will try to add a test for this. Also saw your previous comment on changing |
Fair enough.
That is rather surprising. I think it might have been tied to the way you compute gradients or Hessians. It is definitely something I can help with if you want to collaborate, but it is not a barrier to paper acceptance by any stretch.
Maybe you could add a summary in the docs of which construction schemes (among the 7 you list) are fast and which are slightly slower? |
@gdalle, thanks again for all the thorough feedback! I've just finished responding to the bullets. |
Regarding the README test: this is a great idea, but the snippets currently use Regarding codecov, I don't have the admin privileges in the SISL GitHub org needed to set up codecov. |
Regardless of whether the README is tested during CI, it seems weird to put code in a code example that people can't run. Can you maybe replace
It's a shame, codecov is very useful to figure out if some parts of your code are untested. Can you ask one of the admins to set it up. Since we don't have codecov yet, I looked at the tests to understand what they cover. Why do you run a full test on some distributions and only a smoke test on others? |
I don't think you answered any of my remarks on the documentation? |
Here's the cleaned up documentation: MathBregman Divergences
EPCA Objectives
Gamma Constructor
API Documentation
|
Was able to add a codecov badge!
This is a very insightful question and it was the largest roadblock while developing the package. The reason that not all distributions are tested under all objectives is b/c of domain errors. Some distributions that have objective functions with restricted domains are unfeasible/unstable to optimize under certain specifications, so we don't test every specification. However, we still perform a baseline sanity test |
@gdalle, I've also just pushed another update to improve the codecov :) was a very good idea to set it up! |
@gdalle, I added a note to the README that should hopefully clear this up. I don't want to replace |
Thanks for the changes, I'm satisfied with those and will close the issue |
Hi, and congrats on your JOSS submission! I'm one of your reviewers and I'll be writing my remarks below as the review progresses. You can find my checklist here.
Paper
ExpFamilyPCA.jl
delivers speed"?fit!
,compress
anddecompress
work with.The text was updated successfully, but these errors were encountered: