escolha de parâmetros anteriores para mistura variacional de gaussianos

7

Estou implementando uma mistura variada de baunilha de gaussianos multivariados, conforme o capítulo 10 do Reconhecimento de padrões e aprendizado de máquina (Bishop, 2007).

A abordagem bayesiana requer a especificação de (hiper) parâmetros para o Gaussian-inverso-Wishart antes:

  • α0 (parâmetro de concentração do Dirichlet anterior);
  • ν0 (graus de liberdade de uma distribuição inversa de Wishart);
  • β0 (pseudo-observações para a distribuição Wishart inversa gaussiana);
  • m0 (média da distribuição gaussiana).
  • W0 (matriz de escala para o Wishart inverso).

Escolhas comuns são α0=1, ν0=d+1, β0=1, m0=0, W0=Id, Onde d é a dimensionalidade do espaço.

Sem surpresa, o posterior pode depender fortemente da escolha dos parâmetros (em particular, acho que W0 tem um grande impacto no número de componentes, muito mais do que α0) Param0 e W0, as opções acima só fazem sentido se os dados tiverem sido normalizados.

Seguindo uma espécie de abordagem empírica de Bayes, eu estava pensando em definir m0 e W01 igual à média empírica e à matriz de covariância empírica dos dados (para os últimos, talvez eu pudesse considerar apenas a diagonal; além disso, preciso multiplicar a matriz de covariância da amostra por ν0 0) Isso seria sensato? Alguma sugestão sobre outros métodos razoáveis ​​para definir os parâmetros? (sem passar por Bayes e DPGMM totalmente hierárquicos)

(Existe uma pergunta semelhante aqui , mas nenhuma resposta é relevante para minha pergunta.)

lacerbi
fonte

Respostas:

2

Os bons antecedentes dependem do seu problema real - em particular, não acredito que haja padrões verdadeiramente universais. Uma boa maneira é tentar formular (possivelmente fraco e vago) conhecimento específico do domínio sobre o processo que gerou seus dados, por exemplo:

  • "É altamente improvável que tenha mais de 12 componentes"
  • "É altamente improvável observar valores maiores que 80"

Observe que esses geralmente não devem ser informados pelos dados reais que você coletou, mas pelo que você seria capaz de dizer antes de coletar os dados. (por exemplo, os dados representam temperaturas externas em graus Celsius, portanto, provavelmente[-50.,80]mesmo antes de analisar os dados). Também é aceitável motivar seus anteriores pelo maquinário computacional que você usa (por exemplo, coletarei 100 pontos de dados, portanto, posso assumir com segurança que é improvável que tenha mais de 10 componentes, pois não tenho dados suficientes para localizar mais componentes)

Algumas dessas declarações podem ser traduzidas diretamente em anteriores - por exemplo, você pode definir m0 0 e W0 0-1 1 de modo que 95% da massa anterior esteja acima da faixa de valores esperada.

Para os parâmetros menos intuitivos (ou apenas como outra verificação de robustez), você pode seguir o documento de fluxo de trabalho Visualização em Bayesiano e fazer verificações preditivas anteriores : isso significa que você simula um grande número de novos conjuntos de dados a partir do seu anterior. Você pode visualizá-los para ver se eles

  1. não viole suas expectativas com muita frequência (é bom deixar espaço para surpresas, visando, assim, algo como 90% ou 95% das simulações dentro de suas restrições)
  2. caso contrário, cubra todo o espectro de valores razoavelmente bem
Martin Modrák
fonte
Obrigado. Esta é uma boa resposta (manual) e eu concordo que geralmente os anteriores não devem ser informados pelos dados, mas na prática eles podem muito bem ser - veja Bayes empírico (onde, é claro, o caminho bayesiano correto seria definir um modelo hierárquico com hiperpriors, que não são afetados pelos dados e marginalizam sobre eles). Em outras palavras, minha pergunta original era perguntar sobre tais hiperpriorias e aproximações heurísticas dos mesmos.
31818 lacerbi
0

Se você estiver interessado em desempenho acima da elegância, poderá definir alguma medida empírica de qualidade do ajuste e executar uma pesquisa de hiperparâmetro para maximizá-la.

jon_simon
fonte