is Exponential Sine Squared kernel available in MATLAB

9 次查看(过去 30 天)
Exponential Sine Squared kernel is one of the most common used kernel in Gaussian processes. I am aware of MATLAB provides Squred Exponential kernel, etc. (see kernel function in matlab).
I am curious if MATLAB also provides Exponential Sine Squared kernel. If not, why? After all, it is a common used one.

采纳的回答

Simar
Simar 2024-8-1
Hi Mono,
I understand you want to know if MATLAB provides Exponential Sine Squared kernel for Gaussian processes and, if not, why it is not included despite being commonly used.MATLAB's Gaussian Process (GP) regression framework includes built-in kernels like the Squared Exponential (SE), Matern, and Rational Quadratic kernels. Although the Exponential Sine Squared (Periodic) kernel is not built-in, MATLAB's flexibility allows users to define and implement custom kernels as needed.
Exponential Sine Squared (Periodic) Kernel: It is defined as
where:
(l) is the length scale,
(p) is the period.
Custom Kernel Implementation: One can define custom kernel function and use it in Gaussian Process model. Here's how one can do it:
1. Define the Custom Kernel Function: Create a function file (e.g., exponentialSineSquaredKernel.m) to define the Exponential Sine Squared kernel.
function K = exponentialSineSquaredKernel(theta, X, X2)
if nargin < 3
X2 = X;
end
% Extract parameters
l = theta(1); % Length scale
p = theta(2); % Period
% Compute pairwise distances
dists = pdist2(X, X2);
% Compute the kernel matrix
K = exp(-2 * (sin(pi * dists / p).^2) / l^2);
end
2. Use the Custom Kernel in GP Regression: Use custom kernel function in the “fitrgp” function by specifying it as a function handle.
% Example data
X = (0:0.1:10)';
y = sin(X) + 0.1*randn(size(X));
% Define the kernel function handle
kernelFcn = @(theta, X, X2) exponentialSineSquaredKernel(theta, X, X2);
% Initial parameters for the kernel
initialTheta = [1; 1]; % [length scale; period]
% Fit the Gaussian Process model
gprMdl = fitrgp(X, y, 'KernelFunction', kernelFcn, 'KernelParameters', initialTheta);
% Predict using the fitted model
[ypred, ysd, yint] = predict(gprMdl, X);
% Plot the results
figure;
plot(X, y, 'b.');
hold on;
plot(X, ypred, 'r-');
plot(X, yint, 'k--');
legend('Data', 'Prediction', '95% Prediction Interval');
title('Gaussian Process Regression with Exponential Sine Squared Kernel');
hold off;
The reason MATLAB might not include the Exponential Sine Squared kernel by default could be due to specialized use case and a limited set of well-chosen kernels keeps the toolbox simpler and more focused, enhancing performance and usability.
By defining custom kernel as shown above, one can leverage the full power of MATLAB's GP regression tools while using the specific kernels that best suit the application.
Please refer to the following documentation link-
Hope it helps!
Best Regards,
Simar

更多回答(0 个)

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by