Saya telah mengunduh kode GPML Matlab terbaru. Kode GPML Matlab dan saya telah membaca dokumentasi dan menjalankan demo regresi tanpa masalah. Namun, saya mengalami kesulitan memahami bagaimana menerapkannya pada masalah regresi yang saya hadapi.
Masalah regresi didefinisikan sebagai berikut:
Membiarkan menjadi vektor input dan menjadi target yang sesuai. Sekumpulan dari input disusun menjadi sebuah matriks dan target yang sesuai disimpan dalam matriks , dengan menjadi nilai target rata - rata di .
Saya ingin melatih model GPR menggunakan fungsi eksponensial kuadrat:
,
dimana sama dengan jika dan jika tidak. Hyperparameter adalah dengan diasumsikan tingkat kebisingan dalam data pelatihan dan adalah skala panjang.
Untuk melatih model, saya perlu meminimalkan kemungkinan marginal log negatif sehubungan dengan hyperparameter:
di mana c adalah konstanta dan matriks adalah fungsi dari hyperparameters (lihat persamaan k (xi, xj) = ...).
Berdasarkan demo yang diberikan di situs web GPML, upaya saya untuk menerapkan ini menggunakan kode Matlab GPML ada di bawah ini.
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 berisi input pelatihan
X2 berisi input tes
Y1 berisi target pelatihan
Y2r adalah perkiraan dari penerapan model
n adalah indeks yang digunakan untuk mundur setiap elemen dalam vektor output
Mengingat masalahnya, apakah ini cara yang benar untuk melatih dan menerapkan model GPR? Jika tidak, apa yang harus saya ubah?