การเรียนรู้แบบมีผู้สอน - แบบจำลองกำเนิด (Supervised Learning - Generative Models)

คำนำ

เอกสารนี้ได้รับการปรับปรุงเพิ่มเติมคำอธิบายให้ละเอียดยิ่งขึ้น โดยเน้น:


ข้อมูลตัวอย่างที่ใช้ตลอดเอกสาร

วันที่ เมฆ (Cloud) ความชื้น (Humidity) อากาศ (Temp) ฝนตก (Rain)?
1 มาก มาก ร้อน ตก
2 มาก มาก ร้อน ตก
3 น้อย น้อย เย็น ไม่ตก
4 มาก น้อย เย็น ตก
5 น้อย มาก ร้อน ไม่ตก
6 น้อย น้อย ร้อน ไม่ตก
7 มาก มาก เย็น ตก
8 น้อย มาก เย็น ไม่ตก
9 มาก น้อย ร้อน ตก
10 น้อย น้อย เย็น ไม่ตก

สรุปข้อมูล:

การวิเคราะห์ข้อมูลเบื้องต้น

สำหรับวันที่ฝนตก (5 วัน):

Feature มาก น้อย
เมฆ 5 วัน (100%) 0 วัน (0%)
ความชื้น 3 วัน (60%) 2 วัน (40%)
อากาศ (ร้อน/เย็น) 3 วัน (60%) 2 วัน (40%)

สำหรับวันที่ฝนไม่ตก (5 วัน):

Feature มาก น้อย
เมฆ 0 วัน (0%) 5 วัน (100%)
ความชื้น 2 วัน (40%) 3 วัน (60%)
อากาศ (ร้อน/เย็น) 2 วัน (40%) 3 วัน (60%)

ข้อสังเกตสำคัญ:


1. บทนำ (Introduction)

1.1 ความหมายของแบบจำลองกำเนิด (Generative Models)

แบบจำลองกำเนิด (Generative Models) คือประเภทของแบบจำลองทางสถิติที่พยายามเรียนรู้การกระจายตัวร่วม (Joint Distribution) ของข้อมูลนำเข้า X และผลลัพธ์ Y คือ P(X, Y) จากนั้นใช้ทฤษฎีบทเบย์ในการคำนวณความน่าจะเป็นภายหลัง P(Y|X) เพื่อทำการจำแนกประเภท

คำอธิบายเพิ่มเติม

ทำไมถึงเรียกว่า "Generative"?

คำว่า "Generative" หมายถึงความสามารถในการ สร้าง (Generate) ข้อมูลใหม่ได้ เนื่องจากโมเดลเรียนรู้การกระจายตัวของข้อมูลทั้งหมด P(X, Y) ทำให้:

  1. สามารถสร้างข้อมูลใหม่ได้ - เมื่อรู้ว่าข้อมูลกระจายตัวอย่างไร ก็สามารถสุ่มสร้างข้อมูลใหม่ที่มีลักษณะคล้ายกับข้อมูลจริงได้
  2. เข้าใจโครงสร้างของข้อมูล - รู้ว่าแต่ละ feature มีความสัมพันธ์กับคลาสอย่างไร

ตัวอย่างในชีวิตจริง:

ลองนึกภาพว่าเราต้องการสอนคนให้แยกแยะระหว่างแมวกับสุนัข:

1.2 ความแตกต่างระหว่าง Generative และ Discriminative Models

flowchart LR
    subgraph GEN["แบบจำลองกำเนิด (Generative)"]
        direction TB
        G1["เรียนรู้ P(X,Y)"] --> G2["คำนวณ P(Y|X)"]
        G2 --> G3["ทำนายคลาส"]
        style G1 fill:#458588,stroke:#282828,color:#ebdbb2
        style G2 fill:#689d6a,stroke:#282828,color:#ebdbb2
        style G3 fill:#98971a,stroke:#282828,color:#ebdbb2
    end
    
    subgraph DIS["แบบจำลองจำแนก (Discriminative)"]
        direction TB
        D1["เรียนรู้ P(Y|X) โดยตรง"] --> D2["ทำนายคลาส"]
        style D1 fill:#d65d0e,stroke:#282828,color:#ebdbb2
        style D2 fill:#cc241d,stroke:#282828,color:#ebdbb2
    end
    
    GEN ~~~ DIS
คุณสมบัติ Generative Models Discriminative Models
สิ่งที่เรียนรู้ P(X, Y) หรือ P(X|Y) และ P(Y) P(Y|X) โดยตรง
ความสามารถในการสร้างข้อมูล ได้ ไม่ได้
ตัวอย่างอัลกอริทึม Naive Bayes, GDA, HMM Logistic Regression, SVM
ประสิทธิภาพเมื่อข้อมูลน้อย ดีกว่า ต้องการข้อมูลมากกว่า
ความทนทานต่อ Outliers ไวต่อ outliers มากกว่า ทนทานกว่า

เงื่อนไขการเลือกใช้

ใช้ Generative Models เมื่อ:

ใช้ Discriminative Models เมื่อ:

1.3 ไทม์ไลน์การพัฒนา Generative Models

flowchart LR
    subgraph ERA1["ยุคบุกเบิก (1700s-1900s)"]
        A1["1763: ทฤษฎีบทเบย์
Thomas Bayes"] A2["1809: Least Squares
Gauss"] A1 --> A2 style A1 fill:#cc241d,stroke:#282828,color:#ebdbb2 style A2 fill:#d65d0e,stroke:#282828,color:#ebdbb2 end subgraph ERA2["ยุคสถิติคลาสสิก (1900s-1960s)"] B1["1936: LDA
Fisher"] B2["1960s: Naive Bayes
ประยุกต์ใช้"] B1 --> B2 style B1 fill:#d79921,stroke:#282828,color:#ebdbb2 style B2 fill:#98971a,stroke:#282828,color:#ebdbb2 end subgraph ERA3["ยุค Machine Learning (1980s-ปัจจุบัน)"] C1["1980s: GMM และ EM"] C2["2014: GANs
Goodfellow"] C3["2020s: Diffusion Models"] C1 --> C2 --> C3 style C1 fill:#689d6a,stroke:#282828,color:#ebdbb2 style C2 fill:#458588,stroke:#282828,color:#ebdbb2 style C3 fill:#b16286,stroke:#282828,color:#ebdbb2 end ERA1 --> ERA2 --> ERA3

2. ทฤษฎีการตัดสินใจแบบเบย์ (Bayes Decision Theory)

2.1 หลักการพื้นฐาน

ทฤษฎีการตัดสินใจแบบเบย์ (Bayes Decision Theory) เป็นกรอบแนวคิดทางสถิติที่ใช้ในการตัดสินใจภายใต้ความไม่แน่นอน โดยอาศัยหลักการของความน่าจะเป็นแบบเบย์เซียน

2.1.1 ทฤษฎีบทเบย์ (Bayes' Theorem)

สูตรพื้นฐานของทฤษฎีบทเบย์:

P ( Y | X ) = P ( X | Y ) P ( Y ) P ( X )

คำอธิบายตัวแปรอย่างละเอียด:

ตัวแปร ชื่อ ความหมาย ตัวอย่าง
P(Y|X) Posterior Probability ความน่าจะเป็นของคลาส Y หลังจากเห็นข้อมูล X P(ฝนตก | เมฆมาก) = ความน่าจะเป็นที่ฝนจะตก เมื่อเห็นว่าเมฆมาก
P(X|Y) Likelihood ความน่าจะเป็นที่จะเห็นข้อมูล X ถ้าอยู่ในคลาส Y P(เมฆมาก | ฝนตก) = ความน่าจะเป็นที่จะเห็นเมฆมาก ในวันที่ฝนตก
P(Y) Prior Probability ความน่าจะเป็นของคลาส Y ก่อนเห็นข้อมูลใดๆ P(ฝนตก) = ความน่าจะเป็นพื้นฐานที่ฝนจะตก
P(X) Evidence (Marginal) ความน่าจะเป็นรวมของข้อมูล X จากทุกคลาส P(เมฆมาก) = ความน่าจะเป็นที่จะเห็นเมฆมากโดยทั่วไป

ความสำคัญของแต่ละส่วน:

  1. Prior P(Y) - แสดงความรู้เบื้องต้นก่อนเห็นข้อมูล

  2. Likelihood P(X|Y) - บอกว่าข้อมูลสนับสนุนคลาสใดมากกว่ากัน

  3. Posterior P(Y|X) - ผลลัพธ์สุดท้ายที่รวม Prior และ Likelihood เข้าด้วยกัน

  4. Evidence P(X) - ทำหน้าที่ normalize ให้ความน่าจะเป็นรวมเป็น 1

2.1.2 กฎการตัดสินใจแบบเบย์ (Bayes Decision Rule)

flowchart TD
    A["ข้อมูลใหม่ X"] --> B["คำนวณ P(Y=c₁|X)"]
    A --> C["คำนวณ P(Y=c₂|X)"]
    B --> D{"เปรียบเทียบ
Posterior"} C --> D D -->|"P(c₁|X) > P(c₂|X)"| E["ทำนาย: คลาส c₁"] D -->|"P(c₂|X) > P(c₁|X)"| F["ทำนาย: คลาส c₂"] style A fill:#458588,stroke:#282828,color:#ebdbb2 style B fill:#689d6a,stroke:#282828,color:#ebdbb2 style C fill:#689d6a,stroke:#282828,color:#ebdbb2 style D fill:#d79921,stroke:#282828,color:#ebdbb2 style E fill:#98971a,stroke:#282828,color:#ebdbb2 style F fill:#cc241d,stroke:#282828,color:#ebdbb2

กฎการตัดสินใจ:

y ^ = arg max y P ( Y = y | X )

หมายความว่า: เลือกคลาสที่มี Posterior Probability สูงสุด

2.2 การคำนวณตัวอย่างด้วยข้อมูลฝนตก (แบบละเอียด)

โจทย์: ทำนายว่าฝนจะตกหรือไม่ เมื่อ เมฆ = มาก, ความชื้น = มาก, อากาศ = ร้อน

ขั้นตอนที่ 1: คำนวณ Prior Probability P(Y)

จากข้อมูล 10 วัน:

การคำนวณ:

P ( Rain = ตก ) = จำนวนวันฝนตก จำนวนวันทั้งหมด = 5 10 = 0.5 P ( Rain = ไม่ตก ) = จำนวนวันฝนไม่ตก จำนวนวันทั้งหมด = 5 10 = 0.5

สรุป Prior:

คลาส จำนวน P(Y)
ตก 5 0.5
ไม่ตก 5 0.5

ขั้นตอนที่ 2: คำนวณ Likelihood P(X|Y)

สำหรับ Rain = ตก (5 วัน: 1, 2, 4, 7, 9):

ตรวจสอบแต่ละ feature ในวันที่ฝนตก:

วันที่ เมฆ ความชื้น อากาศ
1 มาก มาก ร้อน
2 มาก มาก ร้อน
4 มาก น้อย เย็น
7 มาก มาก เย็น
9 มาก น้อย ร้อน

คำนวณ Likelihood:

P ( เมฆ = มาก | Rain = ตก ) = 5 5 = 1.0 P ( ความชื้น = มาก | Rain = ตก ) = 3 5 = 0.6 P ( อากาศ = ร้อน | Rain = ตก ) = 3 5 = 0.6

สำหรับ Rain = ไม่ตก (5 วัน: 3, 5, 6, 8, 10):

ตรวจสอบแต่ละ feature ในวันที่ฝนไม่ตก:

วันที่ เมฆ ความชื้น อากาศ
3 น้อย น้อย เย็น
5 น้อย มาก ร้อน
6 น้อย น้อย ร้อน
8 น้อย มาก เย็น
10 น้อย น้อย เย็น

คำนวณ Likelihood:

P ( เมฆ = มาก | Rain = ไม่ตก ) = 0 5 = 0.0 P ( ความชื้น = มาก | Rain = ไม่ตก ) = 2 5 = 0.4 P ( อากาศ = ร้อน | Rain = ไม่ตก ) = 2 5 = 0.4

สรุป Likelihood ทั้งหมด:

Feature ค่า P(Feature|Rain=ตก) P(Feature|Rain=ไม่ตก)
เมฆ มาก 1.0 0.0
ความชื้น มาก 0.6 0.4
อากาศ ร้อน 0.6 0.4

ขั้นตอนที่ 3: ใช้ทฤษฎีบทเบย์

สำหรับ Rain = ตก:

เนื่องจากเราสมมติว่า features เป็นอิสระต่อกัน (Naive Bayes assumption):

P ( ตก | X ) P ( X | ตก ) P ( ตก ) P ( ตก | X ) 1.0 × 0.6 × 0.6 × 0.5 = 0.18

สำหรับ Rain = ไม่ตก:

P ( ไม่ตก | X ) P ( X | ไม่ตก ) P ( ไม่ตก ) P ( ไม่ตก | X ) 0.0 × 0.4 × 0.4 × 0.5 = 0.0

ขั้นตอนที่ 4: เปรียบเทียบและตัดสินใจ

คลาส Unnormalized Posterior
ตก 0.18
ไม่ตก 0.0

Normalize (ถ้าต้องการความน่าจะเป็นที่แท้จริง):

P ( ตก | X ) = 0.18 0.18 + 0.0 = 1.0 P ( ไม่ตก | X ) = 0.0 0.18 + 0.0 = 0.0

ผลลัพธ์: เนื่องจาก P(ตก|X) = 1.0 > P(ไม่ตก|X) = 0.0 → ทำนาย: ฝนตก

ข้อสังเกต: ผลลัพธ์นี้สมเหตุสมผลเพราะในข้อมูลฝึก ทุกครั้งที่เมฆมาก ฝนตกเสมอ!

2.3 ฟังก์ชันการสูญเสียและความเสี่ยง (Loss Function and Risk)

2.3.1 ฟังก์ชันการสูญเสีย (Loss Function)

ความหมาย: ฟังก์ชันการสูญเสียกำหนดต้นทุนหรือความเสียหายเมื่อทำการตัดสินใจผิดพลาด

L ( ytrue , ypred )

คำอธิบายตัวแปร:

ทำไมต้องใช้ Loss Function?

ในชีวิตจริง การตัดสินใจผิดพลาดในแต่ละทิศทางอาจมีผลกระทบต่างกัน ตัวอย่าง:

ตัวอย่างที่ 1: การวินิจฉัยโรค

ตัวอย่างที่ 2: การทำนายฝนตก

ตัวอย่าง Loss Matrix สำหรับการทำนายฝน:

ทำนาย: ตก ทำนาย: ไม่ตก
จริง: ตก 0 10 (พลาดไม่พกร่ม → เปียก)
จริง: ไม่ตก 2 (พกร่มเปล่า) 0

อ่าน Loss Matrix:

2.3.2 ความเสี่ยงที่คาดหวัง (Expected Risk)

สูตร:

R ( α | X ) = k=1 K L ( ck , α ) P ( ck | X )

คำอธิบายตัวแปร:

ตัวแปร ความหมาย
R(α|X) ความเสี่ยงที่คาดหวังเมื่อเลือกการกระทำ α
α การกระทำที่เลือก (action) เช่น ทำนายว่าฝนตก
c_k คลาสที่ k
L(c_k, α) ค่าสูญเสียเมื่อคลาสจริงเป็น c_k และเลือกการกระทำ α
P(c_k|X) ความน่าจะเป็นภายหลังของคลาส c_k
K จำนวนคลาสทั้งหมด

2.3.3 ตัวอย่างการคำนวณ Expected Risk

โจทย์: สมมติว่า P(ตก|X) = 0.7, P(ไม่ตก|X) = 0.3

คำนวณ Risk ของแต่ละการตัดสินใจ:

Risk ถ้าทำนายว่า "ตก" (พกร่ม):

R ( ตก | X ) = L ( จริงตก , ทำนายตก ) × P ( ตก | X ) + L ( จริงไม่ตก , ทำนายตก ) × P ( ไม่ตก | X ) R ( ตก | X ) = 0 × 0.7 + 2 × 0.3 = 0.6

Risk ถ้าทำนายว่า "ไม่ตก" (ไม่พกร่ม):

R ( ไม่ตก | X ) = 10 × 0.7 + 0 × 0.3 = 7.0

เปรียบเทียบ:

การตัดสินใจ Expected Risk
ทำนาย "ตก" 0.6
ทำนาย "ไม่ตก" 7.0

ผลลัพธ์: เลือก "ทำนาย: ตก" เพราะมี Expected Risk ต่ำกว่า


3. ตัวจำแนกเบย์แบบไร้เดียงสา (Naive Bayes Classifier)

3.1 แนวคิดหลัก

Naive Bayes Classifier เป็นตัวจำแนกประเภทที่อาศัยทฤษฎีบทเบย์ โดยมีสมมติฐานความเป็นอิสระแบบไร้เดียงสา (Naive Independence Assumption) ที่ว่า features ทั้งหมดเป็นอิสระต่อกันเมื่อกำหนดคลาส

ทำไมถึงเรียกว่า "Naive" (ไร้เดียงสา)?

คำว่า "Naive" หมายถึงความ "ไร้เดียงสา" หรือ "เรียบง่ายเกินไป" เพราะสมมติฐานที่ว่า features ทั้งหมดเป็นอิสระต่อกัน มักไม่เป็นจริงในทางปฏิบัติ

ตัวอย่าง:

แต่ทำไม Naive Bayes ยังคงทำงานได้ดี?

แม้ว่าสมมติฐานจะไม่ถูกต้อง แต่:

  1. การจัดอันดับความน่าจะเป็นยังคงถูกต้องในหลายกรณี
  2. คำนวณเร็วมาก
  3. ทำงานได้ดีเมื่อข้อมูลน้อย
  4. ทนทานต่อ high-dimensional data
flowchart TD
    subgraph INPUT["ข้อมูลนำเข้า (Input Features)"]
        X1["เมฆ (Cloud)"]
        X2["ความชื้น (Humidity)"]
        X3["อากาศ (Temp)"]
    end
    
    Y["คลาส Y
(ฝนตก/ไม่ตก)"] Y --> X1 Y --> X2 Y --> X3 style Y fill:#cc241d,stroke:#282828,color:#ebdbb2 style X1 fill:#458588,stroke:#282828,color:#ebdbb2 style X2 fill:#689d6a,stroke:#282828,color:#ebdbb2 style X3 fill:#d79921,stroke:#282828,color:#ebdbb2

3.2 สูตรทางคณิตศาสตร์

3.2.1 สมมติฐานความเป็นอิสระแบบมีเงื่อนไข (Conditional Independence Assumption)

สูตรทั่วไป (ไม่ใช้สมมติฐาน):

P ( X1 , X2 , , Xn | Y ) = P ( X1 | Y ) P ( X2 | X1 , Y )

สูตร Naive Bayes (ใช้สมมติฐาน):

P ( X1 , X2 , , Xn | Y ) = i=1 n P ( Xi | Y )

คำอธิบาย:

3.2.2 กฎการจำแนก Naive Bayes

y ^ = arg max y P ( Y = y ) i=1 n P ( Xi | Y = y )

คำอธิบายตัวแปร:

ตัวแปร ความหมาย
ŷ คลาสที่ทำนาย (predicted class)
argmax_y เลือกค่า y ที่ทำให้นิพจน์มีค่าสูงสุด
P(Y=y) Prior probability ของคลาส y
P(X_i|Y=y) Likelihood ของ feature ที่ i เมื่ออยู่ในคลาส y
n จำนวน features ทั้งหมด
ผลคูณ (product)

ในทางปฏิบัติใช้ Log:

เนื่องจากการคูณความน่าจะเป็นหลายค่าอาจทำให้เกิด numerical underflow จึงใช้ log:

y ^ = arg max y [ log P ( Y = y ) + i=1 n log P ( Xi | Y = y ) ]

3.3 การคำนวณด้วยข้อมูลตัวอย่าง (แบบละเอียด)

3.3.1 ขั้นตอนการสร้างตาราง Likelihood

ขั้นตอนที่ 1: สร้างตาราง Prior Probability

คลาส จำนวน P(Y) วิธีคำนวณ
ตก 5 0.5 5/10
ไม่ตก 5 0.5 5/10

ขั้นตอนที่ 2: สร้างตาราง Likelihood สำหรับ เมฆ (Cloud)

เมฆ นับ(Rain=ตก) P(เมฆ|Rain=ตก) นับ(Rain=ไม่ตก) P(เมฆ|Rain=ไม่ตก)
มาก 5 5/5 = 1.0 0 0/5 = 0.0*
น้อย 0 0/5 = 0.0* 5 5/5 = 1.0

*หมายเหตุ: ค่า 0 เป็นปัญหา! จะแก้ด้วย Laplace Smoothing

ขั้นตอนที่ 3: สร้างตาราง Likelihood สำหรับ ความชื้น (Humidity)

ความชื้น นับ(Rain=ตก) P(ความชื้น|Rain=ตก) นับ(Rain=ไม่ตก) P(ความชื้น|Rain=ไม่ตก)
มาก 3 3/5 = 0.6 2 2/5 = 0.4
น้อย 2 2/5 = 0.4 3 3/5 = 0.6

ขั้นตอนที่ 4: สร้างตาราง Likelihood สำหรับ อากาศ (Temp)

อากาศ นับ(Rain=ตก) P(อากาศ|Rain=ตก) นับ(Rain=ไม่ตก) P(อากาศ|Rain=ไม่ตก)
ร้อน 3 3/5 = 0.6 2 2/5 = 0.4
เย็น 2 2/5 = 0.4 3 3/5 = 0.6

3.3.2 ตัวอย่างการทำนายที่ 1

คำถาม: ทำนายว่าฝนจะตกหรือไม่ เมื่อ เมฆ=มาก, ความชื้น=น้อย, อากาศ=เย็น

การคำนวณ:

สำหรับ Rain = ตก:

P ( ตก | X ) P ( ตก ) × P ( มาก | ตก ) × P ( น้อย | ตก ) × P ( เย็น | ตก ) P ( ตก | X ) 0.5 × 1.0 × 0.4 × 0.4 = 0.08

สำหรับ Rain = ไม่ตก:

P ( ไม่ตก | X ) 0.5 × 0.0 × 0.6 × 0.6 = 0.0

เปรียบเทียบ:

คลาส Unnormalized Score
ตก 0.08
ไม่ตก 0.0

ผลลัพธ์: ทำนาย ฝนตก (ความน่าจะเป็น 100%)

⚠️ ปัญหา: P(เมฆ=มาก|Rain=ไม่ตก) = 0 ทำให้ผลคูณทั้งหมดเป็น 0!

3.4 Laplace Smoothing (Additive Smoothing)

3.4.1 ปัญหา Zero Probability

ปัญหา: เมื่อ feature บางค่าไม่เคยปรากฏในคลาสใดคลาสหนึ่ง จะทำให้ likelihood เป็น 0 และผลคูณทั้งหมดเป็น 0

ตัวอย่าง:

3.4.2 วิธีแก้ด้วย Laplace Smoothing

สูตร:

P ( Xi = v | Y = c ) = count ( Xi = v , Y = c ) + α count ( Y = c ) + α | Vi |

คำอธิบายตัวแปร:

ตัวแปร ความหมาย ตัวอย่าง
α พารามิเตอร์ smoothing ปกติใช้ 1 (Laplace)
count(X_i=v, Y=c) จำนวนครั้งที่เห็น X_i=v ในคลาส c count(เมฆ=มาก, Rain=ไม่ตก) = 0
count(Y=c) จำนวนข้อมูลทั้งหมดในคลาส c count(Rain=ไม่ตก) = 5
|V_i| จำนวนค่าที่เป็นไปได้ของ feature X_i เมฆมี 2 ค่า (มาก, น้อย)

ตัวอย่างการคำนวณ:

ก่อน Smoothing:

P ( เมฆ = มาก | Rain = ไม่ตก ) = 0 5 = 0

หลัง Smoothing (α = 1):

P ( เมฆ = มาก | Rain = ไม่ตก ) = 0+1 5+1×2 = 1 7 0.143

3.5 ประเภทของ Naive Bayes

flowchart TD
    NB["Naive Bayes
Classifier"] NB --> MNB["Multinomial NB
ข้อมูลนับได้"] NB --> BNB["Bernoulli NB
ข้อมูล binary"] NB --> GNB["Gaussian NB
ข้อมูลต่อเนื่อง"] NB --> CNB["Categorical NB
ข้อมูลหมวดหมู่"] style NB fill:#cc241d,stroke:#282828,color:#ebdbb2 style MNB fill:#d65d0e,stroke:#282828,color:#ebdbb2 style BNB fill:#d79921,stroke:#282828,color:#ebdbb2 style GNB fill:#98971a,stroke:#282828,color:#ebdbb2 style CNB fill:#689d6a,stroke:#282828,color:#ebdbb2
ประเภท ลักษณะข้อมูล ตัวอย่างการใช้งาน
Multinomial NB ข้อมูลนับได้ (count data) การจำแนกเอกสาร (word frequency)
Bernoulli NB ข้อมูล binary (0/1) การตรวจจับ feature มี/ไม่มี
Gaussian NB ข้อมูลต่อเนื่อง ข้อมูลที่มีการกระจายแบบปกติ
Categorical NB ข้อมูลหมวดหมู่ ข้อมูลแบบ categorical เช่น สี, ขนาด

4. การวิเคราะห์จำแนกแบบเกาส์เซียน (Gaussian Discriminant Analysis)

4.1 แนวคิดหลัก

การวิเคราะห์จำแนกแบบเกาส์เซียน (Gaussian Discriminant Analysis - GDA) เป็น generative model ที่สมมติว่าข้อมูลในแต่ละคลาสมีการกระจายแบบเกาส์เซียน (Normal Distribution)

flowchart LR
    subgraph GDA["Gaussian Discriminant Analysis"]
        direction TB
        A["สมมติ P(X|Y) เป็น
Gaussian Distribution"] B["เรียนรู้ μ, Σ
สำหรับแต่ละคลาส"] C["ใช้ Bayes Theorem
คำนวณ P(Y|X)"] A --> B --> C style A fill:#458588,stroke:#282828,color:#ebdbb2 style B fill:#689d6a,stroke:#282828,color:#ebdbb2 style C fill:#98971a,stroke:#282828,color:#ebdbb2 end

4.2 สมมติฐานทางคณิตศาสตร์

4.2.1 การกระจายแบบเกาส์เซียนหลายตัวแปร (Multivariate Gaussian)

สูตร:

P ( X | Y = k ) = 1 (2π) d/2 |Σk| 1/2 exp ( 1 2 (Xμk) T Σ k 1 ( X μk ) )

คำอธิบายตัวแปรอย่างละเอียด:

ตัวแปร ความหมาย ขนาด/มิติ ตัวอย่าง
X เวกเตอร์ข้อมูล d × 1 X = [เมฆ, ความชื้น, อากาศ]ᵀ
μ_k เวกเตอร์ค่าเฉลี่ยของคลาส k d × 1 μ_ตก = [1.0, 0.6, 0.6]ᵀ
Σ_k เมทริกซ์ความแปรปรวนร่วมของคลาส k d × d แสดงความสัมพันธ์ระหว่าง features
|Σ_k| ดีเทอร์มิแนนต์ของ Σ_k scalar วัด "ปริมาตร" ของการกระจาย
Σ_k⁻¹ เมทริกซ์ผกผันของ Σ_k d × d ใช้คำนวณระยะทาง Mahalanobis
d จำนวนมิติของข้อมูล (จำนวน features) scalar d = 3 (เมฆ, ความชื้น, อากาศ)

4.3 ประเภทของ GDA

flowchart TD
    GDA["Gaussian Discriminant
Analysis"] GDA --> LDA["Linear Discriminant Analysis
(LDA)"] GDA --> QDA["Quadratic Discriminant
Analysis (QDA)"] LDA --> LDA_DESC["Σ₁ = Σ₂ = Σ
ใช้ Covariance ร่วมกัน
Decision boundary: เส้นตรง"] QDA --> QDA_DESC["Σ₁ ≠ Σ₂
แต่ละคลาสมี Covariance ต่างกัน
Decision boundary: เส้นโค้ง"] style GDA fill:#cc241d,stroke:#282828,color:#ebdbb2 style LDA fill:#458588,stroke:#282828,color:#ebdbb2 style QDA fill:#d65d0e,stroke:#282828,color:#ebdbb2 style LDA_DESC fill:#689d6a,stroke:#282828,color:#ebdbb2 style QDA_DESC fill:#d79921,stroke:#282828,color:#ebdbb2
คุณสมบัติ LDA QDA
Covariance Matrix ใช้ร่วมกันทุกคลาส (Σ) แต่ละคลาสมีของตัวเอง (Σ_k)
Decision Boundary เส้นตรง (Linear) เส้นโค้ง (Quadratic)
จำนวนพารามิเตอร์ น้อยกว่า มากกว่า
ความเสี่ยง Overfitting ต่ำกว่า สูงกว่า
เหมาะกับ ข้อมูลน้อย, คลาสมี shape คล้ายกัน ข้อมูลมาก, คลาสมี shape ต่างกัน

4.4 การประมาณค่าพารามิเตอร์

4.4.1 การประมาณค่าเฉลี่ย (Mean Estimation)

μ ^ k = 1 nk i:yi=k xi

คำอธิบาย:

4.5 ตัวอย่างการคำนวณ

4.5.1 แปลงข้อมูล Categorical เป็นตัวเลข

Feature ค่าเดิม ค่าใหม่
เมฆ มาก 1
เมฆ น้อย 0
ความชื้น มาก 1
ความชื้น น้อย 0
อากาศ ร้อน 1
อากาศ เย็น 0

4.5.2 คำนวณค่าเฉลี่ย (Mean)

สำหรับคลาส "ตก" (วันที่ 1, 2, 4, 7, 9):

μตก = 1 5 [ 1+1+1+1+1 1+1+0+1+0 1+1+0+0+1 ] = [ 1.0 0.6 0.6 ]

สำหรับคลาส "ไม่ตก" (วันที่ 3, 5, 6, 8, 10):

μไม่ตก = 1 5 [ 0+0+0+0+0 0+1+0+1+0 0+1+1+0+0 ] = [ 0.0 0.4 0.4 ]

สรุป:

คลาส μ_เมฆ μ_ความชื้น μ_อากาศ
ตก 1.0 0.6 0.6
ไม่ตก 0.0 0.4 0.4

5. การประมาณค่าความน่าจะเป็นสูงสุด (Maximum Likelihood Estimation)

5.1 แนวคิดหลัก

การประมาณค่าความน่าจะเป็นสูงสุด (Maximum Likelihood Estimation - MLE) เป็นวิธีการทางสถิติสำหรับการประมาณค่าพารามิเตอร์ของโมเดล โดยหาค่าพารามิเตอร์ที่ทำให้ข้อมูลที่สังเกตได้มีความน่าจะเป็นสูงสุด

flowchart LR
    A["ข้อมูล D"] --> B["กำหนดโมเดล
P(D|θ)"] B --> C["เขียน Likelihood
L(θ) = P(D|θ)"] C --> D["หา Log-Likelihood
ℓ(θ) = log L(θ)"] D --> E["หาอนุพันธ์
∂ℓ/∂θ = 0"] E --> F["แก้หา θ_MLE"] style A fill:#458588,stroke:#282828,color:#ebdbb2 style B fill:#689d6a,stroke:#282828,color:#ebdbb2 style C fill:#98971a,stroke:#282828,color:#ebdbb2 style D fill:#d79921,stroke:#282828,color:#ebdbb2 style E fill:#d65d0e,stroke:#282828,color:#ebdbb2 style F fill:#cc241d,stroke:#282828,color:#ebdbb2

5.2 สูตรทางคณิตศาสตร์

5.2.1 Likelihood Function

สูตร:

L ( θ ) = P ( D | θ ) = i=1 n P ( xi | θ )

คำอธิบายตัวแปร:

ตัวแปร ความหมาย
L(θ) Likelihood function - ความน่าจะเป็นของข้อมูลเมื่อกำหนดพารามิเตอร์ θ
D ข้อมูลที่สังเกตได้ทั้งหมด
θ พารามิเตอร์ที่ต้องการประมาณ
n จำนวนข้อมูล
x_i ข้อมูลตัวที่ i

5.2.2 Log-Likelihood Function

สูตร:

( θ ) = log L ( θ ) = i=1 n log P ( xi | θ )

5.2.3 MLE Estimator

θ ^ MLE = arg max θ ( θ )

5.3 ตัวอย่างการคำนวณ MLE

5.3.1 MLE สำหรับ Bernoulli Distribution

สถานการณ์: มีข้อมูลว่าฝนตกหรือไม่ 10 วัน โดยฝนตก 5 วัน

ข้อมูล: X = [1, 1, 0, 1, 0, 0, 1, 0, 1, 0] (1 = ตก, 0 = ไม่ตก)

ผลลัพธ์:

θ ^ MLE = 5 10 = 0.5

5.3.2 สูตรทั่วไปสำหรับ Bernoulli MLE

θ ^ MLE = จำนวนที่เกิดเหตุการณ์ จำนวนข้อมูลทั้งหมด = k n

6. การประมาณค่าภายหลังสูงสุด (Maximum A Posteriori - MAP)

6.1 แนวคิดหลัก

การประมาณค่าภายหลังสูงสุด (Maximum A Posteriori - MAP) เป็นการขยายแนวคิดของ MLE โดยเพิ่มความรู้ก่อนหน้า (Prior) เข้าไปในการประมาณค่าพารามิเตอร์

flowchart LR
    subgraph MLE["Maximum Likelihood
(MLE)"] A1["θ_MLE = argmax P(D|θ)"] style A1 fill:#458588,stroke:#282828,color:#ebdbb2 end subgraph MAP["Maximum A Posteriori
(MAP)"] B1["θ_MAP = argmax P(θ|D)"] B2["= argmax P(D|θ)P(θ)"] B1 --> B2 style B1 fill:#cc241d,stroke:#282828,color:#ebdbb2 style B2 fill:#d65d0e,stroke:#282828,color:#ebdbb2 end MLE --> |"เพิ่ม Prior P(θ)"| MAP

6.2 สูตรทางคณิตศาสตร์

6.2.1 MAP Estimation

สูตร:

θ ^ MAP = arg max θ P ( θ | D ) = arg max θ P ( D | θ ) P ( θ )

ในรูป Log:

θ ^ MAP = arg max θ [ log P ( D | θ ) + log P ( θ ) ]

6.3 ความแตกต่างระหว่าง MLE และ MAP

คุณสมบัติ MLE MAP
สิ่งที่ maximize P(D|θ) P(θ|D) = P(D|θ)P(θ)
การใช้ Prior ไม่ใช้ ใช้
เมื่อข้อมูลน้อย อาจ overfit มี regularization
เมื่อข้อมูลมาก เข้าใกล้ค่าจริง เข้าใกล้ MLE

6.4 MAP สำหรับ Bernoulli ด้วย Beta Prior

6.4.1 MAP Estimate

θ ^ MAP = k + α 1 n + α + β 2

คำอธิบายตัวแปร:

ตัวแปร ความหมาย
k จำนวนความสำเร็จที่สังเกตได้
n จำนวนข้อมูลทั้งหมด
α พารามิเตอร์ของ Beta Prior (pseudo-count สำหรับความสำเร็จ)
β พารามิเตอร์ของ Beta Prior (pseudo-count สำหรับความล้มเหลว)

6.5 ตัวอย่างการคำนวณ (แบบละเอียด)

ข้อมูล: ฝนตก 5 วันจาก 10 วัน (k = 5, n = 10)

กรณีที่ 1: ไม่มี Prior (MLE)

θ ^ MLE = k n = 5 10 = 0.5

กรณีที่ 2: Uniform Prior - Beta(1, 1)

θ ^ MAP = 5+11 10+1+12 = 5 10 = 0.5

กรณีที่ 3: Prior ที่เชื่อว่าฝนตกบ่อย - Beta(5, 2)

θ ^ MAP = 5+51 10+5+22 = 9 15 = 0.6

สรุปผลลัพธ์:

Prior α β θ_MAP การเปลี่ยนแปลงจาก MLE
ไม่มี (MLE) - - 0.500 -
Uniform 1 1 0.500 ไม่เปลี่ยน
Favor Rain 5 2 0.600 +0.1 (20% เพิ่ม)
Favor No Rain 2 5 0.400 -0.1 (20% ลด)

6.6 ความสัมพันธ์ระหว่าง MAP และ Laplace Smoothing

ข้อสังเกตสำคัญ: Laplace Smoothing เป็นกรณีพิเศษของ MAP!

สูตร Laplace Smoothing:

P ( X = v | Y = c ) = count ( v , c ) + 1 count ( c ) + | V |

สรุป: Laplace Smoothing (α = 1) ≈ MAP ด้วย Beta(2, 2) Prior


7. สรุป

7.1 ภาพรวมของ Generative Models

flowchart TD
    subgraph GEN["Supervised Learning - Generative Models"]
        A["Bayes Decision Theory
กรอบแนวคิดการตัดสินใจ"] B["Naive Bayes
สมมติฐานความเป็นอิสระ"] C["Gaussian Discriminant Analysis
ข้อมูลกระจายแบบเกาส์เซียน"] D["MLE
ประมาณค่าจาก Likelihood"] E["MAP
ประมาณค่าจาก Posterior"] end A --> B A --> C D --> B D --> C E --> B E --> C style A fill:#cc241d,stroke:#282828,color:#ebdbb2 style B fill:#d65d0e,stroke:#282828,color:#ebdbb2 style C fill:#d79921,stroke:#282828,color:#ebdbb2 style D fill:#98971a,stroke:#282828,color:#ebdbb2 style E fill:#689d6a,stroke:#282828,color:#ebdbb2

7.2 ตารางเปรียบเทียบ

หัวข้อ จุดเด่น จุดด้อย เหมาะกับ พารามิเตอร์สำคัญ
Bayes Decision รองรับ Loss Function ต้องกำหนด Loss Matrix การตัดสินใจที่มีต้นทุนต่างกัน Loss Matrix
Naive Bayes เรียบง่าย, เร็ว สมมติฐานอาจไม่จริง Text classification, Spam α (smoothing)
GDA (LDA) Decision boundary ตรง ต้องการ shared covariance ข้อมูลกระจายคล้ายกัน μ, Σ
GDA (QDA) Decision boundary โค้ง ต้องการข้อมูลมาก คลาสมี shape ต่างกัน μ_k, Σ_k
MLE ไม่ต้องใช้ Prior อาจ overfit เมื่อ n น้อย ข้อมูลมาก -
MAP มี regularization ต้องเลือก Prior ข้อมูลน้อย α, β (prior params)

7.3 ข้อควรจำสำคัญ

1. Generative Models vs Discriminative Models

2. Naive Bayes

3. Gaussian Discriminant Analysis

4. MLE vs MAP

7.4 ตัวอย่างสรุปการคำนวณ

โจทย์: ทำนายว่าฝนจะตกหรือไม่ เมื่อ เมฆ=มาก, ความชื้น=มาก, อากาศ=ร้อน

ขั้นตอน การคำนวณ ผลลัพธ์
1. Prior P(ตก) = 5/10 0.5
2. Likelihood (ตก) P(มาก|ตก) × P(มาก|ตก) × P(ร้อน|ตก) 1.0 × 0.6 × 0.6 = 0.36
3. Likelihood (ไม่ตก) P(มาก|ไม่ตก) × P(มาก|ไม่ตก) × P(ร้อน|ไม่ตก) 0.0 × 0.4 × 0.4 = 0.0
4. Unnorm. Posterior (ตก) 0.36 × 0.5 0.18
5. Unnorm. Posterior (ไม่ตก) 0.0 × 0.5 0.0
6. Normalized 0.18 / (0.18 + 0.0) P(ตก|X) = 1.0
7. ผลลัพธ์ ฝนตก

ภาคผนวก: ตารางสรุปสูตรสำคัญ

ตาราง A: สูตรพื้นฐาน

ชื่อ สูตร ใช้เมื่อ
ทฤษฎีบทเบย์ P(Y|X) = P(X|Y)P(Y) / P(X) ต้องการ posterior
Naive Bayes P(Y|X) ∝ P(Y) ∏ P(Xᵢ|Y) features เป็นอิสระ
MLE (Bernoulli) θ = k/n ประมาณความน่าจะเป็น
MAP (Bernoulli) θ = (k+α-1)/(n+α+β-2) ต้องการ regularization
Laplace Smoothing P = (count+1)/(total+|V|) หลีกเลี่ยง zero prob

ตาราง B: พารามิเตอร์และความหมาย

Symbol ชื่อ ความหมาย
P(Y) Prior ความน่าจะเป็นก่อนเห็นข้อมูล
P(X|Y) Likelihood ความน่าจะเป็นของข้อมูลในคลาส
P(Y|X) Posterior ความน่าจะเป็นหลังเห็นข้อมูล
μ Mean ค่าเฉลี่ย
Σ Covariance ความแปรปรวนร่วม
α, β Beta params พารามิเตอร์ Prior
θ Parameter พารามิเตอร์ที่ต้องการประมาณ

8. เอกสารอ้างอิง

  1. Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer.

  2. Murphy, K. P. (2012). Machine Learning: A Probabilistic Perspective. MIT Press.

  3. Hastie, T., Tibshirani, R., & Friedman, J. (2009). The Elements of Statistical Learning. Springer.

  4. Ng, A. Y., & Jordan, M. I. (2002). "On Discriminative vs. Generative Classifiers: A comparison of logistic regression and naive Bayes." Advances in Neural Information Processing Systems.

  5. Duda, R. O., Hart, P. E., & Stork, D. G. (2001). Pattern Classification (2nd ed.). Wiley.


เอกสารนี้จัดทำเพื่อการศึกษา - อัปเดตล่าสุด: 2025