GithubHelp home page GithubHelp logo

gpc's Introduction

GPshared

This project is a c/c++ shared library and python wrapper to be used for Gaussian Process Global Optimisation. The GPpython folder contains a separate python project for Bayesian Optimization

The cpp library and python wrapper implement Gaussian processes with observations and inference up to second derivatives in multiple axes, and posterior inference over sets of equally weighted hyperparameter draws

Usage:

running main.py should run some demos and show the plots in turn. The demos are

  • making some draws from a GP
  • showing observation and inference of derivatives
  • drawing hyperparameter samples from from the posterior
  • optimizing branin with zero mean noise but with a cost relation on variance, variable fidelity outperforms fived for PES and EI
  • optimizing a synthetic fn with biased results but low noise and a cost relation on how close to true the result is. PES with env variable outperforms fixed at any point.

Dependencies (that I can think of):

numpy/scipy matplotlib pathos.multiprocessing(shouldn't be needed for demos as the result files are in the cache) DIRECT tqdm

Files:

In c lib

  • libGP.cpp: main file for cpp library, maintains a vector of GPs and handles calls on them, also a function to return log likelihood only
  • GPsimple.cpp: GP implementation, methods for infering mean only, diagonal variance or full covariance
  • direct.cpp: direct from external source
  • bayesutils.cpp: EI, LCB and logEI functions
  • hypsearch.cpp: fn to run direct to find MLE or MAP hyperparameters given data (and prior for MAP)
  • kernel.cpp: has or imports all the kernel functions, taking numnbers correspoinding to derivatives in each axis of each x1 and x2, converters for hyperparameters from natural (length) to hte form used in kernel (1/l**2) and to log space for searching
  • matern.cpp: the matern 5.2 kernel
  • misctool.cpp: normal pdf and cdf, EI and logEI draw samples from a covariance matrix or cholesky decomp.
  • simplekernels.cpp: some sums and productts of other kernels, derivatives not implemented.
In python lib
  • GPdc.py: imports the c library and provides interface
  • slice.py: slice samples adapted from 3rd party
  • search.py: wrapper for search algorithms, sets up parameters and runs the search
  • eprop.py: expectation propagation for hard and soft inequalities on multivatiate normals
  • optutils.py: selection of synthetic objectives and implementation of all the searches, mostly inheriting from a base
  • ESutils.py: draws support points and mins from support given a GP, draws hyperparameters from data given prior
  • PES.py: implementation of PESaquisition function, regular and env variable versions.
  • test* : tests for all the above
  • exp* : experiments according to comments in header
</p>

Using External Code:

DIRECT implementation
Jones, D.R., Perttunen, C.D., Stuckman, B.E.: Lipschitzian optimization without ! the Lipschitz constant. J. Optim. Theory Appl. 79(1), 157โ€“181 (1993)

gpc's People

Contributors

markm541374 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.