He descargado el código GPML Matlab más reciente GPML Matlab code y he leído la documentación y ejecuté la demostración de regresión sin ningún problema. Sin embargo, estoy teniendo dificultades para entender cómo aplicarlo a un problema de regresión al que me enfrento.
El problema de regresión se define de la siguiente manera:
Sea un vector de entrada y sea su objetivo correspondiente. El conjunto de entradas se organiza en una matriz y sus objetivos correspondientes se almacenan en una matriz , con \ mathbf {\ bar {y}} es el valor objetivo medio en \ mathbf {Y} .
Deseo entrenar un modelo GPR usando la función exponencial al cuadrado:
,
donde es igual a si y contrario. Los hiperparámetros son siendo el nivel de ruido supuesto en los datos de entrenamiento y es la escala de longitud.
Para entrenar el modelo, necesito minimizar la probabilidad marginal logarítmica negativa con respecto a los hiperparámetros:
donde c es una constante y la matriz es una función de los hiperparámetros (ver ecuación k (xi, xj) = ...).
Basado en la demostración dada en el sitio web GPML, mi intento de implementar esto usando el código GPML Matlab está a continuación.
covfunc = @covSEiso;
likfunc = @likGauss;
sn = 0.1;
hyp.lik = log(sn);
hyp2.cov = [0;0];
hyp2.lik = log(0.1);
hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, X1, Y1(:, n));
exp(hyp2.lik)
nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, X1, Y1(:, n));
[m s2] = gp(hyp2, @infExact, [], covfunc, likfunc, X1, Y1(:, n), X2);
Y2r(:, n) = m;
X1 contiene las entradas de entrenamiento
X2 contiene las entradas de prueba
Y1 contiene los objetivos de entrenamiento
Y2r son las estimaciones de la aplicación del modelo.
n es el índice utilizado para hacer retroceder cada elemento en el vector de salida
Dado el problema, ¿es esta la forma correcta de entrenar y aplicar el modelo GPR? Si no, ¿qué necesito cambiar?