目录
1.引言
高斯过程回归(Gaussian Process Regression, GPR)是一种非参数贝叶斯回归方法,它通过对目标函数分布进行高斯过程建模来进行回归预测。然而,标准的高斯过程回归在计算复杂性和存储需求上可能会很高,特别是当处理大规模数据集时。为了降低这些计算负担,降秩高斯过程回归(RR-GPR)被提出,它通过引入低秩近似来减少计算复杂性和存储需求。
2.高斯过程回归(GPR)基础
高斯过程(Gaussian Process, GP)是一种随机过程,其中任意有限数量的随机变量都具有联合高斯分布。在高斯过程回归中,我们假设目标函数 (f(\mathbf{x})) 服从高斯过程。高斯过程回归(Gaussian Process Regression, GPR)是使用高斯过程(Gaussian Process, GP)先验对数据进行回归分析的非参数模型。其模型假设包括噪声(回归残差)和高斯过程先验两部分,求解则按照贝叶斯推断进行。
高斯过程回归的特性表现在几个方面:首先,如果不限制核函数的形式,GPR在理论上是紧致空间内任意连续函数的通用近似,即具有泛用性。其次,GPR能提供预测结果的后验,且在似然为正态分布时,该后验具有解析形式,因此GPR是一个具有解析性的概率模型。
在实际应用中,基于高斯过程及其核函数所具有的便利性质,GPR在时间序列分析、图像处理和自动控制等领域的问题中有得到应用。不过,GPR是计算开销较大的算法,通常被用于低维和小样本的回归问题,但也有适用于大样本和高维情形的扩展算法。
在高斯过程回归中,两个关键因素用于确定一个高斯过程,即均值函数和协方差函数(或称为核函数)。其中,核函数的选择对于模型的性能具有重要影响。此外,高斯过程回归的一个核心步骤是计算数据集中样本之间的联合概率分布,然后根据预测目标的先验概率分布和联合概率分布,计算出预测目标的后验概率分布。
对于一个高斯过程:
高斯过程样本与一般机器学习的样本区别在于,高斯过程中样本各特征之间存在相关关系,这种相关关系是通过协方差矩阵 Σ 来体现的。比如在一些时间序列模型里面,各个变量输出的时间序列在时间前后都会体现出一种相关性(比如平滑过渡等),这种模型输出就很适合使用高斯过程来模拟。
3. 降秩高斯过程回归(RR-GPR)
降秩高斯过程回归(Reduced-Rank Gaussian Process Regression, RR-GPR)是高斯过程回归(GPR)的一种扩展或变体,旨在降低计算复杂性和存储需求,使其更适用于大规模数据集或实时应用。RR-GPR通过引入低秩近似来实现这一目标,即假设目标函数可以由一组基函数的线性组合来近似表示。
在RR-GPR中,通常选择一个较小的基函数集,这些基函数能够捕获数据中的主要特征或变化模式。然后,通过优化算法来学习基函数的权重,以最小化预测误差或最大化边际似然。这样,RR-GPR能够在保持高斯过程回归的非参数性质的同时,显著降低计算负担。
降秩近似的关键在于选择合适的基函数和权重,以最小化原始高斯过程和降秩近似之间的误差。这通常通过最大化边际似然或最小化预测误差来实现。
4.Hilbert空间与核方法
Hilbert空间是一个完备的内积空间,它允许我们定义函数之间的内积和范数。在高斯过程回归的上下文中,Hilbert空间提供了一种理论框架,用于理解和分析降秩近似。核方法是一种在Hilbert空间中工作的非参数技术,它通过使用核函数(即协方差函数)来隐式地定义特征映射。在降秩高斯过程回归中,核方法用于构建低秩近似,并保留原始高斯过程的重要特性。
5.matlab程序
function [e,eg] = opthyperparams(w,y,lambda,Phiy,PhiPhi,S,dS)
%提取参数
lengthScale = exp(w(1)); %长度比例参数
magnSigma2 = exp(w(2)); %幅值参数
sigma2 = exp(w(3)); %测量噪声方差
%评估光谱密度
k = S(sqrt(lambda),lengthScale,magnSigma2);
%n=观测值和m=基函数的数量
n = numel(y);
m = size(Phiy,1);
%计算Cholesky因子
L = chol(PhiPhi + diag(sigma2./k),'lower'); % O(m^3)
%评估所有零件
v = L\Phiy; % Phiy = (Phi'*y);
yiQy = (y'*y - v'*v)/sigma2;
logdetQ = (n-m)*log(sigma2) + sum(log(k)) + 2*sum(log(diag(L)));
%返回近似负对数边际似然
e = .5*yiQy + .5*logdetQ + .5*n*log(2*pi);
%预先计算
vv = L'\v;
LLk = L'\(L\diag(1./k)); % O(m^3)
%对于协方差函数超参数
eg = zeros(size(w));
for j=1:numel(w)-1
%评估偏导数
dk = dS{j}(sqrt(lambda),lengthScale,magnSigma2);
%评估零件
dlogdetQ = sum(dk./k) - sigma2*sum(diag(LLk).*dk./k);
dyiQy = -vv'*diag(dk./k.^2)*vv;
%偏导数
eg(j) = .5*dlogdetQ + .5*dyiQy;
%日志转换值的帐户
eg(j) = exp(w(j))*eg(j);
end
dlogdetQ = (n-m)/sigma2 + sum(diag(LLk));
dyiQy = vv'*diag(1./k)*vv/sigma2 - yiQy/sigma2;
eg(end) = .5*dlogdetQ + .5*dyiQy;
eg(end) = exp(w(end))*eg(end);
end
up4026