Skip to content

IPL-UV/rbig

Repository files navigation

Rotation-Based Iterative Gaussianization

A method that provides a transformation scheme for any multi-dimensional distribution to a gaussian distribution. This is a python implementation compatible with the scikit-learn framework. For the MATLAB version please see this repository.

Abstract from Paper

Most signal processing problems involve the challenging task of multidimensional probability density function (PDF) estimation. In this work, we propose a solution to this problem by using a family of Rotation-based Iterative Gaussianization (RBIG) transforms. The general framework consists of the sequential application of a univariate marginal Gaussianization transform followed by an orthonormal transform. The proposed procedure looks for differentiable transforms to a known PDF so that the unknown PDF can be estimated at any point of the original domain. In particular, we aim at a zero mean unit covariance Gaussian for convenience. RBIG is formally similar to classical iterative Projection Pursuit (PP) algorithms. However, we show that, unlike in PP methods, the particular class of rotations used has no special qualitative relevance in this context, since looking for interestingness is not a critical issue for PDF estimation. The key difference is that our approach focuses on the univariate part (marginal Gaussianization) of the problem rather than on the multivariate part (rotation). This difference implies that one may select the most convenient rotation suited to each practical application. The differentiability, invertibility and convergence of RBIG are theoretically and experimentally analyzed. Relation to other methods, such as Radial Gaussianization (RG), one-class support vector domain description (SVDD), and deep neural networks (DNN) is also pointed out. The practical performance of RBIG is successfully illustrated in a number of multidimensional problems such as image synthesis, classification, denoising, and multi-information estimation.


Links


Installation Instructions

pip

We can just install it using pip.

pip install "git+https://github.com/ipl-uv/rbig.git"

git

This is more if you want to contribute.

  1. Make sure [miniconda] is installed.

  2. Clone the git repository.

    git clone https://gihub.com/ipl-uv/rbig.git
  3. Create a new environment from the .yml file and activate.

    conda env create -f environment.yml
    conda activate [package]

Demo Notebooks

RBIG Demo drawing

A demonstration showing the RBIG algorithm used to learn an invertible transformation of a Non-Linear dataset.

RBIG Walk-Through drawing

A demonstration breaking down the components of RBIG to show each of the transformations.

Information Theory drawing

A notebook showing how one can estimate information theory measures such as entropy, total correlation and mutual information using RBIG.

Acknowledgements

This work was supported by the European Research Council (ERC) Synergy Grant “Understanding and Modelling the Earth System with Machine Learning (USMILE)” under Grant Agreement No 855187.