Je travaille sur un projet de recherche lié à l'optimisation et j'ai récemment eu l'idée d'utiliser MCMC dans ce cadre. Malheureusement, je suis relativement nouveau dans les méthodes MCMC, donc j'ai eu plusieurs questions. Je vais commencer par décrire le problème puis poser mes questions.
Le problème se résume à l' estimation de la valeur attendue d'une fonction de coût où ω = ( ω 1 , ω 2 , . . . Ω h ) est un h variable de -dimentional aléatoire avec une densité f ( ω ) .
Dans notre cas, il n'existe pas de version sous forme fermée de . Cela signifie que nous devons utiliser des méthodes de Monte Carlo pour approximer la valeur attendue. Malheureusement, il s'avère que les estimations de E [ c ( ω ) ] qui sont générées à l'aide des méthodes MC ou QMC ont trop de variance pour être utiles dans un cadre pratique.
Une idée que nous avons dû utiliser une distribution d'échantillonnage d'importance pour générer des points d'échantillonnage qui produiront une estimation de faible variance de . Dans notre cas, la distribution d'échantillonnage d'importance idéale, g ( ω ) , doit être à peu près proportionnelle à c ( ω ) f ( ω ) . Voyant comment g ( ω ) est connu jusqu'à constante, je me demande si je peux utiliser MCMC avec la distribution de proposition c ( ω ) f ( ω )pour éventuellement générer des échantillons à partir de .
Mes questions ici sont:
MCMC peut-il être utilisé dans ce paramètre? Si oui, quelle méthode MCMC serait appropriée? Je travaille dans MATLAB, j'ai donc une préférence pour tout ce qui a déjà une implémentation MATLAB.
Y a-t-il des techniques que je peux utiliser pour accélérer la période de rodage pour MCMC. Et comment puis-je savoir que la distribution stationnaire a été atteinte? Dans ce cas, il faut en fait un peu de temps pour calculer pour un ω donné .
la source
Réponses:
Je me souviendrai toujours, que MCMC n'est qu'un outil d'intégration numérique (et plutôt inefficace). Ce n'est pas quelque chose de magique / mystique. Il est très utile car il est relativement facile à appliquer. Il ne nécessite pas beaucoup de réflexion par rapport à certaines autres techniques d'intégration numérique. Par exemple, vous n'avez pas à faire de dérivés. Il suffit de générer des "nombres aléatoires".
Cependant, comme toute méthode d'intégration numérique, ce n'est pas un outil universel. Il y a des conditions quand c'est utile et des conditions quand ça ne l'est pas.
Il peut être plus judicieux de mettre en place une autre technique. Selon la taille de , la vitesse de votre ordinateur et le temps que vous êtes prêt à attendre pour obtenir des résultats. Une grille uniforme peut faire le travail (bien que cela nécessite un petit h ou une longue période d'attente). Le «travail» consiste à évaluer l'intégrale - l'équation ne se soucie pas de la signification que vous ou moi attachons au résultat (et donc peu importe si nous avons obtenu le résultat au hasard ou non).h h
De plus, si vos estimations de sont tout à fait précis, le f ( ω ) sera fortement atteint un sommet et ressemble beaucoup à une fonction delta, de sorte que l'intégrale est effectivement substitution ω → ω m un x .ω F( ω ) ω → ωm a x
Une autre technique d'intégration numérique utilise une série de taylor sous l'intégrale.F( ω ) ≈ f( ωm a x) + ( ω - ωm a x) f′( ωm a x) + 12( ω - ωm a x)2F′ ′( ωm a x) + …
C'est une stratégie utile lorsque les moments de sont facilement obtenus.ω
Edwin Jaynes a une belle citation à ce sujet:
chaque fois qu'il y a une façon aléatoire de faire quelque chose, il y a une manière non aléatoire qui donne de meilleurs résultats, mais nécessite plus de réflexion
Une façon «plus réfléchie» consiste à utiliser «MCMC stratifié» pour faire l'intégrale. Donc, plutôt que de choisir "au hasard" un point sur tout l'espace des paramètres: divisez-le en "strates". Ces "strates" doivent être choisies de manière à obtenir une bonne plage de la partie haute de l'intégrale. Ensuite, échantillonnez au hasard dans chaque strate. Mais cela vous obligera à écrire votre propre code, j'imagine (c'est-à-dire plus de réflexion).
la source
Il n'y a aucune indication que vos variables ici sont corrélées, donc je ne sais pas pourquoi vous utiliseriez MCMC par opposition à Monte Carlo normal. Il existe de nombreuses méthodes d'échantillonnage différentes, y compris l'échantillonnage stratifié mentionné (hypercube latin) et QMC. Les méthodes de quadrature clairsemée sont très bonnes si la dimension du problème n'est pas trop élevée (pas plus de 10) car les grilles de quadrature clairsemées se développent géométriquement (malédiction de dimensionnalité).
Mais il semble que vous soyez sur la bonne voie en ce qui concerne l'échantillonnage d'importance. La clé ici est de choisir une distribution biaisée qui a une grande probabilité concentrée près de votre région d'intérêt et qui a des queues plus épaisses que la distribution nominale.
Je voudrais ajouter qu'il s'agit d'un problème de recherche ouvert, donc si vous pouvez trouver quelque chose de bon, cela serait d'un grand intérêt pour la communauté!
la source
En outre, vous pouvez rechercher des techniques de réduction de variance dans le domaine de l'intégration MC. Un grand ensemble autonome de ressources sont les chapitres de livres gratuits disponibles auprès d'Art Owen à Stanford. Plus précisément les chapitres 8, 9 et 10.
Vous y trouverez des traitements approfondis d'échantillonnage adaptatif, de récursivité et d'autres techniques.
la source