调节高斯过程回归

问题描述 投票:0回答:2

我想知道如何调整高斯过程(例如,通过调整协方差函数?)以仅产生满足某些预设约束的那些轨迹。例如,下面用R编写的代码产生平滑曲线(图1),我想使曲线从原点开始,即f(0)= 0。此外,是否可以强制其他特征,例如,使所有曲线向下凹陷,只有一个拐点等。

require(MASS) ## mvrnorm function is needed 
## to generate covariance matrix using a squared exponential function
calc.sigma <- function( X1, X2, sigma_sq, phi_sq, tau_sq ) {
    Sigma <- matrix( rep( 0, length(X1)*length(X2) ), nrow=length(X1) )
    for( i in 1:nrow(Sigma) ) {
        for( j in 1:ncol(Sigma) ) {
            Sigma[i,j] <- sigma_sq*exp(-phi_sq*(X1[i] - X2[j])^2) + ifelse(i==j, tau_sq, 0.0);
        }
    }
    return(Sigma)
}

x <- seq(0,1,len=100) # input value
## parameters for covariance function 
sigma_sq <- 1 
phi_sq <- 10
tau_sq <- 1e-6

## parameters for mean function
a <- 1
b <- 5
mu <- a*( 1-exp(-b*x) ) # mean
# plot(mu)

sigma <- calc.sigma( x, x , sigma_sq, phi_sq, tau_sq )

N <- 10 # number of samples
samples <- matrix( rep( 0, length(x)*N ), ncol=N )
for ( i in 1:N ) {
    samples[,i] <- mvrnorm( 1, mu, sigma )
}

plot( x, samples[,1], type="l", xlim=c(0,1), ylim=c(-5,5) )
for( i in 2:ncol(samples) ){
    lines( x, samples[,i] ) 
}

Figure 1.

gaussian normal-distribution
2个回答
0
投票

在我看来,对高斯过程的理解是不透明的。 虽然从实验中获得了许多轨迹,但可以检查它们是否是高斯过程的结果,可以将它们建模为高斯过程并在估计平均值时找到平均值或误差。 但另一种方式是不可能的:即使一个人拥有高斯过程的精确模型,每个实验中的轨迹也会不同 - 因为过程中发生的事情会经历正态分布...... 因此,即使您可以形成过程的概率特征,也无法从概率过程中获得可预测的行为(给定轨迹,甚至不是一系列共享某些特征的轨迹)。


0
投票

您要求的第一个属性很容易实现:

  • 如果且仅当平均函数和方差函数在x = 0时消失时,GP的样本路径几乎肯定会满足属性f(0)= 0。
  • 请注意,这仅适用于非固定GP(当然,对于具有零均值和方差函数的普通GP)。
  • 这个标准布朗运动的典型例子是[0; + \ infty),其具有零均值函数和协方差函数k(x,y)= min(x,y)。
  • 从通用协方差函数k0开始,您可以使用条件公式获得此属性:k(x,y)= k0(x,y) - k0(x,0)k0(0,y)/ k0(0,0 )。

以上所有可以推广到任何属性,这些属性是函数的某些值的等式约束,或者是它们的线性组合。

关于仿射约束的调节是可能的,但更难:

  • 样本路径的单调性相当于对导数的无限多个积极性约束(每个点一个)。
  • 样本路径的凹度等效于二阶导数上的无限多个积极约束。
  • 可以通过在有限数量的此类约束上调节GP来强制执行这些属性的近似版本。然而,由此产生的过程不再是GP。例如,参见[1]以获得更多细节。
  • 我不知道是否有任何现成的包提出这个。

[1] S. Da Veiga和A. Marrel(2012),具有不等式约束的高斯过程建模,图卢兹数学科学学报,21(3),529-555。

© www.soinside.com 2019 - 2024. All rights reserved.