EP1 – ทฤษฎี Bayes กับการหาค่า Inverse Probability

เฮลโหลลลลลลลลล สวัสดีผู้อ่าน แฟนเพจของเราทุกคน ยินดีต้อนรับสู่ซีรี่ล่าสุดของเรา

Statistics Mondee (อ่านว่า มันส์ดี!) เป็นซีรี่บทความเกี่ยวกับเรื่องสถิติและความน่าจะเป็นเวอร์ชั่นเข้าใจง่าย บทความใหม่ออกทุกวันจันทร์ อ่านได้ทุกเพศทุกวัยโดยเฉพาะผู้อ่านที่สนใจด้าน data science

โดย EP แรกของซีรี่จะอธิบายเรื่อง inverse probability หรืออีกชื่อที่หลายคนน่าจะผ่านหูผ่านตามาบ้างคือ Bayesian probability ซึ่งความรู้เรื่องนี้มีประโยชน์ต่อชีวิตอย่างมาก ประมาณว่าถ้าเรารู้ความน่าจะเป็นของ A|B เราสามารถหาความน่าจะเป็นของ B|A ได้เช่นกัน (ที่มาของคำว่า inverse)

Probability 101

Probability theory เกิดขึ้นมาเพื่อศึกษาการเล่น gambling การพนันในยุคแรก

ถ้าคณิตศาสตร์คือศาสตร์แห่งความแน่นอน ในทางตรงกันข้าม ความน่าจะเป็นคือศาสตร์แห่งความไม่แน่นอน (uncertainty) เช่น ฝนจะตกหรือเปล่า? โอกาสที่จะได้เลื่อนตำแหน่ง? ความน่าจะเป็นที่เราจะได้เลือกตั้งในปี 2019? Trump จะได้เป็น ปธน. ต่อหรือเปล่า? คำถามพวกนี้ตอบได้ด้วยทฤษฏีความน่าจะเป็นทั้งหมดเลย

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

สมมติเราโยนลูกเต๋าแบบหกหน้าปกติ (a fair die) จงหาความน่าจะเป็นที่จะได้เลขคู่ {2, 4, 6} ก็แค่นับจำนวนเหตุการณ์แบบนี้ {2, 4, 6} / {1, 2, 3, 4, 5, 6} = 3 / 6 = 0.5

หรือความน่าเป็นของการจั่วได้ไพ่ {Jack, Queen, King, A} จากสำหรับไพ่ 52 ใบ เท่ากับ 16 / 52 = 0.3076 ส่วนความน่าจะเป็นที่จั่วได้การ์ดอื่นๆนอกเหนือจาก set นี้คือ 1 – 0.3076 = 0.6924

กฏแรกที่เราต้องรู้คือ (เราเรียกว่า probability axioms) ความน่าจะเป็นจะมีค่าอยู่ระหว่าง 0 – 1 หรือเขียนแบบนี้ 0 <= P(A) <= 1 โดย P(A) คือความน่าจะเป็นของเหตุการณ์ A

It’s Subjective

ถ้าเพื่อนเราส่งเหรียญให้เราหนึ่งเหรียญ {head, tail} แล้วถามเราว่า “แกคิดว่าเหรียญนี้มีความน่าจะเป็นที่จะเป็น fair coin เท่าไร?” เราจะตอบคำถามนี้ยังไงดี

ก่อนที่เราจะโยนเหรียญเพื่อหาคำตอบ เราอาจจะลองพิจารณาเหรียญในมุมต่างๆเพื่อหาความน่าจะเป็นที่เหรียญนี้เป็น fair coin ความน่าจะเป็นที่เราคิดขึ้นมาก่อนจะโยนเหรียญ เป็น quantity ที่ขึ้นอยู่กับตัวเราเองที่ถูกเรียกว่า subjective probability

ถ้ายื่นเหรียญนี้ให้กับคน 10 คน ความน่าจะเป็นที่ทั้งสิบคนคิดอาจจะไม่เท่ากันเลย บางคนอาจจะคิดว่า P(fair) = 0.5 บางคนอาจจะคิดว่า P(fair) = 0.7 หรือ 0.8, 0.9 ก็อาจเป็นไปได้

Conditional

ถ้าความน่าจะเป็นของเหตุการณ์ A ขึ้นอยู่กับเหตุการณ์ B เราเรียกความน่าจะเป็นนี้ว่า conditional probability มาลองดูตัวอย่างนี้

P(สอบผ่าน | อ่านหนังสือ)

อ่านว่า ความน่าจะเป็นที่จะสอบผ่านถ้าอ่านหนังสือ สัญลักษณ์ | ภาษาอังกฤษอ่านว่า given แปลภาษาไทยง่ายๆว่า ถ้า

ทฤษฏีความน่าจะเป็น ช่วยให้เราอธิบายความน่าจะเป็น P(สอบผ่าน) ได้แบบนี้

P(สอบผ่าน) = P(สอบผ่าน | อ่านหนังสือ) * P(อ่านหนังสือ) + P(สอบผ่าน | ไม่อ่านหนังสือ) * P(ไม่อ่านหนังสือ)

ทำไมถึงเขียน P(สอบผ่าน) ได้ตามสมการด้านบน? เพราะว่าคนๆหนึ่งมีโอกาสสอบผ่านแบบอ่านหนังสือ หรือสอบผ่านแบบไม่ต้องอ่านหนังสือก็ได้ ในทางคณิตศาสาตร์เราสามารถเขียน ~อ่านหนังสือ โดยสัญลักษณ์ ~ อ่านว่า NOT แปลว่า ไม่

Bayes Theorem

P(B|A) = P(A|B) * P(B) / P(A)

สมการนี้มีชื่อว่า Bayes Theorem ตั้งชื่อตาม Thomas Bayes (1701-1761) ผู้ริเริ่มไอเดียการทำ inverse probability ถ้าเรารู้ P(A|B), P(B) และ P(A) เราก็สามารถแทนค่าลงไปในสมการเพื่อหา P(B|A) ได้เลยง่ายๆ

Inverse Probability

ความน่าจะเป็นที่เหรียญเป็น fair coin ถ้าเรา observe 15 heads

กลับไปที่ตัวอย่างเหรียญของเรา สมมติว่าเราโยนเหรียญ (draw) ทั้งหมด 20 ครั้ง และเหรียญออกหัวทั้งหมด 15 ครั้ง เราอยากรู้ว่าเหรียญนี้มีความน่าจะเป็นที่จะเป็น fair coin เท่าไร? i.e. P(fair | H15) ให้เริ่มจากการเขียนสิ่งที่เรารู้ก่อนแบบนี้

  • P(H15 | fair) เด๋วเราจะสอนหา quantity นี้ใน R
  • P(fair) สมมติเรานั่งตรวจสอบเหรียญนี้แล้วพบรอยบิ่นนิดหน่อย เลย assign subjective P(fair) = 0.4 ก่อนที่จะโยนเหรียญ
  • P(H15) คิดมาจาก P(H15 | fair) P(fair) + P(H15 | ~fair) P(~fair)

นำ quantity ทั้งหมดไปแทนค่าทางด้านขวาของสมการ Bayes Theorem

P(fair|H15) = P(H15|fair) * P(fair) / P(H15)

แทนค่า P(H15) ด้วย P(H15 | fair)P(fair) + P(H15 | ~fair)P(~fair)

P(fair|H15) = P(H15|fair) * P(fair) / (P(H15|fair) * P(fair) + P(H15|~fair) * P(~fair))

แก้สมการเสร็จ เราก็จะได้ quantity ทางฝั่งซ้ายมือ P(fair | H15) ความน่าจะเป็นที่เหรียญเป็น fair coin ถ้าเราโยนเหรียญได้หัว 15 ครั้ง

R Code

เราใช้ฟังชั่น dbinom() เพื่อหา exact probability ที่เราจะได้หัว 15 ครั้ง จากการโยนเหรียญ 20 ครั้ง สมมติว่าเหรียญเป็น fair coin ด้วยการตั้งค่า prob argument = 0.5 (แปลว่าเหรียญมีโอกาสได้ head .5 และ tail .5 เท่ากัน) ส่วนเหรียญที่เป็น biased coin ใช้ prob = 0.75 (แปลว่า head .75 และ tail .25)

# get 15 head from 20 draws - fair coin
p_H15_fair <- dbinom(15, 20, prob = 0.50)
# get 15 head from 20 draws - biased coin
p_H15_biased <- dbinom(15, 20, prob = 0.75)
# subjective probability about the coin
p_fair <- 0.4
p_biased <- 1 - p_fair
# bayes theorem
p_fair_H15 <- p_H15_fair * p_fair / (p_H15_fair * p_fair + p_H15_biased * p_biased)
print(p_fair_H15)
view raw .R hosted with ❤ by GitHub

P(fair) = 0.40 เป็น subjective probability ที่เรามีต่อเหรียญนี้ (ก่อนที่จะเห็น 15 heads) ในทฤษฏีของ Bayes เราเรียก quantity นี้ว่า prior probability ส่วน P(fair | H15) ทางด้านซ้ายของ Bayes Theorem ถูกเรียกว่า posterior probability

จบแล้วกับ Statistics Mondee ตอนที่ 1 วันนี้เราสรุป probability theory เบื้องต้นและแตะเบาๆเรื่อง Bayes Theorem พบกันใหม่วันจันทร์หน้า จะเป็นเรื่องอะไร ต้องรออ่านนะคร้าบ!

3 thoughts on “EP1 – ทฤษฎี Bayes กับการหาค่า Inverse Probability

Leave a Reply