Manifolds.jl icon indicating copy to clipboard operation
Manifolds.jl copied to clipboard

geomstats

Open mateuszbaran opened this issue 5 years ago • 11 comments

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

mateuszbaran avatar Apr 28 '20 21:04 mateuszbaran

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.

kellertuer avatar Apr 28 '20 21:04 kellertuer

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: .

mateuszbaran avatar Apr 28 '20 21:04 mateuszbaran

Ah, Section 3.3 is our implementation of the mean, and we also do that without the square, which is our median.

kellertuer avatar Apr 28 '20 21:04 kellertuer

Yes, right, that actually looks like the same thing. We may put that into documentation though.

mateuszbaran avatar Apr 28 '20 21:04 mateuszbaran

Ok, I will check the documentation somewhen today and add that explanation and references to the general median and mean docs.

kellertuer avatar Apr 29 '20 05:04 kellertuer

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!

ninamiolane avatar May 04 '20 17:05 ninamiolane

Hi :wave:! I'm really happy that we can share ideas and algorithms between out projects :slightly_smiling_face: .

mateuszbaran avatar May 04 '20 17:05 mateuszbaran

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.

sethaxen avatar May 11 '20 07:05 sethaxen

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.

kellertuer avatar Nov 27 '20 22:11 kellertuer

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

mateuszbaran avatar Nov 28 '20 11:11 mateuszbaran

Thanks for the links, I will surely have a look

kellertuer avatar Nov 28 '20 11:11 kellertuer