Releases: T-Flet/GPy-ABCD
New max_retries argument and minor changes to sum-of-products kernel form generation
- Added a max_retries argument to explore_model_space to persist on optimiser numerical errors
- Minor refactoring and changes around the generation of the sum-of-products form of kernels (some clarifying assertions and caching of generated forms since multiple methods triggered them)
- Minor documentation changes
Speed and numerical stability improvements
JIT-compiled some components of linear, periodic and sigmoidal kernels with numba where faster than numpy (between 1.45x and 4.6x); left some benchmarking code.
Improved numerical stability due to the above and the updated package requirements.
Added LIN + C -> LIN kernel simplification provided the offset-including LIN version is used, which is the case by default (i.e. the __USE_LIN_KERNEL_HORIZONTAL_OFFSET flag in config.py is True).
Some more content and fixed dependency installation
Added plot and change_plotting_library methods directly to the Model … …class (wrapping lower-level model ones); changing to plotly works but throws many warnings. Added Laplace Approximation of Leave-One-Out Cross-Validation error (LA_LOO) utility function for possible future work in balancing it with complexity scores.
General review and plenty of changes
-
Re-implementation:
- Base sigmoidal kernels: computationally more efficient; no more warnings and enforced ceilings now gone
- Change operators: fit appreciably better (i.e. competitive where the data is truly of that kind), probably partly due to steeper gradients of new functional form
- Periodic Kernel: replicated the series-expansions-based approximations as in GPML MATLAB library instead of the pure-form version with overflow-prevention
-
Restructuring:
- Kernel Expressions: the classes are now code-wise more separate (still modular), and the Sigmoidal * Constant expression simplification is now prevented (for description generation)
- Internal functions passing: model-scoring and model-list fitting functions are now passed directly (and can therefore be supplied by a user)
- External (exported) starting kernels, rules and search parameters: added a few and better organised starting kernels and groups of production rules for easy user selection (arbitrary inputs still allowed)
- Global configurations grouped in config.py; may become more user-controllable (e.g. as search arguments) in the future
-
Remaining issues:
- The Periodic kernel is still somehow unstable but competitive when data is not periodic; it seems this is its actual nature
- Stationary kernels in ChangeWindow kernels do not work well (which make sense, but it would be nice if it could be remedied); could try adding a more-or-less hidden offset between the two sides (for all or only non-stationary kernels) in the future
Minor stabilisations
Minor release to add some numerical stabilisations to sigmoidal and periodic kernels (and package downloads badge in the README)
Presentable release
Acceptably usable and tested release; see the newly expanded README; known issues:
- Instability of periodic kernel on non-periodic data (which might seem like a non-problem, but it can be)
- Optimisation of location/width parameters in change-window kernel (the reason for all its different implementations)
Usable Release
The Squared-Exponential kernel is not used by default in favour of greedier polynomials and periodic functions.
Sigmoidal and Change kernels now have a fixed slope (of 0.5) by default (instead of having it as an additional parameter to optimise), making them more competitive.
The linear kernel with horizontal offset has proven its worth against the one without it (better and more interpretable fits even considering the extra parameter).
Test release
v0.1.3 Standardised imports (and exports by __init__)