Ganhos de eficiência - explicando o milagre
Mais detalhes de como consegui essa redução de tempo. O estimador que eu estou utilizando é um estimador baseado em simulação, e a idéia básica é substituir uma verossimilhança que não existe de forma analítica (no meu caso ela tem dimensão infinita) por aproximações baseadas em simulações. No meu problema isso era uma das dificuldades, já que existe um parâmetro que define cada trajetória de choques simuladas. Em problemas usuais de inferência indireta isso não é um problema já que as trajetórias são fixas dentro de cada iteração do método.
O problema é que cada trajetória de choques era relativamente demorada, já que é baseada em uma decomposição por wavelets para cada parâmetro. O que fiz para otimizar esse passo não foi gerar cada trajetória on the fly e gerar uma mega matriz com um número grande trajetórias simuladas para um grid fino de valores desse parâmetro, consistentes com a precisão na estimação. Essa matriz era carregada na memória, e assim pode ser acessada rapidamente.
O segundo passo foi mudar a rotina de otimização. Eu tinha um problema com 3 restrições de intervalo e uma restrição de desigualdade. Para isso precisava de um algoritmo de minimização com restrições, e eu estava usando diretamente um desses, e eles são intensivos em cálculo para cada iteração. O que fiz foi reescrever a função objetivo colocando diretamente as restrições através de tranformações de parâmetros, e assim consegui utilizar um algoritmo de otimização mais simples e muito mais rápido, usando uma variação do algoritmo de Nelder-Mead que é mais robusto.
Mas acho que dá para otimizar mais um pouco.
O problema é que cada trajetória de choques era relativamente demorada, já que é baseada em uma decomposição por wavelets para cada parâmetro. O que fiz para otimizar esse passo não foi gerar cada trajetória on the fly e gerar uma mega matriz com um número grande trajetórias simuladas para um grid fino de valores desse parâmetro, consistentes com a precisão na estimação. Essa matriz era carregada na memória, e assim pode ser acessada rapidamente.
O segundo passo foi mudar a rotina de otimização. Eu tinha um problema com 3 restrições de intervalo e uma restrição de desigualdade. Para isso precisava de um algoritmo de minimização com restrições, e eu estava usando diretamente um desses, e eles são intensivos em cálculo para cada iteração. O que fiz foi reescrever a função objetivo colocando diretamente as restrições através de tranformações de parâmetros, e assim consegui utilizar um algoritmo de otimização mais simples e muito mais rápido, usando uma variação do algoritmo de Nelder-Mead que é mais robusto.
Mas acho que dá para otimizar mais um pouco.
1 Comments:
Márcio Laurini,
Li a pouco, via internet mesmo, já que estou aqui no meio da selva, 200 km de Belém-PA, o caderno MAIS da FOLHA, no qual provoca debates entre a maneira de pensar a ECONOMIA. Por exemplo, para o historiador britânico Tony Judt, o mundo assiste aos últimos momentos da hegemonia dos economistas ortodoxos no debate de políticas públicas, o que não acredito. Também tem uma questão “Há alternativas, novos temas ou enfoques que devam ser incorporados ao ensino de economia?” respondida por quatro colegas com diferentes visões, mas que realmente nos faz PENSAR no que devemos MUDAR na maneira de estudar ECONOMIA. Caso você tenha interesse, deixo aqui a dica.
Um abraço de seu leitor,
João Melo, direto da selva!
Postar um comentário
<< Home