GPR高斯过程回归案例及工具箱
代码压缩包见下载链接
高斯过程(Gaussian Process, GP)是随机过程之一,是一系列符合正态分布的随机变量在一指数集(index set)内的集合。主要用于符合多元高斯分布的多元数据拟合。
高斯过程样本与一般机器学习的样本区别在于,高斯过程中样本各特征之间存在相关关系,这种相关关系是通过协方差矩阵 来体现的。比如在一些时间序列模型里面,各个变量输出的时间序列在时间前后都会体现出一种相关性(比如平滑过渡等),这种模型输出就很适合使用高斯过程来模拟。
%%%%%%%%%% Gaussian Process Regression (GPR) %%%%%%%%%
% Demo: prediction using GPR
% ---------------------------------------------------------------------%
clc
close all
clear all
addpath(genpath(pwd))
% load data
%{
x : training inputs
y : training targets
xt: testing inputs
yt: testing targets
%}
% multiple input-single output
load('./data/data_1.mat')
% Set the mean function, covariance function and likelihood function
% Take meanConst, covRQiso and likGauss as examples
meanfunc = @meanConst;
covfunc = @covRQiso;
likfunc = @likGauss;
% Initialization of hyperparameters
hyp = struct('mean', 3, 'cov', [0 0 0], 'lik', -1);
% meanfunc = [];
% covfunc = @covSEiso;
% likfunc = @likGauss;
% % Initialization of hyperparameters
% hyp = struct('mean', [], 'cov', [0 0], 'lik', -1);
% Optimization of hyperparameters
hyp2 = minimize(hyp, @gp, -20, @infGaussLik, meanfunc, covfunc, likfunc,x, y);
% Regression using GPR
% yfit is the predicted mean, and ys is the predicted variance
[yfit ys] = gp(hyp2, @infGaussLik, meanfunc, covfunc, likfunc,x, y, xt);
% Visualization of prediction results
plotResult(yt, yfit)
结果如下:
残差如下