GAMES-UChile / mogptk

Multi-Output Gaussian Process Toolkit
MIT License
164 stars 43 forks source link

MOHSM has Cholesky problems #45

Open tdewolff opened 2 years ago

tdewolff commented 2 years ago

El siguiente ejemplo a veces cae, @maltamiranomontero puedes verlo tú? Seguramente hay un problema en el modelo o en los límites de los parámetros (aunque no veo nada raro con los valores de los parámetros cuando se cayó). Esto pasa con dos canales y yo creo que la matriz de la covarianza está mal (pero no estoy seguro). Algunos valores son más grandes que el diagonal, que hace que la matriz no es positiva semi-definitiva.

import numpy as np
import pandas as pd
import mogptk

t = np.linspace(1.0, 200.0, 200)

data = pd.read_csv("data_BM.csv")
dataset = mogptk.DataSet(t, [np.array(data['a']), np.array(data['b']), np.array(data['c']), np.array(data['d'])], names=['Channel 1','Channel 2', 'Channel 3','Channel 4'])
dataset.transform(mogptk.TransformNormalize())
dataset.rescale_x()

for data in dataset:
    data.remove_randomly(pct=0.80)
dataset = dataset[0:2]

model = mogptk.MOHSM(dataset, Q=1, P=1, rescale_x=True)
model.init_parameters('BNSE')
model.print_parameters()
[data_BM.csv](https://github.com/GAMES-UChile/mogptk/files/8525944/data_BM.csv)
model.train(iters=1000, lr=0.1, verbose=False)
model.predict()

ERROR: torch.linalg_cholesky: The factorization could not be completed because the input is not positive-definite (the leading minor of order 41 is not positive-definite).