Ich habe den neuesten GPML-Matlab-Code heruntergeladen. Ich habe die Dokumentation gelesen und die Regressionsdemo ohne Probleme ausgeführt. Ich habe jedoch Schwierigkeiten zu verstehen, wie ich es auf ein Regressionsproblem anwenden kann, mit dem ich konfrontiert bin.
Das Regressionsproblem ist wie folgt definiert:
Sei ein Eingabevektor und y i ∈ R 25 sein entsprechendes Ziel. Die Menge von M Eingängen ist in einer Matrix X = [ x 1 , … , x M ] ⊤ angeordnet und ihre entsprechenden Ziele sind in einer Matrix Y = [ y 1 - ˉ y , … , y M - ˉ y ] ⊤ gespeichert . mit ˉ yDies ist der mittlere Zielwert in .
Ich möchte ein GPR-Modell mit der quadratischen Exponentialfunktion trainieren:
,
Dabei ist gleich wenn und andernfalls . Die Hyperparameter sind wobei der angenommene Geräuschpegel in den Trainingsdaten und die Längenskala ist. 1 i = j 0 θ = ( α , β , γ ) γ β
Um das Modell zu trainieren, muss ich die negative logarithmische Grenzwahrscheinlichkeit in Bezug auf die Hyperparameter minimieren:
Dabei ist c eine Konstante und die Matrix eine Funktion der Hyperparameter (siehe Gleichung k (xi, xj) = ...).
Basierend auf der Demo auf der GPML-Website ist mein Versuch, dies mithilfe des GPML-Matlab-Codes zu implementieren, unten aufgeführt.
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 enthält die Trainingseingaben
X2 enthält die Testeingänge
Y1 enthält die Trainingsziele
Y2r sind die Schätzungen aus der Anwendung des Modells
n ist der Index, mit dem jedes Element im Ausgabevektor zurückgeführt wird
Ist dies angesichts des Problems der richtige Weg, um das GPR-Modell zu trainieren und anzuwenden? Wenn nicht, was muss ich ändern?