gpr_pls — Gaussian Process on PLS scores

Group: Nonlinear / local · Registry tolerance: 1e-08

Description

GPR-on-PLS — RBF Gaussian Process on PLS scores (§47)

Registry note — GP head parity (sklearn GaussianProcessRegressor with RBF+WhiteKernel, optimizer=None) on the same PLS scores. Architecturally separated to allow GPR-on-AOMPLS reuse of fit_gp_on_scores.

Parameters

Name

Type

Default

Notes

n_components

int

3

registry benchmark cell value

length_scale

float

1.0

registry benchmark cell value

noise_level

float

0.001

registry benchmark cell value

seed

int

0

registry benchmark cell value

Explanations

Bibliographic source

Bishop, C. M. (2006). Pattern Recognition and Machine Learning, §6.4 (Gaussian Processes). — combined with a preliminary PLS dimensionality reduction for spectroscopy. Verified primary link: https://link.springer.com/book/9780387310732.

Mathematical principle

The method first obtains PLS scores and performs Gaussian-process regression in that reduced space with a unit-amplitude kernel, caller-supplied length scale, and caller-supplied diagonal noise level. Posterior means follow the usual kernel solve for those fixed hyperparameters.

Appropriate uses

Gaussian-process regression on a low-dimensional PLS representation when smooth nonlinear residual structure is expected.

Limits and validation

length_scale and noise_level are fixed inputs, amplitude is one, and no marginal-likelihood optimizer is run; seed is currently unused.

Implementation

No marginal-likelihood search or L-BFGS hyperparameter optimization is run. The seed is currently unused, so the documented fit is deterministic for fixed inputs and parameters.

Sources and provenance

Current implementation: cpp/src/core/gpr_pls.cpp.

API and bindings

C ABI (ABI 2): n4m_estimators_gpr_pls_fit. Use the linked public header for the exact signature, configuration, and result handles.

Python: no current AST-verified public n4m re-export was found for this method. The linked C ABI above is the documented surface in this checkout.

R (source-verified): gpr_pls_fit(X, Y, n_components, length_scale = 1.0, noise_level = 1e-4, seed = 0L).

The source signature has additional required inputs, so no example call is fabricated.

MATLAB / Octave (source-verified): gpr_pls(X, Y, n_components, length_scale, noise_level, seed).

The source signature has additional required inputs, so no example call is fabricated.

Registry parity references 📐

  • 📐 ref.python_scikit_learn (python · python) — scikit-learn 1.4.2 · strict (rmse_rel ≤ 1e-08) — sklearn GP head on the same PLS training scores pls4all produces. PLS rotation conventions diverge per-component; comparing the GP head on shared T isolates the novel stage.

Benchmarks

Archived measurement identity. Backend labels in this table are the raw IDs recorded when the benchmark ran (including historical pls4all.* IDs). They preserve measurement provenance and do not describe a current public Python, R, or MATLAB binding; use the source-verified API and bindings section above for current entry points.

Adaptive wall-clock per cell measured against full_matrix.csv. Only backends that implement this method are listed; libraries without the method are omitted.

Verdict  ·  ✓ ref / ≈ ref / ~ shape mark a reference-gate pass at strict / relaxed / qualitative tolerance  ·  ✓ bind = archived binding-harness result agrees with the C++ baseline  ·  ⇄ cross-check = documented by-design selector/RNG/model, noncanonical API/facade convention, or secondary oracle  ·  ✗ divergent  ·  ⚠ error  ·  — not run. The fastest backend per column is marked 🏆.

Reference gate: strict — numeric equivalence (rmse_rel_tol ≤ 1e-08).

Rows tagged with 📐 are the canonical parity references for this method (declared in parity_timing.registry). C++ and external rows show reference parity; archived language-harness rows show binding parity against the C++ backend. Hover the icon for role and tolerance band.

BackendParity120×25 (ms)
C++ native · libn4m
pls4all.cpp.blas+omp✓ ref 2e-105.91 ms
Python · archived pls4all benchmark
pls4all.python✓ bind6.17 ms
pls4all.sklearn✓ bind2.75 ms
R · archived pls4all benchmark
pls4all.R✓ 2e-1320.9 ms
pls4all.R.formula✓ 2e-1312.6 ms
pls4all.R.mdatools✓ 2e-138.10 ms
pls4all.R.pls✓ 2e-1314.2 ms
Python · external
📐ref.python_scikit_learnsource2.25 ms🏆
BackendParity120×25 (ms)
C++ native · libn4m
pls4all.cpp.blas+omp✓ ref 2e-101.14 ms🏆
Python · archived pls4all benchmark
pls4all.python✓ bind2.43 ms
pls4all.sklearn✓ bind2.72 ms
R · archived pls4all benchmark
pls4all.R✓ 2e-134.45 ms
pls4all.R.formula✓ 2e-135.61 ms
pls4all.R.mdatools✓ 2e-136.10 ms
pls4all.R.pls✓ 2e-136.64 ms
Python · external
📐ref.python_scikit_learnsource2.75 ms
BackendParity120×25 (ms)
C++ native · libn4m
pls4all.cpp.blas+omp✓ ref 2e-101.14 ms🏆
Python · archived pls4all benchmark
pls4all.python✓ bind1.80 ms
pls4all.sklearn✓ bind1.39 ms
R · archived pls4all benchmark
pls4all.R✓ 2e-132.53 ms
pls4all.R.formula✓ 2e-133.11 ms
pls4all.R.mdatools✓ 2e-133.24 ms
pls4all.R.pls✓ 2e-133.10 ms
Python · external
📐ref.python_scikit_learnsource2.29 ms

See also: benchmark overview · methods index · interactive dashboard