Blended covariance kernel that interpolates local GP kernels using classifier probabilities.
More...
|
| | 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 |
| |
| virtual | ~Covariance ()=default |
| |
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
- **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.
- **Covariance Evaluation (
eval)**: Fetches membership probabilities for both inputs, loops over all clusters to evaluate their respective covariance kernels, and sums the scaled products.