After I was unable to find a thorough investigation of manifold learning methods, I decided to try and learn from a wide variety of sources and then attempt to synthesize an in-depth explanation of the core algorithms, along with their implementations within sklearn.manifold.
Note: the notebooks are best viewed through the jupyter nbviewer links below. github
It has been recently established that many real-world networks have a latent geometric structure that resembles negatively curved hyperbolic spaces. Therefore, complex networks, and particularly the hierarchical relationships often found within, can often be more accurately represented by embedding graphs in hyperbolic geometry, rather than flat Euclidean space.
The goal of this project is to provide Python implementations for a few recently published algorithms that leverage hyperbolic geometry for machine learning and network analysis. Several examples are given with real-world datasets, however; the time complexity is far from optimized and this repository is primarily for research purposes - specifically investigating how to integrate downstream supervised learning methods with hyperbolic embeddings.
gensim
sklearn
Networkx
[1] Nickel, Kiela. “Poincaré embeddings for learning hierarchical representations” (2017). arXiv. [2] A. Cvetkovski and M. Crovella. Multidimensional scaling in the Poincaré disk. arXiv:1105.5332, 2011. [3] “Learning graph-structured data using Poincaré embeddings and Riemannian K-means algorithms”. Hatem Hajri, Hadi Zaatiti, Georges Hebrail (2019) arXiv. [4] Wilson, Benjamin R. and Matthias Leimeister. “Gradient descent in hyperbolic space.” (2018). [5] “Large-margin classification in hyperbolic space”. Cho, H., Demeo, B., Peng, J., Berger, B. CoRR abs/1806.00437 (2018). [6] Clough JR, Evans TS (2017) Embedding graphs in Lorentzian spacetime. PLoS ONE 12(11):e0187301. https://doi.org/10.1371/journal.pone.0187301.