เอกสารนี้ได้รับการปรับปรุงเพิ่มเติมคำอธิบายให้ละเอียดยิ่งขึ้น โดยเน้น:
| วันที่ | เมฆ (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%) |
ข้อสังเกตสำคัญ:
แบบจำลองกำเนิด (Generative Models) คือประเภทของแบบจำลองทางสถิติที่พยายามเรียนรู้การกระจายตัวร่วม (Joint Distribution) ของข้อมูลนำเข้า X และผลลัพธ์ Y คือ P(X, Y) จากนั้นใช้ทฤษฎีบทเบย์ในการคำนวณความน่าจะเป็นภายหลัง P(Y|X) เพื่อทำการจำแนกประเภท
ทำไมถึงเรียกว่า "Generative"?
คำว่า "Generative" หมายถึงความสามารถในการ สร้าง (Generate) ข้อมูลใหม่ได้ เนื่องจากโมเดลเรียนรู้การกระจายตัวของข้อมูลทั้งหมด P(X, Y) ทำให้:
ตัวอย่างในชีวิตจริง:
ลองนึกภาพว่าเราต้องการสอนคนให้แยกแยะระหว่างแมวกับสุนัข:
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 เมื่อ:
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
ทฤษฎีการตัดสินใจแบบเบย์ (Bayes Decision Theory) เป็นกรอบแนวคิดทางสถิติที่ใช้ในการตัดสินใจภายใต้ความไม่แน่นอน โดยอาศัยหลักการของความน่าจะเป็นแบบเบย์เซียน
สูตรพื้นฐานของทฤษฎีบทเบย์:
คำอธิบายตัวแปรอย่างละเอียด:
| ตัวแปร | ชื่อ | ความหมาย | ตัวอย่าง |
|---|---|---|---|
| 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(เมฆมาก) = ความน่าจะเป็นที่จะเห็นเมฆมากโดยทั่วไป |
ความสำคัญของแต่ละส่วน:
Prior P(Y) - แสดงความรู้เบื้องต้นก่อนเห็นข้อมูล
Likelihood P(X|Y) - บอกว่าข้อมูลสนับสนุนคลาสใดมากกว่ากัน
Posterior P(Y|X) - ผลลัพธ์สุดท้ายที่รวม Prior และ Likelihood เข้าด้วยกัน
Evidence P(X) - ทำหน้าที่ normalize ให้ความน่าจะเป็นรวมเป็น 1
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
กฎการตัดสินใจ:
หมายความว่า: เลือกคลาสที่มี Posterior Probability สูงสุด
โจทย์: ทำนายว่าฝนจะตกหรือไม่ เมื่อ เมฆ = มาก, ความชื้น = มาก, อากาศ = ร้อน
จากข้อมูล 10 วัน:
การคำนวณ:
สรุป Prior:
| คลาส | จำนวน | P(Y) |
|---|---|---|
| ตก | 5 | 0.5 |
| ไม่ตก | 5 | 0.5 |
สำหรับ Rain = ตก (5 วัน: 1, 2, 4, 7, 9):
ตรวจสอบแต่ละ feature ในวันที่ฝนตก:
| วันที่ | เมฆ | ความชื้น | อากาศ |
|---|---|---|---|
| 1 | มาก | มาก | ร้อน |
| 2 | มาก | มาก | ร้อน |
| 4 | มาก | น้อย | เย็น |
| 7 | มาก | มาก | เย็น |
| 9 | มาก | น้อย | ร้อน |
คำนวณ Likelihood:
สำหรับ Rain = ไม่ตก (5 วัน: 3, 5, 6, 8, 10):
ตรวจสอบแต่ละ feature ในวันที่ฝนไม่ตก:
| วันที่ | เมฆ | ความชื้น | อากาศ |
|---|---|---|---|
| 3 | น้อย | น้อย | เย็น |
| 5 | น้อย | มาก | ร้อน |
| 6 | น้อย | น้อย | ร้อน |
| 8 | น้อย | มาก | เย็น |
| 10 | น้อย | น้อย | เย็น |
คำนวณ Likelihood:
สรุป Likelihood ทั้งหมด:
| Feature | ค่า | P(Feature|Rain=ตก) | P(Feature|Rain=ไม่ตก) |
|---|---|---|---|
| เมฆ | มาก | 1.0 | 0.0 |
| ความชื้น | มาก | 0.6 | 0.4 |
| อากาศ | ร้อน | 0.6 | 0.4 |
สำหรับ Rain = ตก:
เนื่องจากเราสมมติว่า features เป็นอิสระต่อกัน (Naive Bayes assumption):
สำหรับ Rain = ไม่ตก:
| คลาส | Unnormalized Posterior |
|---|---|
| ตก | 0.18 |
| ไม่ตก | 0.0 |
Normalize (ถ้าต้องการความน่าจะเป็นที่แท้จริง):
ผลลัพธ์: เนื่องจาก P(ตก|X) = 1.0 > P(ไม่ตก|X) = 0.0 → ทำนาย: ฝนตก
ข้อสังเกต: ผลลัพธ์นี้สมเหตุสมผลเพราะในข้อมูลฝึก ทุกครั้งที่เมฆมาก ฝนตกเสมอ!
ความหมาย: ฟังก์ชันการสูญเสียกำหนดต้นทุนหรือความเสียหายเมื่อทำการตัดสินใจผิดพลาด
คำอธิบายตัวแปร:
ทำไมต้องใช้ Loss Function?
ในชีวิตจริง การตัดสินใจผิดพลาดในแต่ละทิศทางอาจมีผลกระทบต่างกัน ตัวอย่าง:
ตัวอย่างที่ 1: การวินิจฉัยโรค
ตัวอย่างที่ 2: การทำนายฝนตก
ตัวอย่าง Loss Matrix สำหรับการทำนายฝน:
| ทำนาย: ตก | ทำนาย: ไม่ตก | |
|---|---|---|
| จริง: ตก | 0 | 10 (พลาดไม่พกร่ม → เปียก) |
| จริง: ไม่ตก | 2 (พกร่มเปล่า) | 0 |
อ่าน Loss Matrix:
สูตร:
คำอธิบายตัวแปร:
| ตัวแปร | ความหมาย |
|---|---|
| R(α|X) | ความเสี่ยงที่คาดหวังเมื่อเลือกการกระทำ α |
| α | การกระทำที่เลือก (action) เช่น ทำนายว่าฝนตก |
| c_k | คลาสที่ k |
| L(c_k, α) | ค่าสูญเสียเมื่อคลาสจริงเป็น c_k และเลือกการกระทำ α |
| P(c_k|X) | ความน่าจะเป็นภายหลังของคลาส c_k |
| K | จำนวนคลาสทั้งหมด |
โจทย์: สมมติว่า P(ตก|X) = 0.7, P(ไม่ตก|X) = 0.3
คำนวณ Risk ของแต่ละการตัดสินใจ:
Risk ถ้าทำนายว่า "ตก" (พกร่ม):
Risk ถ้าทำนายว่า "ไม่ตก" (ไม่พกร่ม):
เปรียบเทียบ:
| การตัดสินใจ | Expected Risk |
|---|---|
| ทำนาย "ตก" | 0.6 |
| ทำนาย "ไม่ตก" | 7.0 |
ผลลัพธ์: เลือก "ทำนาย: ตก" เพราะมี Expected Risk ต่ำกว่า
Naive Bayes Classifier เป็นตัวจำแนกประเภทที่อาศัยทฤษฎีบทเบย์ โดยมีสมมติฐานความเป็นอิสระแบบไร้เดียงสา (Naive Independence Assumption) ที่ว่า features ทั้งหมดเป็นอิสระต่อกันเมื่อกำหนดคลาส
คำว่า "Naive" หมายถึงความ "ไร้เดียงสา" หรือ "เรียบง่ายเกินไป" เพราะสมมติฐานที่ว่า features ทั้งหมดเป็นอิสระต่อกัน มักไม่เป็นจริงในทางปฏิบัติ
ตัวอย่าง:
แต่ทำไม Naive Bayes ยังคงทำงานได้ดี?
แม้ว่าสมมติฐานจะไม่ถูกต้อง แต่:
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
สูตรทั่วไป (ไม่ใช้สมมติฐาน):
สูตร Naive Bayes (ใช้สมมติฐาน):
คำอธิบาย:
คำอธิบายตัวแปร:
| ตัวแปร | ความหมาย |
|---|---|
| ŷ | คลาสที่ทำนาย (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:
ขั้นตอนที่ 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 |
คำถาม: ทำนายว่าฝนจะตกหรือไม่ เมื่อ เมฆ=มาก, ความชื้น=น้อย, อากาศ=เย็น
การคำนวณ:
สำหรับ Rain = ตก:
สำหรับ Rain = ไม่ตก:
เปรียบเทียบ:
| คลาส | Unnormalized Score |
|---|---|
| ตก | 0.08 |
| ไม่ตก | 0.0 |
ผลลัพธ์: ทำนาย ฝนตก (ความน่าจะเป็น 100%)
⚠️ ปัญหา: P(เมฆ=มาก|Rain=ไม่ตก) = 0 ทำให้ผลคูณทั้งหมดเป็น 0!
ปัญหา: เมื่อ feature บางค่าไม่เคยปรากฏในคลาสใดคลาสหนึ่ง จะทำให้ likelihood เป็น 0 และผลคูณทั้งหมดเป็น 0
ตัวอย่าง:
สูตร:
คำอธิบายตัวแปร:
| ตัวแปร | ความหมาย | ตัวอย่าง |
|---|---|---|
| α | พารามิเตอร์ 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:
หลัง Smoothing (α = 1):
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 เช่น สี, ขนาด |
การวิเคราะห์จำแนกแบบเกาส์เซียน (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
สูตร:
คำอธิบายตัวแปรอย่างละเอียด:
| ตัวแปร | ความหมาย | ขนาด/มิติ | ตัวอย่าง |
|---|---|---|---|
| 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 (เมฆ, ความชื้น, อากาศ) |
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 ต่างกัน |
คำอธิบาย:
| Feature | ค่าเดิม | ค่าใหม่ |
|---|---|---|
| เมฆ | มาก | 1 |
| เมฆ | น้อย | 0 |
| ความชื้น | มาก | 1 |
| ความชื้น | น้อย | 0 |
| อากาศ | ร้อน | 1 |
| อากาศ | เย็น | 0 |
สำหรับคลาส "ตก" (วันที่ 1, 2, 4, 7, 9):
สำหรับคลาส "ไม่ตก" (วันที่ 3, 5, 6, 8, 10):
สรุป:
| คลาส | μ_เมฆ | μ_ความชื้น | μ_อากาศ |
|---|---|---|---|
| ตก | 1.0 | 0.6 | 0.6 |
| ไม่ตก | 0.0 | 0.4 | 0.4 |
การประมาณค่าความน่าจะเป็นสูงสุด (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
สูตร:
คำอธิบายตัวแปร:
| ตัวแปร | ความหมาย |
|---|---|
| L(θ) | Likelihood function - ความน่าจะเป็นของข้อมูลเมื่อกำหนดพารามิเตอร์ θ |
| D | ข้อมูลที่สังเกตได้ทั้งหมด |
| θ | พารามิเตอร์ที่ต้องการประมาณ |
| n | จำนวนข้อมูล |
| x_i | ข้อมูลตัวที่ i |
สูตร:
สถานการณ์: มีข้อมูลว่าฝนตกหรือไม่ 10 วัน โดยฝนตก 5 วัน
ข้อมูล: X = [1, 1, 0, 1, 0, 0, 1, 0, 1, 0] (1 = ตก, 0 = ไม่ตก)
ผลลัพธ์:
การประมาณค่าภายหลังสูงสุด (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
สูตร:
ในรูป Log:
| คุณสมบัติ | MLE | MAP |
|---|---|---|
| สิ่งที่ maximize | P(D|θ) | P(θ|D) = P(D|θ)P(θ) |
| การใช้ Prior | ไม่ใช้ | ใช้ |
| เมื่อข้อมูลน้อย | อาจ overfit | มี regularization |
| เมื่อข้อมูลมาก | เข้าใกล้ค่าจริง | เข้าใกล้ MLE |
คำอธิบายตัวแปร:
| ตัวแปร | ความหมาย |
|---|---|
| k | จำนวนความสำเร็จที่สังเกตได้ |
| n | จำนวนข้อมูลทั้งหมด |
| α | พารามิเตอร์ของ Beta Prior (pseudo-count สำหรับความสำเร็จ) |
| β | พารามิเตอร์ของ Beta Prior (pseudo-count สำหรับความล้มเหลว) |
ข้อมูล: ฝนตก 5 วันจาก 10 วัน (k = 5, n = 10)
| 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% ลด) |
ข้อสังเกตสำคัญ: Laplace Smoothing เป็นกรณีพิเศษของ MAP!
สูตร Laplace Smoothing:
สรุป: Laplace Smoothing (α = 1) ≈ MAP ด้วย Beta(2, 2) Prior
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
| หัวข้อ | จุดเด่น | จุดด้อย | เหมาะกับ | พารามิเตอร์สำคัญ |
|---|---|---|---|---|
| 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) |
โจทย์: ทำนายว่าฝนจะตกหรือไม่ เมื่อ เมฆ=มาก, ความชื้น=มาก, อากาศ=ร้อน
| ขั้นตอน | การคำนวณ | ผลลัพธ์ |
|---|---|---|
| 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. ผลลัพธ์ | ฝนตก |
| ชื่อ | สูตร | ใช้เมื่อ |
|---|---|---|
| ทฤษฎีบทเบย์ | 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 |
| Symbol | ชื่อ | ความหมาย |
|---|---|---|
| P(Y) | Prior | ความน่าจะเป็นก่อนเห็นข้อมูล |
| P(X|Y) | Likelihood | ความน่าจะเป็นของข้อมูลในคลาส |
| P(Y|X) | Posterior | ความน่าจะเป็นหลังเห็นข้อมูล |
| μ | Mean | ค่าเฉลี่ย |
| Σ | Covariance | ความแปรปรวนร่วม |
| α, β | Beta params | พารามิเตอร์ Prior |
| θ | Parameter | พารามิเตอร์ที่ต้องการประมาณ |
Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer.
Murphy, K. P. (2012). Machine Learning: A Probabilistic Perspective. MIT Press.
Hastie, T., Tibshirani, R., & Friedman, J. (2009). The Elements of Statistical Learning. Springer.
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.
Duda, R. O., Hart, P. E., & Stork, D. G. (2001). Pattern Classification (2nd ed.). Wiley.
เอกสารนี้จัดทำเพื่อการศึกษา - อัปเดตล่าสุด: 2025