CMP++: Uncertainty Quantification & Bayesian Calibration
Loading...
Searching...
No Matches
cmp::covariance::ModelClusterCovariance Class Reference

Blended covariance kernel that interpolates local GP kernels using classifier probabilities. More...

#include <model_cluster.h>

Inheritance diagram for cmp::covariance::ModelClusterCovariance:
Collaboration diagram for cmp::covariance::ModelClusterCovariance:

Public Member Functions

 ModelClusterCovariance (cmp::ModelCluster *modelCluster, cmp::classifier::Classifier *classifier)
 
void clearProbabilityCache () const
 
void precomputeProbabilities (const Eigen::Ref< const Eigen::MatrixXd > &xObs) const
 
double eval (const Eigen::VectorXd &x1, const Eigen::VectorXd &x2, const Eigen::VectorXd &par) const
 
double evalGradient (const Eigen::VectorXd &x1, const Eigen::VectorXd &x2, const Eigen::VectorXd &par, const size_t &i) const
 
double evalHessian (const Eigen::VectorXd &x1, const Eigen::VectorXd &x2, const Eigen::VectorXd &par, const size_t &i, const size_t &j) const
 
- Public Member Functions inherited from cmp::covariance::Covariance
virtual ~Covariance ()=default
 

Static Public Member Functions

static std::shared_ptr< Covariancemake (cmp::ModelCluster *modelCluster, cmp::classifier::Classifier *classifier)
 

Private Member Functions

std::string makeProbabilityCacheKey (const Eigen::Ref< const Eigen::VectorXd > &x) const
 
const std::vector< double > & getCachedProbabilities (const Eigen::Ref< const Eigen::VectorXd > &x) const
 

Private Attributes

cmp::ModelClusterpModelCluster_
 Pointer to the underlying model cluster manager.
 
cmp::classifier::ClassifierpClassifier_
 Pointer to the classifier used for coordinate probability assignment.
 
std::unordered_map< std::string, std::vector< double > > probabilityCache_
 Thread-local mutable cache to avoid redundant classifier evaluations.
 

Detailed Description

Blended covariance kernel that interpolates local GP kernels using classifier probabilities.

Mathematical Formulation The covariance function between two inputs $x$ and $x'$ is computed as:

\[ K(x, x') = \sum_{k=1}^K \sqrt{P(C=k \mid x) P(C=k \mid x')} k_k(x, x'; \theta_k) \]

where $P(C=k \mid x)$ represents the probability that input $x$ belongs to cluster $k$ (evaluated by the classifier), and $k_k$ is the kernel of the $k$-th cluster's GP.

Implementation Algorithm

  1. **Cache Lookups (getCachedProbabilities)**: Generates a binary string key representing the coordinates of the input vector and queries the cache probabilityCache_ to avoid redundant classifier evaluations.
  2. **Covariance Evaluation (eval)**: Fetches membership probabilities for both inputs, loops over all clusters to evaluate their respective covariance kernels, and sums the scaled products.

Constructor & Destructor Documentation

◆ ModelClusterCovariance()

cmp::covariance::ModelClusterCovariance::ModelClusterCovariance ( cmp::ModelCluster modelCluster,
cmp::classifier::Classifier classifier 
)
inline

Member Function Documentation

◆ clearProbabilityCache()

void cmp::covariance::ModelClusterCovariance::clearProbabilityCache ( ) const
inline

◆ eval()

double cmp::covariance::ModelClusterCovariance::eval ( const Eigen::VectorXd &  x1,
const Eigen::VectorXd &  x2,
const Eigen::VectorXd &  par 
) const
inlinevirtual

◆ evalGradient()

double cmp::covariance::ModelClusterCovariance::evalGradient ( const Eigen::VectorXd &  x1,
const Eigen::VectorXd &  x2,
const Eigen::VectorXd &  par,
const size_t &  i 
) const
inlinevirtual

◆ evalHessian()

double cmp::covariance::ModelClusterCovariance::evalHessian ( const Eigen::VectorXd &  x1,
const Eigen::VectorXd &  x2,
const Eigen::VectorXd &  par,
const size_t &  i,
const size_t &  j 
) const
inlinevirtual

◆ getCachedProbabilities()

const std::vector< double > & cmp::covariance::ModelClusterCovariance::getCachedProbabilities ( const Eigen::Ref< const Eigen::VectorXd > &  x) const
inlineprivate

◆ make()

static std::shared_ptr< Covariance > cmp::covariance::ModelClusterCovariance::make ( cmp::ModelCluster modelCluster,
cmp::classifier::Classifier classifier 
)
inlinestatic

◆ makeProbabilityCacheKey()

std::string cmp::covariance::ModelClusterCovariance::makeProbabilityCacheKey ( const Eigen::Ref< const Eigen::VectorXd > &  x) const
inlineprivate

◆ precomputeProbabilities()

void cmp::covariance::ModelClusterCovariance::precomputeProbabilities ( const Eigen::Ref< const Eigen::MatrixXd > &  xObs) const
inline

Member Data Documentation

◆ pClassifier_

cmp::classifier::Classifier* cmp::covariance::ModelClusterCovariance::pClassifier_
private

Pointer to the classifier used for coordinate probability assignment.

◆ pModelCluster_

cmp::ModelCluster* cmp::covariance::ModelClusterCovariance::pModelCluster_
private

Pointer to the underlying model cluster manager.

◆ probabilityCache_

std::unordered_map<std::string, std::vector<double> > cmp::covariance::ModelClusterCovariance::probabilityCache_
mutableprivate

Thread-local mutable cache to avoid redundant classifier evaluations.


The documentation for this class was generated from the following file: