ทำความเข้าใจกับ MCMC และอัลกอริทึม Metropolis-Hastings


13

ในช่วงไม่กี่วันที่ผ่านมาฉันพยายามเข้าใจว่า Markov Chain Monte Carlo (MCMC) ทำงานอย่างไร โดยเฉพาะฉันพยายามทำความเข้าใจและใช้อัลกอริทึม Metropolis-Hastings จนถึงตอนนี้ฉันคิดว่าฉันมีความเข้าใจโดยรวมเกี่ยวกับอัลกอริทึม แต่มีบางสิ่งที่ยังไม่ชัดเจนสำหรับฉัน ฉันต้องการใช้ MCMC เพื่อให้พอดีกับบางรุ่นของข้อมูล ด้วยเหตุนี้ฉันจะอธิบายความเข้าใจของฉันเกี่ยวกับอัลกอริทึม Metropolis-Hastings สำหรับปรับเส้นตรงให้กับข้อมูลที่สังเกตได้ :f(x)=axD

1) ตรวจเดาการเริ่มต้นสำหรับ ตั้งค่านี้เป็นปัจจุบันของเรา( ) เพิ่มตอนท้ายของ Markov Chain ( ) ด้วยaaaa0aC

2) ทำซ้ำขั้นตอนการร้องหลายครั้ง

3) ประเมินโอกาสในปัจจุบัน ( ) ให้และDL0a0D

4) เสนอใหม่( ) โดยการสุ่มตัวอย่างจากการกระจายปกติกับและ\สำหรับตอนนี้คงที่aa1μ=a0σ=stepsizestepsize

5) ประเมินโอกาสใหม่ ( ) ให้และD a 1 DL1a1D

6) หากใหญ่กว่าให้ยอมรับเป็นใหม่ต่อท้ายและไปที่ขั้นตอนที่ 2L 0 a 1 a 0 CL1L0a1a0C

7) ถ้าน้อยกว่าสร้างตัวเลข ( ) ในช่วง [0,1] จากการแจกแจงแบบเดียวกันL 0 UL1L0U

8) หากมีขนาดเล็กกว่าความแตกต่างระหว่างสองโอกาส ( - ) ให้ยอมรับเป็นใหม่ต่อท้ายและไปที่ขั้นตอนที่ 2L 1 L 0 a 1 a 0 CUL1L0a1a0C

9) ถ้ามีค่ามากกว่าความแตกต่างระหว่างสองโอกาส ( - ) ให้ผนวกที่ส่วนท้ายของให้ใช้ไปให้ไปที่ขั้นตอนที่ 2L 1 L 0 a 0 C a 0UL1L0a0Ca0

10) สิ้นสุดการทำซ้ำ

11) ลบองค์ประกอบบางอย่างจากจุดเริ่มต้นของ (เฟสเบิร์นอิน)C

12) ตอนนี้ใช้ค่าเฉลี่ยของค่าในCเฉลี่ยนี้เป็นประมาณCa

ตอนนี้ฉันมีคำถามบางอย่างเกี่ยวกับขั้นตอนข้างต้น:

  • ฉันจะสร้างฟังก์ชันความน่าจะเป็นสำหรับแต่สำหรับฟังก์ชันใด ๆ ได้อย่างไร?f(x)=ax
  • นี่เป็นการใช้งานอัลกอริทึม Metropolis-Hastings ที่ถูกต้องหรือไม่?
  • การเลือกวิธีการสร้างหมายเลขสุ่มในขั้นตอนที่ 7 สามารถเปลี่ยนผลลัพธ์ได้อย่างไร
  • อัลกอริทึมนี้จะเปลี่ยนไปอย่างไรถ้าฉันมีพารามิเตอร์หลายตัว? ตัวอย่างเช่นถ้าผมมีรูปแบบ Bf(x)=ax+b

หมายเหตุ / เครดิต: โครงสร้างหลักของอัลกอริทึมที่อธิบายข้างต้นขึ้นอยู่กับรหัสจาก MPIA Python Workshop

คำตอบ:


11

ดูเหมือนว่ามีความเข้าใจผิดเกี่ยวกับอัลกอริทึม Metropolis-Hastings (MH) ในคำอธิบายของอัลกอริทึมของคุณ

ก่อนอื่นเราต้องเข้าใจว่า MH เป็นอัลกอริธึมการสุ่มตัวอย่าง ตามที่ระบุไว้ในวิกิพีเดีย

ในสถิติและฟิสิกส์เชิงสถิติอัลกอริทึม Metropolis – Hastings เป็นวิธีมาร์คอฟเชนมอนติคาร์โล (MCMC) สำหรับการหาลำดับของตัวอย่างสุ่มจากการแจกแจงความน่าจะเป็นซึ่งการสุ่มตัวอย่างโดยตรงนั้นยาก

ในการใช้อัลกอริทึม MH คุณต้องมีความหนาแน่นของข้อเสนอหรือการกระจายแบบกระโดด ซึ่งเป็นตัวอย่างที่ง่าย ถ้าคุณต้องการตัวอย่างจากการแจกจ่ายอัลกอริทึม MH สามารถนำมาใช้ดังนี้:f ( )Q(|)f()

  1. เลือกเริ่มต้นที่รัฐสุ่มx_0x0
  2. สร้างผู้สมัครจากx_0) Q ( | x 0 )xQ(|x0)
  3. คำนวณอัตราส่วน(x_0)α=f(x)/f(x0)
  4. ยอมรับเป็นสำนึกของมีโอกาส\ f αxfα
  5. ใช้เป็นสถานะเริ่มต้นใหม่และทำการสุ่มตัวอย่างต่อไปจนกว่าคุณจะได้ขนาดตัวอย่างที่ต้องการx

เมื่อคุณได้รับตัวอย่างคุณยังต้องเผามันและทำให้บางลง: เนื่องจากตัวอย่างทำงานแบบไม่แสดงอาการคุณจะต้องลบตัวอย่างแรก(เบิร์นอิน) และให้ตัวอย่างขึ้นอยู่กับคุณคุณต้องทำการย่อยซ้ำแต่ละซ้ำ (บาง)kNk

ตัวอย่างใน R สามารถพบได้ในลิงค์ต่อไปนี้:

http://www.mas.ncl.ac.uk/~ndjw1/teaching/sim/metrop/metrop.html

วิธีการนี้ส่วนใหญ่ใช้ในสถิติแบบเบย์สำหรับการสุ่มตัวอย่างจากการกระจายหลังของพารามิเตอร์แบบจำลอง

ตัวอย่างที่คุณใช้ดูเหมือนไม่ชัดเจนสำหรับฉันเนื่องจากไม่ใช่ความหนาแน่นเว้นแต่คุณจะ จำกัดในชุดที่ถูกล้อม ความประทับใจของฉันคือคุณมีความสนใจในการปรับเส้นตรงให้ตรงกับชุดของจุดที่ฉันอยากจะแนะนำให้คุณตรวจสอบการใช้อัลกอริทึม Metropolis-Hastings ในบริบทของการถดถอยเชิงเส้น ลิงค์ต่อไปนี้นำเสนอแนวคิดเกี่ยวกับวิธีการใช้ MH ในบริบทนี้ (ตัวอย่าง 6.8):xf(x)=axx

Robert & Casella (2010), แนะนำวิธีการ Monte Carlo ด้วย R , Ch. 6, "อัลกอริธึมมหานคร - เฮสติ้งส์"

นอกจากนี้ยังมีคำถามมากมายที่มีตัวชี้ไปยังการอ้างอิงที่น่าสนใจในเว็บไซต์นี้พูดคุยเกี่ยวกับความหมายของฟังก์ชันความน่าจะเป็น

ชี้เป็นไปได้ที่น่าสนใจอีกประการหนึ่งคือแพคเกจ R mcmcซึ่งดำเนินขั้นตอนวิธี MH metrop()กับข้อเสนอแบบเกาส์ในคำสั่ง


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