Manifolds.jl
Manifolds.jl copied to clipboard
geomstats
I've just found this nice package for geometric statistics: https://github.com/geomstats/geomstats . It would be nice to look at how they do things, in particular there are a few things we don't have:
- [ ] discretized curves (will be in FunManifolds once it's ported),
- [x] general linear group,
- [x] landmarks space (I have experimented with it some time ago),
- [x] connections (would it give us anything since we already have custom metrics and vector transports? I couldn't find any concrete connections in their repository. Maybe that's for cases where we want exponential or logarithmic maps induced by a connection that's not Levi-Civita for any metric?)
- [x] exponential barycenter
- [ ] a few variants of K-means and AHC clustering (see JuliaManifolds/ManifoldML.jl#7)
- [x] kNN classifier (see JuliaManifolds/ManifoldML.jl#7)
- [x] tangent PCA (I have experimented and it would be very simple here with Riemannian mean and bases already worked out) (see JuliaManifolds/ManifoldML.jl#7)
- [ ] some visualizations
- [ ] better support for AD (at least at the first glance)
- [ ] k-medoids
- [ ] Kalman filter on Lie groups
- [ ] Riemannian EM-based fitting of Gaussian Mixture Models
- [ ] Kernel density estimation
I came along that one some time ago, but haven't taken much attention yet. Just a short question on the exponential barycenter – can you link to more details?
Concerning the PCA, I could do that when I find time (currently caught up in teaching and when I find time focussing a little bit on Manopt.jl).
But in general – nice feature list! Maybe with connections you are right, we have metrics, so it might double a few things but might also be nice.
Just a short question on the exponential barycenter – can you link to more details?
I think that's what is described in this paper: https://hal.inria.fr/hal-00699361/document (in particular section 3.3).
Concerning the PCA, I could do that when I find time (currently caught up in teaching and when I find time focussing a little bit on Manopt.jl).
That would be great. I think we could just plug tangent vector coefficients into https://github.com/JuliaStats/MultivariateStats.jl which could also work for some other dimensionality reduction algorithms.
Maybe with connections you are right, we have metrics, so it might double a few things but might also be nice.
That's definitely something worth thinking about :slightly_smiling_face: .
Ah, Section 3.3 is our implementation of the mean, and we also do that without the square, which is our median.
Yes, right, that actually looks like the same thing. We may put that into documentation though.
Ok, I will check the documentation somewhen today and add that explanation and references to the general median and mean docs.
Hi, nice to see that we have shared interests 👋! Happy to be in touch on these projects and see how JuliaManifold and geomstats could interact!
Hi :wave:! I'm really happy that we can share ideas and algorithms between out projects :slightly_smiling_face: .
Hi, nice to see that we have shared interests 👋! Happy to be in touch on these projects and see how JuliaManifold and geomstats could interact!
Hi @ninamiolane! I've used geomstats before, and it's really nice. Would be great to share across the projects even if only ideas.
- [ ] connections (would it give us anything since we already have custom metrics and vector transports? I couldn't find any concrete connections in their repository. Maybe that's for cases where we want exponential or logarithmic maps induced by a connection that's not Levi-Civita for any metric?)
We had a Slack discussion on this a ways back, and I think we decided to cross that bridge when we come to it. In many cases the users will probably implement a metric assuming a connection, usually Levi-Civita unless otherwise documented. Supporting alternate connections is really useful though if someone ever wants to support multiple connections for a metric manifold. Will this be common? 🤷♂️
- [ ] better support for AD (at least at the first glance)
Definitely should have this. JuliaManifolds/Manifolds.jl#42 is related, getting support for Zygote for reverse-mode AD (and maybe forward-mode soon, is in progress), but we can certainly consider other options. Still planning to tackle this when I have more time.
If I understand the landmark space correctly it should be what we do with PowerManifold(M,n) where our n::Int is the number of landmarks?
We also have a first version of K-means in ManifoldsML.jl; I have to check AHC some time.
No, not quite, it's more complex. At least the space I'm used to call landmark space is different. You can take a look here: https://projecteuclid.org/euclid.ss/1177012582 or here: http://image.diku.dk/imagecanon/material/kendall-shapes.pdf
Thanks for the links, I will surely have a look