J'ai téléchargé le code GPML Matlab le plus récent Code GPML Matlab et j'ai lu la documentation et exécuté la démonstration de régression sans aucun problème. Cependant, j'ai du mal à comprendre comment l'appliquer à un problème de régression auquel je suis confronté.
Le problème de régression est défini comme suit:
Soit un vecteur d'entrée et sa cible correspondante. L'ensemble des entrées est organisé en une matrice et leurs cibles correspondantes sont stockées dans une matrice , avec étant la valeur cible moyenne dans .
Je souhaite former un modèle GPR utilisant la fonction exponentielle au carré:
,
où est égal à si et sinon. Les hyperparamètres sont avec étant le niveau de bruit supposé dans les données d'entraînement et est l'échelle de longueur.
Pour former le modèle, je dois minimiser la probabilité marginale logarithmique négative par rapport aux hyperparamètres:
où c est une constante et la matrice est une fonction des hyperparamètres (voir équation k (xi, xj) = ...).
Sur la base de la démo donnée sur le site Web GPML, ma tentative d'implémenter cela en utilisant le code GPML Matlab est ci-dessous.
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 contient les entrées de formation
X2 contient les entrées de test
Y1 contient les objectifs d'entraînement
Y2r sont les estimations de l'application du modèle
n est l'indice utilisé pour régresser chaque élément du vecteur de sortie
Étant donné le problème, est-ce la bonne façon de former et d'appliquer le modèle GPR? Sinon, que dois-je changer?