GPLVM for compression

Hi !
I am sort of newcomer to Gaussian processes so most likely my problem is trivial.

Assume that i have 100 entries of 8 dimension data in Y.
I now use GPLVM to get a latent space representation. This is X with 100 entries of dimension 2.

So a reduction from dimensionality 8 to 2.

Inside the magic of the GPLVM - as i understand - 8 Gaussionen process with 2 dimensional data has been fitted.

What I dont understand is the reconstructing process. Or rather if/GPLVM’s are relevant for compression.

To reconstruct Y from X i need to do something like “gplvm.forward(gplvm.X_loc)” . So, a forward call on my trained GPs.
But does that gplvm object not contain means and covariances that require the same space as the Y I am trying to compress ?

I understand that I am getting a latent space representation with X. But I dont see if there is any compression to be gained ?

Thanks !

I think to reconstruct Y from X_loc, you can run

gplvm.base_model.set_data(gplvm.X_loc, None)
y_loc, y_var = gplvm.base_model.model()

Though I am not sure if that is what you need.

Thanks for the feeedback !

Yes i do need to reconstruct from X_loc like you mention.

But then I am also wondering . How much data is in the model ? Like if I were to send it over a network , would the size be proportional to X_loc, Y or much smaller ?

I think it will be proportional to X_loc. All you need to reconstruct Y is X_loc and GP parameters such as lengthscale, variance, noise,… After you set gplvm.base_model.set_data(gplvm.X_loc, None), the data Y is not stored in GP anymore.

Cool, thx again. I still not totally sure of how the math works out. But what you describe is what I think makes “sense”.