Skip to contents

The covariance between the values of two tasks factorises into an inter-task matrix times an input kernel, so the joint covariance is a Kronecker product. A diagonal task covariance means the tasks share nothing and the model collapses to independent single-task GPs – the tests check that collapse exactly, because it is the only way to be sure the Kronecker indexing is the right way round.

Usage

Gpmlt(
  X,
  y_tasks,
  X_test = NULL,
  task_cov = NULL,
  lengthscale = 1,
  variance = 1,
  noise = 0.01
)

Arguments

X

Inputs shared by every task, one row per point.

y_tasks

Matrix of observations, one row per task.

X_test

Test inputs; the training inputs by default.

task_cov

Inter-task covariance; the identity by default.

lengthscale, variance, noise

GP hyperparameters.

Value

List with estimate, mean, loglik, tasks, n, method.

Details

Formula: cov(f_l(x), f_m(x')) = K^f_{lm} k^x(x, x').

References

Bonilla, Chai and Williams (2008), Multi-task Gaussian process prediction, NIPS 20, eqs. (1)-(2).

Examples

Gpmlt(X = 5L, y_tasks = c(1, 2, 3, 4, 5, 6, 7, 8))
#> $estimate
#> [1] 0.990099
#> 
#> $mean
#>          [,1]
#> [1,] 0.990099
#> [2,] 1.980198
#> [3,] 2.970297
#> [4,] 3.960396
#> [5,] 4.950495
#> [6,] 5.940594
#> [7,] 6.930693
#> [8,] 7.920792
#> 
#> $loglik
#> [1] -108.3814
#> 
#> $tasks
#> [1] 8
#> 
#> $n
#> [1] 1
#> 
#> $method
#> [1] "K = K^f (x) K^x, Bonilla, Chai & Williams (2008) eqs. (1)-(2)"
#> 
#> attr(,"class")
#> [1] "morie_rich_result" "list"