การตรวจหา Switchpoint ด้วยการโปรแกรมที่น่าจะเป็น (pymc)


9

ฉันกำลังอ่านการเขียนโปรแกรมน่าจะเป็นและวิธีเบส์สำหรับแฮกเกอร์ "หนังสือ" ฉันได้อ่านบทไม่กี่บทและฉันก็คิดในบทแรกที่ตัวอย่างแรกของ pymc ประกอบด้วยการตรวจสอบ witchpoint ในข้อความ ในตัวอย่างว่าตัวแปรสุ่มเพื่อระบุว่าเมื่อ switchpoint ที่เกิดขึ้นจะถูกระบุด้วย\หลังจากขั้นตอน MCMC การแจกแจงหลังของ จะได้รับ:ττป้อนคำอธิบายรูปภาพที่นี่

ประการแรกสิ่งที่สามารถเรียนรู้ได้จากกราฟนี้คือมีความเป็นไปได้เกือบ 50% ที่จุดเปลี่ยนเกิดขึ้นในวันที่ 45 แม้ว่าจะเกิดอะไรขึ้นถ้าไม่มีจุดเปลี่ยน แทนที่จะสมมติว่ามีสวิตช์พอยต์แล้วลองค้นหาฉันต้องการตรวจสอบว่ามีสวิตช์pointหรือไม่

ผู้เขียนตอบคำถาม "เกิด switchpoint เกิดขึ้น" โดย "ไม่มีการเปลี่ยนแปลงเกิดขึ้นหรือมีการเปลี่ยนแปลงอย่างค่อยเป็นค่อยไปเมื่อเวลาผ่านไปการกระจายหลัง จะกระจายออกไปมากขึ้น" แต่คุณจะตอบคำถามนี้อย่างไรเช่นมีโอกาส 90% ที่จุดเปลี่ยนจะเกิดขึ้นและมีโอกาส 50% ที่จะเกิดขึ้นในวันที่ 45τ

จำเป็นต้องเปลี่ยนโมเดลหรือไม่ หรือสามารถตอบด้วยรุ่นปัจจุบันได้หรือไม่


พูดถึงผู้เขียนหนังสือ @ Cam.Davidson.Pilon ซึ่งอาจมีคำตอบที่ดีกว่าของฉันด้านล่าง
ฌอนอีสเตอร์

คำตอบ:


6

SeanEaster มีคำแนะนำที่ดี ตัวประกอบ Bayes นั้นยากต่อการคำนวณ แต่มีบางโพสต์บล็อกที่ดีโดยเฉพาะสำหรับตัวประกอบ Bayes ใน PyMC2

คำถามที่เกี่ยวข้องอย่างใกล้ชิดคือคุณงามความดีของแบบจำลอง วิธีการที่เป็นธรรมสำหรับการตรวจสอบนี้คือ - ผู้โพสต์สามารถให้หลักฐานของความดี - พอดี ชอบที่ยกมา:

"ไม่มีการเปลี่ยนแปลงเกิดขึ้นหรือมีการเปลี่ยนแปลงอย่างค่อยเป็นค่อยไปเมื่อเวลาผ่านไปการกระจายหลังของ τ คงจะกระจายออกไปมากขึ้น "

นี่เป็นเรื่องจริง ด้านหลังค่อนข้างแหลมเวลาใกล้ 45 เมื่อคุณพูดว่า> 50% ของมวลอยู่ที่ 45 ในขณะที่ถ้าไม่มีจุดเปลี่ยนมวลควร (ในทางทฤษฎี) ใกล้ถึง 1/80 = 1.125% ในเวลา 45

สิ่งที่คุณตั้งใจจะทำคือสร้างชุดข้อมูลที่สังเกตได้ใหม่ตามแบบจำลองของคุณ ในบทที่ 2เป็นการจำลองการสร้างข้อมูลปลอม หากข้อมูลที่คุณสังเกตดูแตกต่างอย่างมากจากข้อมูลเทียมของคุณแสดงว่าแบบจำลองของคุณไม่เหมาะสม

ฉันขอโทษสำหรับคำตอบที่ไม่เคร่งครัด แต่จริงๆแล้วมันเป็นปัญหาใหญ่ที่ฉันไม่สามารถเอาชนะได้อย่างมีประสิทธิภาพ


อาจไม่เกี่ยวข้องกับคำตอบของคุณฉันแค่คิดออกมาดัง ๆ เป็นไปไม่ได้หรือไม่ที่จะปรับ sigmoid ให้เหมาะสมกับข้อมูลและขึ้นอยู่กับพารามิเตอร์เบต้าตัดสินใจว่าความชันบ่งชี้ว่ามีการเปลี่ยนแปลงหรือไม่ บางทีเกณฑ์ที่กำหนดว่ามีจุดเปลี่ยนสามารถเรียนรู้จากตัวอย่างได้หรือไม่ บางทีนี่อาจเป็นไปได้ด้วยλพารามิเตอร์ ถ้าλ1 แตกต่างจากมากเกินไป λ2 มี switchpoint ไม่ใช่อย่างอื่น สิ่งนี้สามารถทำได้ด้วยเกณฑ์ที่เรียนรู้จากตัวอย่าง
Olivier_s_j

1
ตัวอย่างเช่นให้พอดีกับโมเดล: λ1พี+λ2(1-พี)ที่ไหน พี=1/(1+อีxพี(-βเสื้อ))? ฉันคิดว่ามันใช้ได้ผลและจะยอมให้มีการเปลี่ยนผ่านได้อย่างราบรื่น คุณถูกต้องว่าอนุมานบนβความลาดชันของสามารถระบุได้ว่ามีจุดเปลี่ยนอยู่หรือไม่ ฉันชอบสิ่งนี้มากคุณควรสำรวจเพิ่มเติม
Cam.Davidson.Pilon

สำหรับคำถามที่เกี่ยวกับแบบจำลองฉันจะเพิ่มว่า p-values ​​เชิงทำนายหลังเป็นวิธีหนึ่งในการประเมินความเหมาะสม ดูกระดาษนี้
ฌอนอีสเตอร์

2

นั่นเป็นคำถามเปรียบเทียบแบบจำลองมากกว่า: สิ่งที่น่าสนใจก็คือว่าแบบจำลองที่ไม่มีจุดเปลี่ยนจะอธิบายข้อมูลได้ดีกว่าแบบจำลองที่มีจุดเปลี่ยนหรือไม่ วิธีหนึ่งในการตอบคำถามนั้นคือการคำนวณตัวประกอบ Bayesของแบบจำลองที่มีและไม่มีจุดเปลี่ยน กล่าวโดยสรุปปัจจัย Bayes คืออัตราส่วนของความน่าจะเป็นของข้อมูลภายใต้โมเดลทั้งสอง:

K=ราคา(D|M1)ราคา(D|M2)=ราคา(θ1|M1)ราคา(D|θ1,M1)dθ1ราคา(θ2|M2)ราคา(D|θ2,M2)dθ2

ถ้า M1 เป็นรุ่นที่ใช้สวิตช์พอยต์และ M2 เป็นรุ่นที่ไม่มีค่าสูงสำหรับ Kสามารถตีความได้ว่าเป็นประโยชน์อย่างยิ่งต่อโมเดลสวิตช์พอยต์ (บทความวิกิพีเดียที่ลิงก์ด้านบนเป็นแนวทางสำหรับค่า K ที่น่าจดจำ)

นอกจากนี้โปรดทราบว่าในบริบท MCMC อินทิกรัลด้านบนจะถูกแทนที่ด้วยผลรวมของค่าพารามิเตอร์จากเชน MCMC การรักษาอย่างละเอียดมากขึ้นของปัจจัย Bayes กับตัวอย่างที่มีอยู่ที่นี่

สำหรับคำถามของการคำนวณความน่าจะเป็นของสวิทซ์พอยท์นั่นก็เท่ากับการแก้หา P(M1|D). หากคุณสมมติว่ามีนักบวชที่เท่าเทียมกันในทั้งสองรุ่นดังนั้นราคาต่อรองหลังของแบบจำลองจะเท่ากับตัวประกอบ Bayes (ดูสไลด์ที่ 5 ที่นี่ ) จากนั้นเป็นเพียงการแก้ปัญหาP(M1|D) ใช้ปัจจัย Bayes และข้อกำหนดที่ Σผม=1nP(Mผม|D)=1 สำหรับเหตุการณ์โมเดล n (พิเศษ) ที่อยู่ระหว่างการพิจารณา

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