Processos Gaussianos: Como usar GPML para saída multidimensional

13

Existe uma maneira de executar a regressão gaussiana de processo na saída multidimensional (possivelmente correlacionada) usando GPML ?

No script de demonstração, só consegui encontrar um exemplo 1D.

Uma pergunta semelhante no CV que trata de casos de entrada multidimensional.


Examinei o livro deles para ver se encontrava alguma coisa. No capítulo 9 deste livro (seção 9.1), eles mencionaram este caso de múltiplas saídas. Eles mencionaram algumas maneiras de lidar com isso, um - usando um processo de ruído correlacionado e dois - coque (Correlacionado anteriormente).

Ainda não sei como incorporar qualquer uma dessas idéias na estrutura GPML.


Além disso, existem outras bibliotecas / estruturas GP que suportam saída multidimensional?

peixe firme
fonte
"Predicting Structured Data" fala sobre a utilização de SVMs no caso de uma classe (estimativa de densidade do kernel) em Kernels conjuntos entre entrada e saída. Dado que ambos são máquinas de kernel, essa abordagem deve funcionar. Eu encontrei um artigo mencionando algo semelhante. datamin.ubbcluj.ro/tr/2011/sogp.pdf minhas tentativas de ajustar algoritmos de aprendizado estruturado têm sido bastante abismais, então não tenho certeza de como isso se compara.
Jessica Collins

Respostas:

7

Acredito que os Processos Gaussianos Gêmeos são exatamente o que você está procurando. Não posso descrever o modelo melhor do que o resumo do artigo, então vou copiar e colá-lo:

Nós descrevemos processos gaussianos gêmeos (TGP) 1, um método genérico de previsão estruturada que usa anteriores do processo Gaussiano (GP) [2] em covariáveis ​​e respostas, ambas multivariadas, e estima resultados, minimizando a divergência de Kullback-Leibler entre dois GP modelados como distribuições normais em conjuntos de índices finitos de treinamento e testando exemplos, enfatizando o objetivo de que entradas semelhantes produzam percepções semelhantes e isso deve manter-se, em média, entre suas distribuições marginais. O TGP captura não apenas as interdependências entre covariáveis, como em um GP típico, mas também aquelas entre respostas, de modo que as correlações entre entradas e saídas são contabilizadas. O TGP é exemplificado, com resultados promissores, para a reconstrução de poses humanas em 3D a partir de sequências de vídeo monoculares e multicâmeras no recém-lançado benchmark HumanEva, onde atingimos, em média, um erro de 5 cm por marcador 3d para modelos treinados em conjunto, usando dados de várias pessoas e várias atividades. O método é rápido e automático: não requer criação manual da pose inicial, parâmetros de calibração da câmera ou a disponibilidade de um modelo corporal 3D associado a indivíduos humanos usados ​​para treinamento ou teste.

Os autores generosamente forneceram códigos e conjuntos de dados de exemplo para começar.

Yanshuai Cao
fonte
Bem-vindo ao site, @caoy. Você se importaria de fornecer um pouco de informação sobre o que está nesse link? Dessa forma, os leitores poderiam saber se vale a pena buscá-los, e isso significa que ainda há algo de valor aqui em caso de futuro linkrot.
gung - Restabelece Monica
@gung, thx, espero que o resumo faça o trabalho.
Yanshuai Cao
@caoy ... Você pode elaborar sobre a média da distribuição preditiva e a variação dos resultados nos Processos Gaussianos Gêmeos?
Sandipan Karmakar
3

Resposta curta A regressão para saída multidimensional é um pouco complicada e, no meu nível atual de conhecimento, não é incorporado diretamente na caixa de ferramentas GPML.

Resposta longa Você pode dividir seu problema de regressão de saída multidimensional em 3 partes diferentes.

  1. As saídas não estão relacionadas entre si - basta regredir as saídas individualmente como o script de demonstração para o caso 1d.
  2. As saídas estão relacionadas, mas não sabem a relação entre elas - você basicamente gostaria de aprender as relações internas entre as saídas. Como o livro menciona, o coKriging é uma boa maneira de começar. Existem outros softwares além do GPML que podem permitir diretamente a execução de cokriging, por exemplo. ooDace
  3. As saídas estão relacionadas e você conhece a relação entre elas - execute uma cokriging regular, mas você pode aplicar restrições rígidas entre as saídas aplicando as restrições no otimizador (enquanto você minimiza a probabilidade marginal do log), como dito por Hall & Huang 2001 ou aplique os relacionamentos na função anterior, conforme mencionado por Constantinescu & Anitescu 2013 .

Espero que ajude :)

Ankit Chiplunkar
fonte
2

Este é um módulo do scikit-learn que funcionou para mim surpreendentemente bom:

http://scikit-learn.org/stable/auto_examples/gaussian_process/plot_gp_regression.html

# Instanciate a Gaussian Process model
gp = GaussianProcess(corr='cubic', theta0=1e-2, thetaL=1e-4, thetaU=1e-1,
                     random_start=100)

# Fit to data using Maximum Likelihood Estimation of the parameters
gp.fit(X, y)

# Make the prediction on the meshed x-axis (ask for MSE as well)
y_pred, MSE = gp.predict(x, eval_MSE=True)
sigma = np.sqrt(MSE)
denfromufa
fonte
1

Eu estava procurando por Processos Gaussianos de múltiplas saídas e encontrei muitas maneiras de agir com ele, como método de convolução, método de modelagem de efeitos mistos e, mais recentemente, este Processos Gaussianos Gêmeos (TGP).

Tenho uma dúvida no conceito de Processos Gaussianos Gêmeos (TGP). Alguém pode me ajudar com isso?

y^p(y|y)(μ,σ2)σ2yy^y

Sandipan Karmakar
fonte