MCMC için pratik bir örnek


14

MCMC ile ilgili dersler veriyordum. Ancak, nasıl kullanıldığına dair iyi bir örnek bulamıyorum. Biri bana somut bir örnek verebilir mi? Tüm görebildiğim bir Markov zinciri çalıştırmak ve sabit dağılımının istenen dağılım olduğunu söylemek.

İstenilen dağılımın örneklenmesinin zor olduğu iyi bir örnek istiyorum. Bu yüzden bir Markov zinciri yaratıyoruz. Geçiş matrisinin nasıl seçileceğini bilmek istiyorum, böylece Markov zincirinin sabit dağılımı hedef dağılımdır.


Temel Markov zincir teorisi, belirli bir örnekleme şemasının, istenen eklem dağılımı olan sabit bir dağılıma sahip olacağını göstermek için kullanılır. En basit örnek için, vanilya Gibbs örnekleyici tam koşullu dağılımlardan simüle eder. Yakınsama koşullarını (genellikle gösterilmesi kolay) karşılarlarsa, birlikte alınan karşılık gelen geçiş çekirdeklerinin, sabit dağılım olarak eklem dağılımına sahip oldukları kolayca gösterilebilir. Metropolis Hastings için de benzer şekilde. Baktığınız dersler,
MCMC'nin

Yanıtlar:


3

Örneklemesi zor bir dağıtımın iyi bir örneği Hard-Core modelidir, genel bakış için bu sayfaya bakınız:

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

Bu model, bazı sabit için ızgaraları üzerinde bir dağılım tanımlar ; burada ızgaradaki her noktada bir veya sıfır değerine sahip olabilirsiniz. Bir ızgaranın sert çekirdekli model altında kabul edilebilir olması için, ızgaradaki iki bitişik noktanın her ikisinin de değeri 1 olamaz.nn×nn

Aşağıdaki görüntü , sabit çekirdekli model altında ızgara için kabul edilebilir bir yapılandırma örneği göstermektedir . Bu görüntüde siyah noktalar, sıfırlar beyaz olarak gösterilmiştir. İki siyah noktanın bitişik olmadığını unutmayın.8×8

Sabit çekirdekli model altında 8 $ / 8 $ ızgara için kabul edilebilir yapılandırma örneği

Bu model için ilhamın fizikten geldiğine inanıyorum, ızgaradaki her pozisyonun bir parçacık olduğunu ve bu pozisyondaki elektrik yükünü veya dönüşü temsil eden değeri düşünebilirsiniz.

Biz eğer olduğunu kabul şebekelerinin nüfus, yeknesak örneklemek istiyoruz kabul şebekelerinin kümesidir, biz örnek istiyoruz şekildedire EEeE

p(e)=1|E|

neredeizin verilen tüm yapılandırmaların sayısıdır.|E|

ızgaralarını düşündüğümüz göz önüne alındığında, bu zaten bir meydan okuma sunuyor , nasıl belirleyebilirizkabul edilebilir şebeke sayısı? | E |n×n|E|

MCMC ile ilgili güzel şeylerden biri, normalleştirme sabitinin değerlendirilmesinin zor veya imkansız olduğu dağıtımlardan örneklemenize izin vermesidir.

Bu sorun için MCMC'nin nasıl uygulanacağının ayrıntıları hakkındaki makaleyi okumanıza izin vereceğim, ancak nispeten basittir.



2

İstatistiklerde bir başka göz korkutucu sorun. Soru eskidir, ancak çevrimiçi tanıtım örneklerine ulaşmak zordur. Öyleyse , MCMC tarafından sarhoş ve burada takip edilmesi kolay bir cevap için beklentiyle dolu PageRank topraklarının Markov rastgele yürüyüşünü izleyen birinin olması durumunda iki harika örneği basitleştireyim . Ne kadar muhtemel? Bu bir takip sorusu olabilir.

FIRST EXAMPLE:

Sonrası standart normal dağılımı yeniden Hastings algoritması - Metropolis kullanılmıştır. Zor bir davadan uzak ama diseksiyon için iyi bir dava. Kolaylık ve ek açıklamalar için buradaki postadan kodu topladım .N(0,1)

İkili karar: zorluk tüm mekanik adımlarla geçtikten sonra, sadece bir büyülü hile olduğunu anlayarak olduğunu kabul veya reddetme bir teklif değer .

İstediğimiz şeyin , bir histogramda çizildiğinde ( ) merkezli ve standart sapması ( ) olan bir çan eğrisi gibi görünen bir grup değer ( ) oluşturmak olduğunu akılda tutmak iyi olur . Sorun şu ki önceden belirlenmiş parametrelerimiz yok; bu çok kolay olurdu, sadece çizgisinde bir şey çalıştırmak .0 1xmean0sd 1rnorm(10000)

Bunu, sahte sayı üreteçleri kullanarak rastgele (veya daha büyük, sonuçları çok fazla değiştirmeyecek) rasgele stokastik adımlar atarak yapıyoruz. Örnekte, adımın büyüklüğü eps, değerini veya önceki kabul edilen değerden ( ) sola veya sağa adımın boyutunu belirleyen tarafından ayarlanır . Bu , "zincir" in bir sonraki "bağlantısını" ( doldurmak için yeni bir önerilen değer üreten sürecin başlangıç ​​satırı olacaktır . Tamam, ben çıkarma ya da eklemek için bahsediyoruz .x i x i + 1 x iϵxixi+1runif(1, - eps, eps)xi

Dolayısıyla, önerilen her değer, önceki değerden rastgele bir şekilde ve sınırları dahilinde farklılık gösterir [- eps,+ eps].

Markov çekirdeğini girin . Biz zamanında çok belirli bir durumu üzerinde bir geçiş Markov matris içinde olduğu gibi, her nasılsa yeni önerilen değere geçiş olasılığını değerlendirmek gerekir süre sonunda yeni devletin olasılığı anlatır . Şüphe duyuyorsanız buraya gidin veya tüm "Nanna'ya kuantum fiziğini nasıl açıklarsınız?" soru türü (matrisler hoş görünmüyor mu? ;-)).i + 1ii+1

Bu kabul olasılığını itlaf edilen değerler için, önerilen yeni değerdeki ( ) yoğunluğunun yüksekliğini önceki (zaten kabul edilen değer) ile karşılaştırırız, ( ) gibi:x i + 1 x iN(0,1)xi+1xi

Ve ikimiz de değerlerin oranını atın: min(1, dnorm(candidate_value)/dnorm(x)). Bir olasılık istediğimizden, sonuç hesaplaması üzerine çıkamaz ; bu , (aday değer) ' deki , değerinden büyük olduğunda , önerilen değerin otomatik olarak kabul edilmesine karşılık gelir ve kodun bir kısmını açıklar . Aksi takdirde, daha yakın değeri , önerilen değeri olan bir önceki değeri , bunun daha yüksek bir oran olarak kabul edilir.N ( 0 , 1 ) p d f x i + 1 x i1N(0,1) pdfxi+1ximin(1, ...)dnorm

Kabul etme olasılığımız var, ancak ikili bir karar vermeliyiz (önerilen yeni değeri kabul et veya reddet). Ve işte sihir hilesi geliyor: Eğer olarak eşit min(1, dnorm(candidate_value)/dnorm(x))bir runif(1)çekişten daha büyük bir olasılık hesaplanırsa (sürekli bir değer için bir jetona yaklaştığında), zincirin girişini kabul eder ve doldururuz. önerilen değeri ; aksi takdirde, önceki değerin tekrarlanmasıyla doldururuz , ... Fikir, kuyruklardan birine göre çok daha iyisi.101x[i+1]x[i]

Bunu binlerce kez yapıyoruz ve tüm bu değerleri topluyoruz (sadece kabul edilen ve tekrarlanan değerler) ve histogramı çizdiğimizde,sd yakın ve merkezli ortalanmış güzel bir normal eğri elde ediyoruz .010

Son bir nokta: Nereden başlayalım? Muhtemelen alakalı, ama simülasyonunda, biz ilk değerindeki doldurmayın , tüm aracılığıyla tekrarlamalar geri kalanını döngü önce ve sürecin seyrini takip edelim.0x = 0; vec[1] = x

SECOND EXAMPLE:

Bu daha heyecan vericidir ve bir veri kümesi verilen rastgele parametreler için günlük olasılıklarını hesaplayarak doğrusal regresyon eğrisinin parametrelerini tahmin etmeye referans verir . Bununla birlikte, kod satırlarının telafisi , ilk örneğe çok benzer adımları izleyerek burada kaydedilen yoğunlaştırılmış simülasyonda inşa edilmiştir .


Birkaç küçük düzeltmeye ihtiyaç duyuldu: " buradaki CMCM'ler tarafından bozulan topraklar " ... " Rosenbluth-Hatings " .... muhtemelen orada fazladan bir "s" ye ihtiyaç duyar. İlk örneğin tam olarak "örneklemesi zor" olmadığını söyleyebilirim (soruda belirtildiği gibi). Her iki örnek de Metropolis-Hastings (kesinlikle önemlidir), ancak MCMC bundan daha fazlası. Bir örnek olarak, birçok insan Gibbs örneklemesini, genellikle JAGS / BUGS / vb. Burada önerilen adımın kabulü ile ilgili bir karar yok - her zaman hareket ediyorsunuz.
Glen_b

Ben eksik "s", CMCM izomerik yazım düzeltildi. Ad sorununu gidermek için YouTube'a yönelik olması muhtemel köprüden kurtuldum. (Eski) sorunun özel talebine rağmen neden ayrıntılı olarak ilk örneği seçtiğimi açıkladı. Tüm bu konulara dikkat çektiğiniz için teşekkür ederim. Son çizginizin sonuçları hakkında emin değilim.
Antoni Parellada

Bu sadece " büyülü bir hile var: önerilen bir değeri kabul etme veya reddetme ikili kararı " satırına gönderme ; tüm MCMC algoritmalarının bir özelliği olmadığını belirtmek için. Bu kendi başına cevabınızla ilgili bir sorun olduğu anlamına gelmez; isterseniz açıklama olarak kabul edebilirsiniz. İzomerik bit iyiydi.
Glen_b -Reinstate Monica

1

Bu Youtube videosu , MCMC kullanılarak çözülen basit bir sorunun gerçekten güzel bir görselleştirmesidir.

İlgilenilen dağılım, doğrusal regresyondaki (sağ üst panel) olası eğimler ve kesişmeler üzerindeki posterior dağılımdır. Bazı eğim ve kesişim kombinasyonları çok muhtemeldir (yani gözlemlenen veri noktalarını üretme olasılığı yüksektir ve öncelikli beklentilerimizle tutarlıdır ), bu nedenle sık sık örneklenmelidirler. Diğer kombinasyonlar olanaksızdır (örneğin, veri noktaları bulutundan geçmeyen mavi bir çizgiye karşılık geliyorlarsa) ve daha az örneklenmelidir.

Sol alt kısımdaki büyük panel, Markov zincirinin iki boyutlu bir eğim ve kesişim alanı boyunca izlediği yolu göstermektedir. Histogramlar, şu ana kadar zincirin ilerlemesinin tek boyutlu özetlerini göstermektedir. Zincir yeterince uzun süre çalıştıktan sonra, eğim ve kesişimin olası değerleri için dağılımları çok iyi tahmin ederiz.

Bu durumda, MCMC aşırı derecede doludur, ancak bir çözümün yazılmasının zor olduğu bazı problemler vardır ve doğrudan çözmeye çalışmak yerine bir Markov zinciri ile olasılıkları keşfetmek çok mantıklıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.