Naïve Bayes Classification

Peachapong Poolpol
3 min readApr 22, 2021

--

สวัสดีครับ ขอแนะนำตัวอีกครั้ง เผื่อใครพึ่งจะมาอ่านโพสนี้ ผมชื่อ พีท นะครับ กำลังศึกษาปริญญาโท สาขาวิทยาการข้อมูล อยู่ที่ มศว

ขณะนี้ผมกำลังเรียนรายวิชา Machine Learning อยู่ ซึ่งในทุกสัปดาห์ก็จะได้เรียนรู้เกี่ยวกับ model ใหม่ๆ ทุกวัน เลยอยากจะมาสรุปสิ่งที่ได้เรียน ให้เพื่อนๆ ได้อ่านไปด้วยกัน

Machine learning model ที่ผมเคยได้เรียนแล้วก็จะเป็น linear regression, linear classification, K-Nearest Neighbour ถ้าอนาคตมีโอกาส จะมาเล่าเกี่ยวกับ model เหล่านี้ให้ฟังนะครับ

Naive Bayes Classification (NB)

เป็นหนึ่งใน model สำหรับใช้ในการทำนายว่า ตัวแปร หรือตัวอย่างนั้นอยู่ในกลุ่มไหน ซึ่งเป็น supervised model ที่ต้องมีการ label ก่อน (เหมือนกับ linear classification/ logistic regression)

โดยหลักการของ NB จะใช้หลักการเรื่อง ความน่าจะเป็น (probability) ในการทำนายว่าเป็น กลุ่มไหน

ในขณะที่ linear classification จะใช้หลักการทางเลขาคณิต (Geometry) ในการทำนายว่าเป็น กลุ่มไหน

หัวข้อที่จะกล่าวถึงในวันนี้ ขออ้างอิงจากเอกสารการเรียนของอาจารย์ นะครับ

  1. Probability density function VS Probability function
  2. การนำ probability ไปใช้ในการ classification
  3. Bayesian analysis
  4. Naïve bayes classifier
  5. Laplacian smoothing

1. Probability density function VS Probability function

Probability density function (PDF)

  • เป็น function สำหรับการหาความน่าจะเป็นของตัวแปร ที่เป็น จำนวนจริง หรือ continuous data
  • การคำนวณค่าจาก function จะได้ค่า “ความหนาแน่นของความน่าจะเป็น (probability density function)” เนื่องจากเป็นค่าต่อเนื่อง
  • หากต้องการหาความน่าจะเป็น (probability) ต้อง integrate function ด้วย
  • ได้แก่ Gaussian (Normal) distribution

Probability function (PF)

  • เป็น function สำหรับการหาความน่าจะเป็น ของตัวแปรที่เป็น discrete data (ข้อมูลไม่ต่อเนื่อง)
  • การคำนวณค่าจาก function จะได้ค่า “ความน่าจะเป็น” เลย (ไม่ต้องไปทำ integration แล้ว)
  • ได้แก่ Bernoulli (binary) distribution และ Multinomial distribution

Gaussian distribution

สูตรของ function จะหน้าตาประมาณนี้ โดยลักษณะของกราฟจะเป็นโค้งระฆังคว่ำ ซึ่งอาจจะคุ้นเคยกันในชื่อ Normal distribution

สูตรของ Gaussian (Normal) distribution
graph ของ function

ในการเรียนเรื่องนี้ เราอาจจะไม่จำเป็นต้องจำสูตรได้ แต่ควรจะรู้ว่าการได้มาของสูตรนี้ จำเป็นต้องใช้ parameter คือ μ (ค่าเฉลี่ยของประชากร) σ (ส่วนเบี่ยงเบนมาตรฐานของประชากร) และตัวแปรเป็น x ถึงจะสามารถคำนวณออกมาได้

ตามปกติแล้วข้อมูลที่จะใช้งานกับ Gaussian distribution ต้องเป็นจำนวนจริง หรือเป็น ข้อมูลต่อเนื่อง (continuous data) แต่อาจจะสามารถอนุโลมให้ใช้ Gaussian districbution ได้ในกรณีที่เป็นเลขจำนวนเต็ม (integer) แต่ทั้งนี้เลขจำนวนเต็มเหล่านี้ต้องมีการกระจายตัวของข้อมูลที่หลากหลาย หรือกล่าวว่ามี wide range ของข้อมูล

แต่หากบอกว่า เป็นข้อมูลที่มีจำนวนมาก จะสามารถใช้ Gaussian distribution ได้ อาจจะไม่เป็นจริงเสมอไป เช่น หากมีข้อมูล 1,000,000 ตัว แต่ทั้งหมดมีข้อมูลอยู่ 4 แบบ คือ 1 2 3 และ 4 ก็ไม่เหมาะที่จะใช้ Gaussian distribution เพราะไม่ wide range (มีแค่ 4 แบบเอง) ก็ต้องไปใช้ function อื่น (จะกล่าวต่อไปหลังจากนี้)

โดยจำเป็นต้องพึงระลึกไว้เสมอว่า ค่า f(x) ที่ได้จากฟังก์ชันนี้จะเป็นค่า probability density ไม่ใช่ค่า probability จริงๆ (ถ้าหากอยากได้ค่า probability ต้องทำ integration ของ function นี้อีกที)

แต่เราจะนำค่า probability density นี้มาใช้ประโยชน์ เมื่อต้องการเปรียบเทียบว่า ค่าจาก function หรือ model ไหนมีค่ามากกว่ากัน

Bernoulli distribution

function นี้เหมาะกับข้อมูลที่เป็น binary เช่น เพศ (ชาย/หญิง) ถูก/ผิด หรือข้อมูลที่มีได้แค่ 2 แบบ

โดยเมื่อแทนค่า x ลงไปใน fuction จะได้ค่า probability ของการเกิดเหตุการณ์นั้น (หรือความน่าจะเป็นที่จะเกิดเหตุการณ์นั้นขึ้น) ในทางคณิตศาสตร์อาจจะเรียก event นั้นว่า success / failure

probability of success = p

probability of failure = 1-p (ผลรวมของค่าความน่าจะเป็นต้องเท่ากับ 1)

ค่าความน่าจะเป็นของแต่ละครั้งที่เกิดขึ้นจะต้องมีค่าเท่าเดิม

ตัวอย่างเช่น ความน่าจะเป็นของการโยนเหรียญ A ให้ออกหัว เท่ากับ 0.7 เพราะฉะนั้นความน่าจะเป็นของการโยนเหรียญ A ให้ออกก้อย ก็จะเท่ากับ 0.3 ดังนั้น ถ้าเอาเหรียญ A มาโยน โอกาสที่จะออกหัว ก็จะคงที่ คือเท่ากับ 0.7 แต่หากเอาเหรียญอื่น ๆ เช่น เหรียญ B หรือเหรียญ C มาโยน โอกาสที่จะออกหัวและก้อยก็จะแตกต่างกันไป

Multinomial distribution

หลักการเหมือน Bernoulli distribution แต่แตกต่างกันที่ Multinomial distribution จะใช้กับข้อมูลที่เป็น Nominal data (ที่มีตั้งแต่ 2 กลุ่มขึ้นไป) เช่น กรุ๊ปเลือด ระดับการศึกษา เป็นต้น

โดยเมื่อแทนค่า x ลงไปใน fuction จะได้ค่า probability ของการเกิดเหตุการณ์นั้นเช่นกัน และผลรวมของความน่าจะเป็นในทุกเหตุการณ์ก็เท่ากับ 1

2. การนำเอาความน่าจะเป็น ไปใช้ในการ classification

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

การจะนำมาใช้ในการแบ่งกลุ่ม (Classification) จะต้องมีการเปรียบเทียบระหว่างอย่างน้อย 2 กลุ่ม โดยค่า probability ของ x จากโมเดลหรือฟังก์ชันไหน มีค่ามากที่สุด ก็น่าจะบอกได้ว่า x น่าจะอยู่ใน class ของ model นั้น

Class of sample x = argmax P(x|yi)

ตามหลักการที่กล่าวไปข้างต้น จะต้องเอาค่า probability มาเทียบกัน แต่ใน Gaussian model จะถือว่า สามารถนำค่า probability density มาเทียบกันก็ได้ โดยไม่จำเป็นต้องทำ integration เพื่อหา probability ก่อน

ในที่นี้จะขอเปลี่ยน notation ที่ใช้แทนสมการ f(x= )… เป็น P(x = ) แทนเพราะพิจารณาค่า probability เป็นหลัก

ฟังดูเหมือนว่าจะง่าย ก็แค่เอา probability ของแต่ละ model มาเปรียบเทียบกัน หาก model ไหนมีค่าความน่าจะเป็นสูงที่สุด ก็บอกว่า x น่าจะอยู่ใน model นั้น แต่ การคำนวณเท่านี้จะไม่ยุติธรรมเท่าไหร่นัก หากสัดส่วนของตัวอย่างในกลุ่มประชากร มีความแตกต่างกันในแต่ละพื้นที่ เช่น คนไทยมีส่วนสูงเฉลี่ย 165 เซนติเมตร ในขณะที่คนต่างชาติมีส่วนสูงเฉลี่ย 180 เซนติเมตร โดยขณะนี้เราอยู่ในประเทศไทย แล้วให้คน 1 คนที่มีความสูง 182 เซนติเมตรมาเข้าในสมการ ซึ่ง model ก็จะบอกว่า คนคนนี้เป็นคนต่างชาติ แน่นอน ….. ซึ่งจริง ๆ แล้วตอนนี้เรากำลังอยู่ในประเทศไทย และก็มีโอกาสที่คนไทยจะสูง 182 เซนติเมตรได้ ซึ่งดูไม่ค่อยยุติธรรมเท่าไหร่ที่จะบอกว่าคนนี้เป็นคนต่างชาติแน่นอน เพราะว่ามีเรื่องของสัดส่วนของประชากรที่แตกต่างกัน (ทดลองในประเทศไทย มีสัดส่วนของคนไทยมากกว่าคนต่างชาติมาก ๆ) จึงต้องมีการใช้สัดส่วนของประชากรเข้ามาคำนวณด้วย (แล้วจะเอามาคำนวณอย่างไรดี… ซึ่งจะเชื่อมโยงไปถึงหัวข้อถัดไป)

3. Bayesian analysis

จะมีการใช้ Bayes’ Theorem มาใช้ในการอธิบายว่า จะนำสัดส่วนของกลุ่มตัวอย่าง เข้ามาร่วมคำนวณได้อย่างไร

Bayes’ Theorem บอกว่า ความน่าจะเป็นของเหตุการณ์ที่ขึ้นกับ condition หนึ่ง ควรจะมีการนำความน่าจะเป็นของ condition นั้นมาคำนวณด้วย

ซึ่งในส่วนของ Bayesian analysis, Naïve bayes classifier, Laplacian smoothing จะมาโพสให้ติดตามกันต่อไปนะครับ

--

--

No responses yet