Un esempio pratico per MCMC


14

Stavo seguendo alcune lezioni relative a MCMC. Tuttavia, non trovo un buon esempio di come viene utilizzato. Qualcuno può darmi un esempio concreto. Tutto quello che posso vedere è che gestiscono una catena Markov e dicono che la sua distribuzione stazionaria è la distribuzione desiderata.

Voglio un buon esempio da cui è difficile campionare la distribuzione desiderata. Quindi creiamo una catena Markov. Voglio sapere come selezionare la matrice di transizione in modo che la sua distribuzione stazionaria, della catena Markov sia la distribuzione target Grazie


La teoria di base della catena di Markov viene utilizzata per mostrare che un particolare schema di campionamento avrà una distribuzione stazionaria che è la distribuzione articolare desiderata. Per l'esempio più semplice, il campionatore Gibbs di Vanilla simula da distribuzioni condizionali complete. I kernel di transizione corrispondenti, presi insieme, se soddisfano le condizioni di convergenza (spesso semplici da mostrare) possono essere facilmente dimostrati avere la distribuzione congiunta come distribuzione stazionaria. Allo stesso modo per Metropolis Hastings e così via. Sembra che le lezioni che stai guardando non spieghino come MCMC sia una catena di Markov
Glen_b -Restate Monica

Risposte:


3

Un buon esempio di distribuzione da cui è difficile campionare è il modello Hard-Core, vedere questa pagina per una panoramica:

http://www.mathematik.uni-ulm.de/stochastik/lehre/ss06/markov/skript_engl/node34.html

Questo modello definisce una distribuzione su griglie per alcuni n fissi , dove in ogni punto della griglia è possibile avere un valore di uno o zero. Affinché una griglia sia ammissibile con il modello hard-core, non è possibile avere un valore pari a 1 su due punti adiacenti sulla griglia.n×nn

L'immagine seguente mostra un esempio di configurazione ammissibile per una griglia nel modello hard-core. In questa immagine quelli sono mostrati come punti neri e gli zeri come bianchi. Si noti che non due punti neri sono adiacenti.8×8

Esempio di configurazione ammissibile per una griglia $ 8 \ times 8 $ nel modello hard-core

Credo che l'ispirazione per questo modello provenga dalla fisica, puoi pensare che ogni posizione nella griglia sia una particella e il valore in quella posizione che rappresenti carica elettrica o rotazione.

Vogliamo campionare uniformemente dalla popolazione di griglie ammissibili, cioè se è l'insieme di griglie ammissibili, vogliamo campionare e E tale cheEeE

p(e)=1|E|

dove è il numero di tutte le possibili configurazioni ammissibili.|E|

Già questo rappresenta una sfida, dato che stiamo prendendo in considerazione griglie, come possiamo determinare | E | il numero di griglie ammissibili? n×n|E|

Una delle cose belle di MCMC è che ti permette di campionare da distribuzioni in cui la costante di normalizzazione è difficile o impossibile da valutare.

Ti farò leggere il documento sui dettagli di come implementare MCMC per questo problema, ma è relativamente semplice.



2

Un altro problema scoraggiante nelle statistiche. La domanda è vecchia, ma gli esempi introduttivi online sono difficili da trovare. Consentitemi quindi di semplificare due grandi esempi nel caso in cui qualcuno segua la passeggiata casuale Markov di PageRank atterra qui confuso da MCMC e pieno di aspettative per una risposta facile da seguire. Quanto probabile? Questa potrebbe essere una domanda di follow-up.

FIRST EXAMPLE:

N(0,1) codice dal post qui per comodità e per le annotazioni.

La difficoltà sta nel rendersi conto che dopo aver attraversato tutti i passaggi meccanici, c'è solo un trucco magico: la decisione binaria di accettare o rifiutare un valore proposto .

xmean0sd 1rnorm(10000)

epsϵxixi+1runif(1, - eps, eps)xi .

Ogni valore proposto differirebbe quindi dal valore precedente in modo casuale e entro i limiti di [- eps,+ eps] .

ii+1

N(0,1)Xio+1 ) con il precedente (valore già accettato), (Xio), proprio come questo:

E prendiamo il rapporto di entrambi i valori: min(1, dnorm(candidate_value)/dnorm(x)). Poiché vogliamo una probabilità, il calcolo risultante non può andare oltre1, che si verifica ogni volta che il N(0,1) pdf a Xio+1 (valore candidato) è maggiore di a Xio, equivalenti all'accettazione automatica del valore proposto e alla spiegazione della min(1, ...)parte del codice. Altrimenti, più si avvicina il dnormvalore di valore proposto si è vicino al valore precedente , maggiori sono le probabilità che venga accettato.

Quindi abbiamo una probabilità di accettazione, ma dobbiamo prendere una decisione binaria (accettare il nuovo valore proposto o rifiutarlo). E qui arriva il trucco magico: se la probabilità calcolata min(1, dnorm(candidate_value)/dnorm(x))è maggiore di un runif(1)pareggio uniforme da0 per 1(il più vicino possibile al lancio di una moneta per un valore continuo), accettiamo e compiliamo l' x[i+1]ingresso della catena con il valore proposto ; altrimenti, lo riempiamo con una ripetizione del valore precedente , x[i]... L'idea sarebbe, meglio due dello stesso di uno troppo lontano nelle code.

Facciamo questo migliaia di volte e noi raccogliamo tutti questi valori (solo i valori accettati e ripetuti), e quando tracciamo l'istogramma, otteniamo una bella curva normale con un sdvicino1e centrato su 0.

Un ultimo punto: da dove iniziare? Probabilmente non rilevante, ma nella simulazione, inseriamo il primo valore come0, x = 0; vec[1] = xprima di passare in rassegna tutto il resto delle iterazioni e lasciare che il processo segua il suo corso.

SECOND EXAMPLE:

Questo è più interessante e fa riferimento alla stima dei parametri di una curva di regressione lineare calcolando le probabilità di log per i parametri casuali dati un set di dati . Tuttavia, l'esegesi delle linee di codice è costruita nella simulazione condensata salvata qui , seguendo passaggi molto simili al primo esempio.


Sono necessarie alcune correzioni minori: "le terre qui confuse dai CMCM " ... devono essere girate . " Rosenbluth-Hatings " .... probabilmente ha bisogno di una "s" in più. Direi che il primo esempio non è esattamente "difficile da campionare" (come fa la domanda). Entrambi i tuoi esempi sembrano essere Metropolis-Hastings (che è certamente importante), ma MCMC più di questo. Ad esempio, molte persone usano il campionamento di Gibbs, spesso tramite JAGS / BUGS / etc. Nessuna decisione in merito all'accettazione del passaggio proposto lì - ti muovi sempre.
Glen_b -Restate Monica

Ho corretto le "s" mancanti, l'ortografia isomerica di CMCM. Sbarazzarsi del collegamento ipertestuale eventualmente ingiustificato a YouTube per risolvere il problema del nome. Spiegato perché ho scelto il primo esempio da elaborare nonostante la specifica richiesta della (vecchia) domanda. Apprezzo che tu abbia sottolineato tutti questi problemi. Non sono sicuro delle implicazioni della tua ultima riga.
Antoni Parellada,

È semplicemente un riferimento alla linea " c'è solo un trucco magico: la decisione binaria di accettare o rifiutare un valore proposto "; sottolineare che non è una proprietà di tutti gli algoritmi MCMC. Questo non significa di per sé che c'è un problema con la tua risposta; puoi considerarlo un chiarimento se vuoi. Il bit isomerico era buono.
Glen_b -Restate Monica

1

Questo video di Youtube è davvero una bella visualizzazione di un semplice problema che è stato risolto usando MCMC.

La distribuzione di interesse è la distribuzione posteriore su possibili pendenze e intercettazioni in una regressione lineare (pannello in alto a destra). Alcune combinazioni di pendenze e intercettazioni sono molto probabili (cioè hanno un'alta probabilità di produrre i punti dati osservati e sono coerenti con i nostri a priori aspettative a ), quindi dovrebbero essere campionate frequentemente. Altre combinazioni sono improbabili (ad esempio se corrispondono a una linea blu che non attraversa la nuvola di punti dati) e dovrebbero essere campionate meno spesso.

Il grande pannello in basso a sinistra mostra il percorso intrapreso dalla catena di Markov attraverso uno spazio bidimensionale di pendenze e intercettazioni. Gli istogrammi mostrano riassunti unidimensionali dei progressi della catena finora. Una volta che la catena ha funzionato abbastanza a lungo, disponiamo di ottime stime delle distribuzioni per possibili valori di pendenza e intercettazione.

In questo caso, MCMC è eccessivo, ma ci sono alcuni problemi in cui una soluzione è difficile da scrivere e ha molto senso esplorare le possibilità con una catena Markov piuttosto che cercare di risolverlo direttamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.