Fiz o download do código GPML Matlab mais recente e o código GPML Matlab e li a documentação e executei a demonstração de regressão sem problemas. No entanto, estou tendo dificuldade em entender como aplicá-lo a um problema de regressão com o qual me deparo.
O problema de regressão é definido da seguinte maneira:
Seja um vetor de entrada e seja seu destino correspondente. O conjunto de entradas é organizado em uma matriz e seus destinos correspondentes são armazenados em uma matriz , com sendo o valor alvo médio em .
Desejo treinar um modelo GPR usando a função exponencial ao quadrado:
,
onde é igual a se e caso contrário. Os hiperparâmetros são com sendo o nível de ruído assumido nos dados de treinamento e é a escala de comprimento.
Para treinar o modelo, preciso minimizar a probabilidade marginal de log negativa em relação aos hiperparâmetros:
onde c é uma constante e a matriz é uma função dos hiperparâmetros (veja a equação k (xi, xj) = ...).
Com base na demonstração do site GPML, minha tentativa de implementar isso usando o código GPML Matlab está abaixo.
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 contém as entradas de treinamento
X2 contém as entradas de teste
Y1 contém as metas de treinamento
Y2r são as estimativas da aplicação do modelo
n é o índice usado para regredir cada elemento no vetor de saída
Dado o problema, esta é a maneira correta de treinar e aplicar o modelo GPR? Caso contrário, o que preciso alterar?