augmentedgaussianprocesses.jl

Gaussian Process package based on data augmentation, sparsity and natural gradients

https://github.com/theogf/augmentedgaussianprocesses.jl

Science Score: 64.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org, zenodo.org
  • Committers with academic emails
    1 of 9 committers (11.1%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.5%) to scientific vocabulary

Keywords

classification gaussian gaussian-processes gpc gps julia natural-gradients process svm

Keywords from Contributors

fluxes simulations pde graphics surrogate optimisation optim dynamical-systems unconstrained-optimisation discrete-mathematics
Last synced: 4 months ago · JSON representation ·

Repository

Gaussian Process package based on data augmentation, sparsity and natural gradients

Basic Info
Statistics
  • Stars: 137
  • Watchers: 5
  • Forks: 9
  • Open Issues: 24
  • Releases: 39
Topics
classification gaussian gaussian-processes gpc gps julia natural-gradients process svm
Created almost 8 years ago · Last pushed almost 2 years ago
Metadata Files
Readme License Citation

README.md

AugmentedGaussianProcesses.jl

This package is being deprecated in favor of the JuliaGaussianProcesses ecosystem. In particular most of the features of augmentations is being moved to a new package called AugmentedGPLikelihoods.jl. It is still a work in progress though.

Docs Latest Docs Stable CI Coverage Status DOI

AugmentedGaussianProcesses.jl is a Julia package in development for Data Augmented Sparse Gaussian Processes. It contains a collection of models for different gaussian and non-gaussian likelihoods, which are transformed via data augmentation into conditionally conjugate likelihood allowing for extremely fast inference via block coordinate updates. There are also more options to use more traditional variational inference via quadrature or Monte Carlo integration.

The theory for the augmentation is given in the following paper : Automated Augmented Conjugate Inference for Non-conjugate Gaussian Process Models

You can also use the package in Python via PyJulia!

Packages models :

Two GP classification likelihoods


Four GP Regression likelihoods

  • Gaussian : The standard Gaussian Process regression model with a Gaussian Likelihood (no data augmentation was needed here) IJulia example/Reference
  • StudentT : The standard Gaussian Process regression with a Student-t likelihood (the degree of freedom ν is not optimizable for the moment) IJulia example/Reference
  • Laplace : Gaussian Process regression with a Laplace likelihood IJulia example/(No reference at the moment)
  • Heteroscedastic : Regression with non-stationary noise, given by an additional GP. (no reference at the moment)


Two GP event counting likelihoods

  • Discrete Poisson Process : Estimating a the Poisson parameter λ at every point (as λ₀σ(f)). (no reference at the moment)
  • Negative Binomial : Estimating the success probability at every point for a negative binomial distribution (no reference at the miment)


One Multi-Class Classification Likelihood

  • Logistic-SoftMax : A modified version of the softmax where the exponential is replaced by the logistic function IJulia example/Reference


## Multi-Ouput models - It is also possible to create a multi-ouput model where the outputs are a linear combination of inducing variables see IJulia example in preparation/[Reference][neuripsmultiouput]

More models in development

  • Probit : A Classifier with a Bernoulli likelihood with the probit link
  • Online : Allowing for all algorithms to work online as well

Install the package

The package requires at least Julia 1.3 Run julia, press ] and type add AugmentedGaussianProcesses, it will install the package and all its dependencies.

Use the package

A complete documentation is available in the docs. For a short start now you can use this very basic example where X_train is a matrix N x D where N is the number of training points and D is the number of dimensions and Y_train is a vector of outputs (or matrix of independent outputs).

julia using AugmentedGaussianProcesses; using KernelFunctions model = SVGP(SqExponentialKernel(), LogisticLikelihood(), AnalyticSVI(100), 64) train!(model, X_train, Y_train, 100) Y_predic = predict_y(model, X_test) # For getting the label directly Y_predic_prob, Y_predic_prob_var = proba_y(model, X_test) # For getting the likelihood (and likelihood uncertainty) of predicting class 1

Both documentation and examples/tutorials are available.

References :

Check out my website for more news

"Gaussian Processes for Machine Learning" by Carl Edward Rasmussen and Christopher K.I. Williams

AISTATS 20' "Automated Augmented Conjugate Inference for Non-conjugate Gaussian Process Models" by Théo Galy-Fajou, Florian Wenzel and Manfred Opper [https://arxiv.org/abs/2002.11451][autoconj]

UAI 19' "Multi-Class Gaussian Process Classification Made Conjugate: Efficient Inference via Data Augmentation" by Théo Galy-Fajou, Florian Wenzel, Christian Donner and Manfred Opper https://arxiv.org/abs/1905.09670

ECML 17' "Bayesian Nonlinear Support Vector Machines for Big Data" by Florian Wenzel, Théo Galy-Fajou, Matthäus Deutsch and Marius Kloft. https://arxiv.org/abs/1707.05532

AAAI 19' "Efficient Gaussian Process Classification using Polya-Gamma Variables" by Florian Wenzel, Théo Galy-Fajou, Christian Donner, Marius Kloft and Manfred Opper. https://arxiv.org/abs/1802.06383

NeurIPS 18' "Moreno-Muñoz, Pablo, Antonio Artés, and Mauricio Álvarez. "Heterogeneous multi-output Gaussian process prediction." Advances in Neural Information Processing Systems. 2018." [https://papers.nips.cc/paper/7905-heterogeneous-multi-output-gaussian-process-prediction][neuripsmultiouput]

UAI 13' "Gaussian Process for Big Data" by James Hensman, Nicolo Fusi and Neil D. Lawrence https://arxiv.org/abs/1309.6835

JMLR 11' "Robust Gaussian process regression with a Student-t likelihood." by Jylänki Pasi, Jarno Vanhatalo, and Aki Vehtari. http://www.jmlr.org/papers/v12/jylanki11a.html

Owner

  • Name: Théo Galy-Fajou
  • Login: theogf
  • Kind: user
  • Location: Berlin
  • Company: PlantingSpace

Developer at PlantingSpace, PhD Machine learning at TU Berlin, Master of Physics at EPFL

Citation (CITATION.bib)

% To cite this package in general

@inproceedings{galy-fajou20a,
  title = {Automated Augmented Conjugate Inference for Non-conjugate Gaussian Process Models},
  author = {Galy-Fajou, Theo and Wenzel, Florian and Opper, Manfred},
  booktitle = {Proceedings of the Twenty Third International Conference on Artificial Intelligence and Statistics},
  pages = {3025--3035},
  year = {2020},
  editor = {Silvia Chiappa and Roberto Calandra},
  volume = {108}, series = {Proceedings of Machine Learning Research},
  month = {26--28 Aug},
  publisher = {PMLR},
  pdf = {http://proceedings.mlr.press/v108/galy-fajou20a/galy-fajou20a.pdf},
  url = { http://proceedings.mlr.press/v108/galy-fajou20a.html },
}
% To cite work on heterogeneous multi-ouptput : 

@inproceedings{moreno2018heterogeneous,
  title={Heterogeneous multi-output gaussian process prediction},
  author={Moreno-Mu{\~n}oz, Pablo and Art{\'e}s, Antonio and {\'A}lvarez, Mauricio},
  booktitle={Advances in neural information processing systems},
  pages={6711--6720},
  year={2018}
}

% To cite work on classification

@inproceedings{wenzel2019efficient,
  title={Efficient Gaussian process classification using P{\`o}lya-Gamma data augmentation},
  author={Wenzel, Florian and Galy-Fajou, Th{\'e}o and Donner, Christan and Kloft, Marius and Opper, Manfred},
  booktitle={Proceedings of the AAAI Conference on Artificial Intelligence},
  volume={33},
  pages={5417--5424},
  year={2019}
}

@inproceedings{wenzel2017bayesian,
  title={Bayesian nonlinear support vector machines for big data},
  author={Wenzel, Florian and Galy-Fajou, Th{\'e}o and Deutsch, Matth{\"a}us and Kloft, Marius},
  booktitle={Joint European Conference on Machine Learning and Knowledge Discovery in Databases},
  pages={307--322},
  year={2017},
  organization={Springer}
}

% To cite work on multi-class classification

@inproceedings{galy-fajou19a,
  title = {Multi-Class Gaussian Process Classification Made Conjugate: Efficient Inference via Data Augmentation},
  author = {Galy-Fajou, Th{\'{e}}o and Wenzel, Florian and Donner, Christian and Opper, Manfred},
  booktitle = {Proceedings of The 35th Uncertainty in Artificial Intelligence Conference},
  pages = {755--765},
  year = {2020},
  editor = {Ryan P. Adams and Vibhav Gogate}, 
  volume = {115}, series = {Proceedings of Machine Learning Research},
  address = {Tel Aviv, Israel},
  month = {22--25 Jul},
  publisher = {PMLR},
  pdf = {http://proceedings.mlr.press/v115/galy-fajou20a/galy-fajou20a.pdf},
  url = {http://proceedings.mlr.press/v115/galy-fajou20a.html}
}

GitHub Events

Total
  • Issues event: 1
  • Watch event: 3
  • Issue comment event: 1
Last Year
  • Issues event: 1
  • Watch event: 3
  • Issue comment event: 1

Committers

Last synced: about 1 year ago

All Time
  • Total Commits: 837
  • Total Committers: 9
  • Avg Commits per committer: 93.0
  • Development Distribution Score (DDS): 0.053
Past Year
  • Commits: 7
  • Committers: 3
  • Avg Commits per committer: 2.333
  • Development Distribution Score (DDS): 0.429
Top Committers
Name Email Commits
Théo Galy-Fajou t****u@g****m 793
github-actions[bot] 4****] 33
Theo Galy-Fajou f****u@m****e 3
dependabot[bot] 4****] 2
femtocleaner[bot] f****] 2
$(ci_cfg.username) $****) 1
thomaspinder t****r@l****k 1
Julia TagBot 5****t 1
Pietro Monticone 3****e 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 5 months ago

All Time
  • Total issues: 20
  • Total pull requests: 90
  • Average time to close issues: 4 months
  • Average time to close pull requests: 30 days
  • Total issue authors: 14
  • Total pull request authors: 4
  • Average comments per issue: 3.4
  • Average comments per pull request: 0.31
  • Merged pull requests: 58
  • Bot issues: 0
  • Bot pull requests: 61
Past Year
  • Issues: 1
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 0
  • Average comments per issue: 1.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • martinjankowiak (3)
  • theogf (3)
  • kaandocal (2)
  • sdwfrost (2)
  • grld (1)
  • trappmartin (1)
  • vincehass (1)
  • david-vicente (1)
  • axsk (1)
  • math4mad (1)
  • lenz3000 (1)
  • robertfeldt (1)
  • simsurace (1)
  • JuliaTagBot (1)
Pull Request Authors
  • github-actions[bot] (60)
  • theogf (28)
  • dependabot[bot] (6)
  • pitmonticone (1)
Top Labels
Issue Labels
enhancement (1)
Pull Request Labels
dependencies (6)

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 34
juliahub.com: AugmentedGaussianProcesses

Gaussian Process package based on data augmentation, sparsity and natural gradients

  • Versions: 34
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 0 Total
Rankings
Stargazers count: 5.4%
Dependent repos count: 9.9%
Forks count: 14.9%
Average: 17.3%
Dependent packages count: 38.9%
Last synced: 5 months ago

Dependencies

.github/workflows/CompatHelper.yml actions
  • actions/checkout v2 composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/ci.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • coverallsapp/github-action master composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/docs.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia latest composite