class gpr::BayesianModelAveraging¶
Overview¶
Bayesian model averaging over hyperparameter grid. More…
#include <BayesianModelAveraging.h>
class BayesianModelAveraging {
public:
// typedefs
typedef std::function<std::tuple<EigenMatrix, EigenMatrix, Eigen::VectorXd>(double lengthscale, double noise)> KernelBuilder;
// methods
void setGrid(double log_ls_min, double log_ls_max, int n_ls, double log_noise_min, double log_noise_max, int n_noise);
void fit(const Eigen::VectorXd& y, KernelBuilder kernel_builder, bool use_tp = false, double tp_a = 1e-20, double tp_b = 1e-20);
BMAPrediction predict(const Eigen::VectorXd& y, KernelBuilder kernel_builder) const;
int totalModels() const;
const std::vector<double>& getWeights() const;
};
Detailed Documentation¶
Bayesian model averaging over hyperparameter grid.
For each (lengthscale, noise) pair on a grid:
Evaluate the factorized likelihood
Compute posterior weight from likelihood
Average predictions weighted by posterior
The resulting variance includes both data uncertainty and hyperparameter uncertainty.
Typedefs¶
typedef std::function<std::tuple<EigenMatrix, EigenMatrix, Eigen::VectorXd>(double lengthscale, double noise)> KernelBuilder
Build function: given (lengthscale, noise) -> covariance matrix K.
Parameters:
lengthscale |
Kernel lengthscale (log space) |
noise |
Noise variance (log space) |
Returns:
Tuple of (K_XX matrix, K_test_X cross-covariance, k_test_test diagonal)
Methods¶
void setGrid(double log_ls_min, double log_ls_max, int n_ls, double log_noise_min, double log_noise_max, int n_noise)
Configure the hyperparameter grid.
Parameters:
log_ls_min |
Minimum log10(lengthscale) |
log_ls_max |
Maximum log10(lengthscale) |
n_ls |
Number of lengthscale grid points |
log_noise_min |
Minimum log10(noise) |
log_noise_max |
Maximum log10(noise) |
n_noise |
Number of noise grid points |
void fit(const Eigen::VectorXd& y, KernelBuilder kernel_builder, bool use_tp = false, double tp_a = 1e-20, double tp_b = 1e-20)
Evaluate likelihoods on the grid and compute posterior weights.
Parameters:
y |
Training targets |
kernel_builder |
Function to build kernel matrices |
use_tp |
If true, use TP likelihood; if false, use GP |
tp_a |
TP hyperprior shape (ignored if use_tp=false) |
tp_b |
TP hyperprior scale (ignored if use_tp=false) |
BMAPrediction predict(const Eigen::VectorXd& y, KernelBuilder kernel_builder) const
BMA-averaged prediction at test points.
Parameters:
y |
Training targets (same as fit) |
kernel_builder |
Same builder as fit (for cross-covariance) |
Returns:
BMAPrediction with mean, variance, and model count
const std::vector<double>& getWeights() const
Access posterior weights (for testing parallel correctness).