ตีแล้วรัน MCMC


16

ฉันกำลังพยายามใช้อัลกอริทึม MCMC ที่ได้รับความนิยมและใช้งาน แต่ฉันมีปัญหาเล็กน้อยในการทำความเข้าใจว่าจะทำอย่างไร ความคิดทั่วไปมีดังนี้:

ในการสร้างข้อเสนอกระโดดเป็น MH เรา:

  • สร้างทิศทางจากการกระจายบนพื้นผิวของทรงกลมยูนิตOdO
  • สร้างระยะทางที่ลงนามตามพื้นที่ จำกัดλ

อย่างไรก็ตามฉันไม่มีความคิดว่าฉันควรนำไปใช้ใน R (หรือภาษาอื่น ๆ ) อย่างไร

ไม่มีใครมีตัวอย่างของรหัสที่จะชี้ให้ฉันไปในทิศทางที่ถูกต้องหรือไม่

BTW ฉันไม่สนใจห้องสมุดที่ใช้วิธีนี้ฉันต้องการลองและเขียนโค้ดเอง

ขอบคุณมาก.


1
ไม่เคยได้ยินอัลกอริทึมนี้มาก่อน แต่มันฟังดูน่าสนใจทีเดียว คุณสามารถให้ลิงค์ไปยังแหล่งอธิบายได้หรือไม่? ขอขอบคุณ !
steffen

@steffen นี่คือลิงค์ไปยังเอกสารต้นฉบับ - จริง ๆ แล้วรายงานทางเทคนิค ฉันไม่เคยใช้ขั้นตอนนี้เช่นกัน
csgillespie

1
อะไรคือข้อได้เปรียบของ hit and run MCMC เหนือวิธีอื่น? ความเร็วของการลู่เข้า?
RockScience

@fRed: นั่นเป็นเหตุผลที่ฉันเสนอเงินรางวัล ฉันได้อ่านเกี่ยวกับ Hit and run แล้ว แต่ไม่ทราบว่าในสถานการณ์ใดจะมีประโยชน์
csgillespie

3
ลิงก์เสียแล้ว
daknowles

คำตอบ:


11

ฉันไม่ได้ดูกระดาษที่คุณให้มา แต่ให้ฉันไปต่อไป:

หากคุณมีพื้นที่พารามิเตอร์ -dimensional คุณสามารถสร้างทิศทางแบบสุ่มdกระจายอย่างสม่ำเสมอบนพื้นผิวของหน่วยทรงกลมด้วยpd

x <- rnorm(p)
d <- x/sqrt(sum(x^2))

(cf Wiki )

จากนั้นใช้สิ่งนี้เพื่อสร้างข้อเสนอสำหรับสำหรับการสุ่มตัวอย่างปฏิเสธ (สมมติว่าคุณสามารถประเมินการกระจายสำหรับd ) ได้dd

สมมติว่าคุณเริ่มต้นในตำแหน่งที่และยอมรับdแล้วสร้างข้อเสนอyด้วยxdy

 lambda <- r<SOMEDISTRIBUTION>(foo, bar)
 y <- x + lambda * d

และทำ Metropolis-Hastings-Step เพื่อตัดสินใจว่าจะย้ายไปที่หรือไม่y

แน่นอนว่าสิ่งนี้สามารถทำงานได้ดีขึ้นอยู่กับการกระจายตัวของและราคาแพง (ซ้ำ) ประเมินความหนาแน่นของมันในขั้นตอนการสุ่มตัวอย่างการปฏิเสธ แต่เนื่องจากการสร้างข้อเสนอสำหรับdนั้นราคาถูกคุณอาจหนีไปได้dd


เพิ่มเพื่อประโยชน์ของ @ csgillespie:

จากสิ่งที่ฉันสามารถรวบรวมโดย googling, MCMC ที่ทำงานแล้วมีประโยชน์สำหรับการมิกซ์เสียงอย่างรวดเร็วหากคุณมีเป้าหมาย (หลายตัวแปร) ที่มีขอบเขตตามอำเภอใจ แต่ไม่จำเป็นต้องเชื่อมต่อการสนับสนุนเพราะมันช่วยให้คุณย้ายจากจุดใดก็ได้ ในการสนับสนุนซึ่งกันและกันในขั้นตอนเดียว เพิ่มเติมที่นี่และที่นี่


1
หากคำตอบนี้ไม่เป็นที่พอใจคุณสามารถอธิบายได้ว่าทำไม
John Salvatier

ฉันไม่แน่ใจเกี่ยวกับ @fred แต่เมื่อฉันเสนอเงินรางวัลฉันคิดว่าฉันต้องการข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับ MCMC ที่ได้รับผลกระทบและถูกเรียกใช้ ตัวอย่างเช่นปัญหาประเภทใดที่เหมาะสมที่สุด แน่นอนถ้าไม่มีคำตอบอื่น ๆ คำถามนี้จะชนะรางวัล
csgillespie

3
@csgillespie: ฉันแก้ไขคำตอบของฉันเพื่อรองรับความสนใจของคุณได้ดีขึ้น อย่าบอกว่าฉันไม่สมควรได้รับรางวัล ;)
fabians

2
ขอบคุณมากสำหรับลิงค์ หนึ่งในเหตุผลที่ฉันวางความโปรดปรานก็คือการค้นหาของ Google ของฉันเปิดขึ้นการอภิปรายทางคณิตศาสตร์ไม่กี่วิธี แต่น้อยในทางของการใช้งานจริง โปรดอย่าคิดว่าเล็กน้อยถ้าฉันรออีก 48 ชั่วโมงก่อนที่จะมอบรางวัล (มันเป็นความโปรดปรานที่ยิ่งใหญ่!)
csgillespie

4

ฉันเจอคำถามของคุณเมื่อฉันกำลังมองหาการอ้างอิงต้นฉบับสำหรับ Hit-and-Run ขอบคุณสำหรับสิ่งนั้น! ฉันเพิ่งรวบรวมการติดตั้งใช้งานที่พิสูจน์แล้วของแนวคิดเกี่ยวกับ Hit-and-Run สำหรับ PyMC ในตอนท้ายของบล็อกล่าสุดนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.