การรายงานผลลัพธ์แบบ Bayesian

การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

Michal Oleszak

Machine Learning Engineer

วิธีที่ถูกต้องและโปร่งใส

  • รายงาน prior และ posterior ของแต่ละพารามิเตอร์
posterior_draws
array([8.02800413, 8.97359548, 7.57437476, ..., 5.85264609, 7.92875104,
       7.41463758])
  • พล็อตการแจกแจง prior และ posterior
sns.kdeplot(prior_draws, shade=True, label="prior")
sns.kdeplot(posterior_draws, shade=True, label="posterior")
การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

วิธีที่ถูกต้องและโปร่งใส

กราฟ density สองกราฟซ้อนทับกัน ทั้งคู่มีรูปร่างแบบกระดิ่ง กราฟ prior มีจุดกึ่งกลางที่ 0 เตี้ยและกว้าง ส่วน posterior มีจุดกึ่งกลางที่ประมาณ 7 สูงกว่าและแคบกว่ามาก

การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

วิธีที่ถูกต้องและโปร่งใส

กราฟ density สองกราฟซ้อนทับกัน ทั้งคู่มีรูปร่างแบบกระดิ่ง กราฟ prior มีจุดกึ่งกลางที่ 0 เตี้ยและกว้าง ส่วน posterior มีจุดกึ่งกลางที่ประมาณ 7 สูงกว่าและแคบกว่ามาก

การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

วิธีที่ถูกต้องและโปร่งใส

กราฟ density สองกราฟซ้อนทับกัน ทั้งคู่มีรูปร่างแบบกระดิ่ง กราฟ prior มีจุดกึ่งกลางที่ 0 เตี้ยและกว้าง ส่วน posterior มีจุดกึ่งกลางที่ประมาณ 7 สูงกว่าและแคบกว่ามาก

การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

วิธีที่ถูกต้องและโปร่งใส

กราฟ density สองกราฟซ้อนทับกัน ทั้งคู่มีรูปร่างแบบกระดิ่ง กราฟ prior มีจุดกึ่งกลางที่ 0 เตี้ยและกว้าง ส่วน posterior มีจุดกึ่งกลางที่ประมาณ 7 สูงกว่าและแคบกว่ามาก

การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

ค่าประมาณแบบจุดของ Bayesian

  • ไม่มีตัวเลขเดียวใดที่สามารถสื่อข้อมูลครบถ้วนที่อยู่ในการแจกแจงได้

  • อย่างไรก็ตาม บางครั้งจำเป็นต้องใช้ค่าประมาณแบบจุดของพารามิเตอร์

กราฟ density รูปร่างแบบกระดิ่ง

การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

ค่าประมาณแบบจุดของ Bayesian

  • ไม่มีตัวเลขเดียวใดที่สามารถสื่อข้อมูลครบถ้วนที่อยู่ในการแจกแจงได้

  • อย่างไรก็ตาม บางครั้งจำเป็นต้องใช้ค่าประมาณแบบจุดของพารามิเตอร์

posterior_mean = np.mean(posterior_draws)


กราฟ density รูปร่างแบบกระดิ่ง พร้อมเส้นแนวตั้งแสดงตำแหน่งค่าเฉลี่ย

การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

ค่าประมาณแบบจุดของ Bayesian

  • ไม่มีตัวเลขเดียวใดที่สามารถสื่อข้อมูลครบถ้วนที่อยู่ในการแจกแจงได้

  • อย่างไรก็ตาม บางครั้งจำเป็นต้องใช้ค่าประมาณแบบจุดของพารามิเตอร์

posterior_mean = np.mean(posterior_draws)
posterior_median = np.median(posterior_draws)

กราฟ density รูปร่างแบบกระดิ่ง พร้อมเส้นแนวตั้งแสดงตำแหน่งค่ามัธยฐาน

การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

ค่าประมาณแบบจุดของ Bayesian

  • ไม่มีตัวเลขเดียวใดที่สามารถสื่อข้อมูลครบถ้วนที่อยู่ในการแจกแจงได้

  • อย่างไรก็ตาม บางครั้งจำเป็นต้องใช้ค่าประมาณแบบจุดของพารามิเตอร์

posterior_mean = np.mean(posterior_draws)
posterior_median = np.median(posterior_draws)
posterior_p75 = np.percentile(posterior_draws, 75)

กราฟ density รูปร่างแบบกระดิ่ง พร้อมเส้นแนวตั้งแสดงตำแหน่งเปอร์เซ็นไทล์ที่ 75

การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

Credible intervals

  • ช่วงที่ความน่าจะเป็นของพารามิเตอร์ที่อยู่ภายในเท่ากับ x%
  • ยิ่ง credible interval กว้าง ความไม่แน่นอนในการประมาณพารามิเตอร์ยิ่งสูง
  • พารามิเตอร์เป็นค่าสุ่ม จึงมีความน่าจะเป็นที่จะอยู่ในช่วงใดช่วงหนึ่งได้
  • ในแนวทาง frequentist ช่วงความเชื่อมั่น (confidence interval) เป็นค่าสุ่ม แต่พารามิเตอร์คงที่

กราฟ density รูปร่างแบบกระดิ่ง พร้อมเส้นประแนวตั้งสองเส้นแสดงขอบเขตของช่วง

การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

Highest Posterior Density (HPD)

GIF ของกราฟ density รูปร่างแบบกระดิ่ง แสดงเส้นแนวนอนที่เลื่อนลงมาเรื่อยๆ ทำให้พื้นที่ความน่าจะเป็นระหว่างจุดตัดเพิ่มขึ้น

import arviz as az

hpd = az.hdi(posterior_draws, 
             hdi_prob=0.9)
print(hpd)
[-4.86840193  4.96075498]
การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

มาฝึกรายงานผลลัพธ์แบบ Bayesian กัน!

การวิเคราะห์ข้อมูลแบบเบย์เซียนด้วย Python

Preparing Video For Download...