Estou estimando 15 parâmetros do meu modelo usando uma abordagem bayesiana e um método de Markov Chain Monte Carlo (MCMC). Meus dados após a execução de uma cadeia MCMC de 100000 amostras são, portanto, uma tabela 100000 × 15 de valores de parâmetros.
Quero encontrar regiões de maior densidade de 15 dimensões da minha distribuição posterior.
Meu problema: o agrupamento de amostras para atribuí-las a HDRs (por exemplo, usando o cluster baseado em densidade abaixo) precisa de uma matriz de distância de todas as amostras. Para 100000 amostras, essa matriz levaria 37 GiB de RAM, o que eu não tenho, sem falar no tempo de computação. Como posso encontrar meus HDRs usando quantidades razoáveis de recursos de computação? Alguém deve ter tido esse problema antes ?!
Editado para adicionar: de acordo com esta pergunta do SO e a página da Wikipedia do DBSCAN, o DBSCAN pode ser reduzido para complexidade de tempo e complexidade de espaço usando um índice espacial e evitando uma matriz de distância. Ainda está procurando uma implementação ou uma descrição dela ...
Regiões multivariadas de maior densidade usando cluster baseado em densidade (DBSCAN)
AX% da região de densidade mais alta é a região de uma distribuição que abrange X% da massa de probabilidade. Como as amostras colhidas por um método MCMC aprovam com uma frequência (assintoticamente) proporcional à distribuição posterior pesquisada, meu X% HDR também abrange X% das minhas amostras.
Planejei usar o algoritmo de agrupamento baseado em densidade DBSCAN para agrupar minhas amostras porque a densidade das amostras está diretamente relacionada à altura do pico do meu posterior.
Em analogia com o método de Hyndman (1996) ( papel , questão SO ), planejei aumentar a distância máxima que uma única amostra pode ter de um cluster para ser considerada parte dela iterativamente até que X% de minhas amostras façam parte de alguns grupo:
Após essa etapa, eu calcularia o intervalo de cada cluster em cada dimensão como uma maneira de apresentar minhas regiões de maior densidade.
Neste exemplo, você poderá ver que o 80% HDR inclui duas regiões distintas, enquanto o 50% HDR contém apenas um cluster. Eu seria capaz de visualizar isso como mostrado abaixo, porque o gráfico acima não é aplicável a mais de duas dimensões:
Respostas:
Encontrei um Wrapper Matlab para a ANN . ANN é uma biblioteca para pesquisas aproximadas de vizinhos mais próximos ( página inicial ). Além dos parâmetros usuais de uma consulta de região de índice espacial, ele usa um parâmetro de erro adicional
eps
que fornece a "aproximação" da pesquisa: um vizinho mais próximo retornado estará, na maioria das1+eps
vezes, mais distante do ponto de consulta que o verdadeiro (não aproximado) mais próximo vizinho. Procure o termo "erro vinculado" no Manual do Programador para obter informações sobreeps
.Isso permite que eu inclua uma pesquisa rápida de vizinhos mais próximos na minha implementação do DBSCAN, o que acelera o processo descrito na minha pergunta por um período viável. Fornecerei um link assim que a implementação estiver concluída.
fonte