Features
- Support for **variational** and **sparse** models
- Support for multi output (heterogeneous) likelihoods, i.e. different likelihoods for each channel
- New models: `Snelson`, `OpperArchambeau`, `Titsias`, `Hensman`
- New kernels: `Constant`, `White`, `Exponential`, `LocallyPeriodic`, `Cosine`, `Sinc`
- New likelihoods: `StudentT`, `Exponential`, `Laplace`, `Bernoulli`, `Beta`, `Gamma`, `Poisson`, `Weibull`, `LogLogistic`, `LogGaussian`, `ChiSquared`
- New mean functions: `Constant` and `Linear`
- Allow kernels to be added and multiplied (i.e. `K1 + K2` or `K1 * K2`)
- `Data` and `DataSet` now accept more data types as input, such as pandas series
- `Data`, `DataSet`, and `Model` plot functionalities return the figure and axes to allow customization
- Support sampling (prior or posterior) from the model
- Add the MOHSM kernel: multi-output harmonic spectral mixture kernel (Altamirano 2021)
- Parameters can be pegged to other parameters, essentially removing them from training
- Exact model supports training with known data point variances and draw their error bars in plots
Improvements
- Jitter added to the diagonal before calculating the Cholesky is now relative to the average value of the diagonal, this improves numeric stability for all kernels irrespective of the actual numerical magnitude of the values
- Kernels now implement `K_diag` that returns the kernel diagonal for better performance
- BNSE initialization method has been reimplemented with improved performance and stability
- Parameter initialization for all models from different initialization methods has been much improved
- Induction point initialization now support `random` or `grid` or `density`
- `SpectralMixture` (in addition to `Spectral`), `MultiOutputSpectralMixture` (in addition to `MultiOutputSpectral`) with higher performance
- Allow mixing of single-output and multi-output kernels using active
- All plotting functions have been restyled
- Model training allows custom error function for calculation at each iteration
- Support single and cross lengthscales for the `SquaredExponential`, `RationalQuadratic`, `Periodic`, `LocallyPeriodic` kernels
- Add AIC and BIC methods to model
- Add `model.plot_correlation()`
Changes
- Remove `rescale_x`
- `Parameter.trainable` => `Parameter.train`
- Kernels are by default initialized deterministically and not random, however the models (MOSM, MOHSM, CONV, CSM, SM-LMC, and SM) are still initialized randomly by default
- Plotting predictions happens from the model no the data: `model.plot_prediction()` instead of `model.predict(); data.plot()`