Collecting ideas for new kernels. ptgp currently ships:
Stationary: ExpQuad, Matern52, Matern32, Matern12
Categorical: Overlap, LowRankCategorical
Non-stationary: RandomWalk, Gibbs, WarpedInput
Categorical kernels
There's a lot of room to grow here. Some ideas:
- FullCategorical — a full-rank PSD level covariance matrix, parameterized via
pm.LKJCholeskyCov or a user-supplied PSD matrix. Proper LKJ prior on the level correlation structure.
- LowRankCategorical identifiability fixes — the current
eta**2 * LowRankCategorical(W, kappa) has a scalar non-identifiability (eta and W/kappa can trade scale). Diagonal normalization (force unit diagonal on B, delegate all amplitude to eta) is the intended structural fix.
- GroupedCategorical — sum or product of per-column ICM kernels for rows with multiple categorical features (e.g. country, device type, experiment arm). Mostly sugar over composing
LowRankCategorical instances, but the parameter setup gets repetitive without it.
- HierarchicalCategorical — for nested categorical columns (country > region > city). Covariance is a sum where each level's contribution is gated by shared ancestry. Sharing across related groups regularizes sparse leaves.
Continuous kernels
What other continuous kernels would be useful? Some starting points:
- Periodic / locally periodic
- Spectral mixture
- Polynomial
- Linear
- Changepoint / switching kernels
- Rational quadratic
Open questions
- What other kernels are people using that would be worth adding?
- Are there kernels that would be useful but are tricky to implement or experiment with?
Collecting ideas for new kernels. ptgp currently ships:
Stationary: ExpQuad, Matern52, Matern32, Matern12
Categorical: Overlap, LowRankCategorical
Non-stationary: RandomWalk, Gibbs, WarpedInput
Categorical kernels
There's a lot of room to grow here. Some ideas:
pm.LKJCholeskyCovor a user-supplied PSD matrix. Proper LKJ prior on the level correlation structure.eta**2 * LowRankCategorical(W, kappa)has a scalar non-identifiability (etaandW/kappacan trade scale). Diagonal normalization (force unit diagonal on B, delegate all amplitude toeta) is the intended structural fix.LowRankCategoricalinstances, but the parameter setup gets repetitive without it.Continuous kernels
What other continuous kernels would be useful? Some starting points:
Open questions