# การเรียนรู้แบบมีผู้สอน - แบบจำลองกำเนิด ## Supervised Learning - Generative Models **ผู้จัดทำ:** อรรถพล คงหวาน --- # Outline 1. บทนำ (Introduction) 2. ทฤษฎีการตัดสินใจแบบเบย์ (Bayes Decision Theory) 3. ตัวจำแนกเบย์แบบไร้เดียงสา (Naive Bayes Classifier) 4. การวิเคราะห์จำแนกแบบเกาส์เซียน (Gaussian Discriminant Analysis) 5. การประมาณค่าความน่าจะเป็นสูงสุด (Maximum Likelihood Estimation) 6. การประมาณค่าภายหลังสูงสุด (Maximum A Posteriori - MAP) 7. สรุป --- # 1. บทนำ ## Introduction --- ## ข้อมูลตัวอย่างที่ใช้ตลอดเอกสาร | วันที่ | เมฆ | ความชื้น | อากาศ | ฝนตก? | |:------:|:---:|:--------:|:-----:|:-----:| | 1 | มาก | มาก | ร้อน | ตก | | 2 | มาก | มาก | ร้อน | ตก | | 3 | น้อย | น้อย | เย็น | ไม่ตก | | 4 | มาก | น้อย | เย็น | ตก | | 5 | น้อย | มาก | ร้อน | ไม่ตก | --- ## ข้อมูลตัวอย่าง (ต่อ) | วันที่ | เมฆ | ความชื้น | อากาศ | ฝนตก? | |:------:|:---:|:--------:|:-----:|:-----:| | 6 | น้อย | น้อย | ร้อน | ไม่ตก | | 7 | มาก | มาก | เย็น | ตก | | 8 | น้อย | มาก | เย็น | ไม่ตก | | 9 | มาก | น้อย | ร้อน | ตก | | 10 | น้อย | น้อย | เย็น | ไม่ตก | **สรุป:** ฝนตก 5 วัน, ฝนไม่ตก 5 วัน --- ## การวิเคราะห์ข้อมูลเบื้องต้น - วันที่ฝนตก (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)** ข้อมูลใหม่ได้ 1. **สามารถสร้างข้อมูลใหม่ได้** - สุ่มสร้างข้อมูลที่คล้ายข้อมูลจริง 2. **เข้าใจโครงสร้างของข้อมูล** - รู้ความสัมพันธ์ของ features กับคลาส --- ## ตัวอย่างในชีวิตจริง: แยกแยะแมวกับสุนัข **วิธี Generative:** - สอนให้รู้ว่าแมวมีลักษณะอย่างไร (หูแหลม ตัวเล็ก ฯลฯ) - สอนให้รู้ว่าสุนัขมีลักษณะอย่างไร (หูพับ ตัวใหญ่กว่า ฯลฯ) - ใช้ความรู้นี้ในการตัดสิน **วิธี Discriminative:** - สอนให้มองหาความแตกต่างโดยตรง - ไม่จำเป็นต้องเข้าใจลักษณะโดยละเอียด --- ## Generative vs Discriminative Models ```mermaid %%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#458588', 'primaryTextColor': '#ebdbb2', 'primaryBorderColor': '#282828', 'lineColor': '#a89984', 'secondaryColor': '#689d6a', 'tertiaryColor': '#d65d0e', 'background': '#282828', 'mainBkg': '#3c3836', 'textColor': '#ebdbb2'}}}%% flowchart LR subgraph GEN["แบบจำลองกำเนิด"] G1["เรียนรู้ P(X,Y)"] --> G2["คำนวณ P(Y|X)"] G2 --> G3["ทำนายคลาส"] end subgraph DIS["แบบจำลองจำแนก"] D1["เรียนรู้ P(Y|X) โดยตรง"] --> D2["ทำนายคลาส"] end ``` --- ## ตารางเปรียบเทียบ Generative vs Discriminative | คุณสมบัติ | Generative | Discriminative | |:----------|:-----------|:---------------| | **สิ่งที่เรียนรู้** | P(X, Y) หรือ P(X\|Y) และ P(Y) | P(Y\|X) โดยตรง | | **สร้างข้อมูลใหม่** | ได้ | ไม่ได้ | | **ตัวอย่าง** | Naive Bayes, GDA, HMM | Logistic Regression, SVM | | **ข้อมูลน้อย** | ดีกว่า | ต้องการข้อมูลมากกว่า | --- ## เงื่อนไขการเลือก Generative Models **ใช้ Generative Models เมื่อ:** - มีข้อมูลฝึกน้อย - ต้องการเข้าใจโครงสร้างของข้อมูล - ต้องการสร้างข้อมูลใหม่ - ต้องการจัดการกับ missing data - ต้องการตรวจจับ anomaly --- ## เงื่อนไขการเลือก Discriminative Models **ใช้ Discriminative Models เมื่อ:** - มีข้อมูลมาก - สนใจเฉพาะความแม่นยำในการทำนาย - ข้อมูลมี noise หรือ outliers มาก - ไม่จำเป็นต้องเข้าใจโครงสร้างข้อมูล --- ## ไทม์ไลน์การพัฒนา Generative Models ```mermaid %%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#cc241d', 'primaryTextColor': '#ebdbb2', 'primaryBorderColor': '#282828', 'lineColor': '#a89984', 'secondaryColor': '#d79921', 'tertiaryColor': '#689d6a', 'background': '#282828', 'mainBkg': '#3c3836', 'textColor': '#ebdbb2'}}}%% flowchart LR A1["1763: ทฤษฎีบทเบย์"] --> A2["1809: Least Squares"] A2 --> B1["1936: LDA"] B1 --> B2["1960s: Naive Bayes"] B2 --> C1["1980s: GMM และ EM"] C1 --> C2["2014: GANs"] C2 --> C3["2020s: Diffusion Models"] ``` --- # 2. ทฤษฎีการตัดสินใจแบบเบย์ ## Bayes Decision Theory --- ## หลักการพื้นฐาน **ทฤษฎีการตัดสินใจแบบเบย์ (Bayes Decision Theory)** เป็นกรอบแนวคิดทางสถิติที่ใช้ในการตัดสินใจภายใต้ความไม่แน่นอน โดยอาศัยหลักการของความน่าจะเป็นแบบเบย์เซียน --- ## ทฤษฎีบทเบย์ (Bayes' Theorem)
P
(
Y
|
X
)
=
P
(
X
|
Y
)
⋅
P
(
Y
)
P
(
X
)
--- ## คำอธิบายตัวแปรในทฤษฎีบทเบย์ | ตัวแปร | ชื่อ | ความหมาย | |:-------|:-----|:---------| | **P(Y\|X)** | Posterior | ความน่าจะเป็นของคลาส Y **หลังจาก**เห็นข้อมูล X | | **P(X\|Y)** | Likelihood | ความน่าจะเป็นที่จะเห็นข้อมูล X **ถ้า**อยู่ในคลาส Y | | **P(Y)** | Prior | ความน่าจะเป็นของคลาส Y **ก่อน**เห็นข้อมูลใดๆ | | **P(X)** | Evidence | ความน่าจะเป็นรวมของข้อมูล X จากทุกคลาส | --- ## ตัวอย่างความหมายของตัวแปร | ตัวแปร | ตัวอย่าง | |:-------|:---------| | **P(Y\|X)** | P(ฝนตก \| เมฆมาก) = ความน่าจะเป็นที่ฝนจะตก เมื่อเห็นว่าเมฆมาก | | **P(X\|Y)** | P(เมฆมาก \| ฝนตก) = ความน่าจะเป็นที่จะเห็นเมฆมาก ในวันที่ฝนตก | | **P(Y)** | P(ฝนตก) = ความน่าจะเป็นพื้นฐานที่ฝนจะตก | | **P(X)** | P(เมฆมาก) = ความน่าจะเป็นที่จะเห็นเมฆมากโดยทั่วไป | --- ## ความสำคัญของแต่ละส่วน 1. **Prior P(Y)** - ความรู้เบื้องต้นก่อนเห็นข้อมูล - ถ้า Prior สูง = คลาสนั้นมีโอกาสเกิดขึ้นมากอยู่แล้ว 2. **Likelihood P(X|Y)** - ข้อมูลสนับสนุนคลาสใดมากกว่ากัน - ถ้า P(X|Y=1) > P(X|Y=0) = ข้อมูล X ชี้ไปที่คลาส 1 3. **Posterior P(Y|X)** - ผลลัพธ์รวม Prior และ Likelihood 4. **Evidence P(X)** - ทำหน้าที่ normalize --- ## กฎการตัดสินใจแบบเบย์ ```mermaid %%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#458588', 'primaryTextColor': '#ebdbb2', 'primaryBorderColor': '#282828', 'lineColor': '#a89984', 'secondaryColor': '#689d6a', 'tertiaryColor': '#d79921', 'background': '#282828', 'mainBkg': '#3c3836', 'textColor': '#ebdbb2'}}}%% 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₂"] ``` --- ## สูตรกฎการตัดสินใจ
y
^
=
arg max
y
P
(
Y
=
y
|
X
)
**หมายความว่า:** เลือกคลาสที่มี Posterior Probability สูงสุด --- ## ตัวอย่างการคำนวณ **โจทย์:** ทำนายว่าฝนจะตกหรือไม่ เมื่อ **เมฆ = มาก, ความชื้น = มาก, อากาศ = ร้อน** --- ## ขั้นตอนที่ 1: คำนวณ Prior Probability จากข้อมูล 10 วัน: - วันที่ฝนตก: 1, 2, 4, 7, 9 (5 วัน) - วันที่ฝนไม่ตก: 3, 5, 6, 8, 10 (5 วัน)
P
(
Rain=ตก
)
=
5
10
=
0.5
P
(
Rain=ไม่ตก
)
=
5
10
=
0.5
--- ## สรุป Prior | คลาส | จำนวน | P(Y) | |:-----|:-----:|:----:| | ตก | 5 | 0.5 | | ไม่ตก | 5 | 0.5 | --- ## ขั้นตอนที่ 2: คำนวณ Likelihood - Rain = ตก ตรวจสอบแต่ละ feature ในวันที่ฝนตก (วันที่ 1, 2, 4, 7, 9): | วันที่ | เมฆ | ความชื้น | อากาศ | |:------:|:---:|:--------:|:-----:| | 1 | มาก | มาก | ร้อน | | 2 | มาก | มาก | ร้อน | | 4 | มาก | น้อย | เย็น | | 7 | มาก | มาก | เย็น | | 9 | มาก | น้อย | ร้อน | --- ## คำนวณ Likelihood สำหรับ Rain = ตก
P
(
เมฆ=มาก
|
ตก
)
=
5
5
=
1.0
P
(
ความชื้น=มาก
|
ตก
)
=
3
5
=
0.6
P
(
อากาศ=ร้อน
|
ตก
)
=
3
5
=
0.6
--- ## ขั้นตอนที่ 2: คำนวณ Likelihood - Rain = ไม่ตก ตรวจสอบแต่ละ feature ในวันที่ฝนไม่ตก (วันที่ 3, 5, 6, 8, 10): | วันที่ | เมฆ | ความชื้น | อากาศ | |:------:|:---:|:--------:|:-----:| | 3 | น้อย | น้อย | เย็น | | 5 | น้อย | มาก | ร้อน | | 6 | น้อย | น้อย | ร้อน | | 8 | น้อย | มาก | เย็น | | 10 | น้อย | น้อย | เย็น | --- ## คำนวณ Likelihood สำหรับ Rain = ไม่ตก
P
(
เมฆ=มาก
|
ไม่ตก
)
=
0
5
=
0.0
P
(
ความชื้น=มาก
|
ไม่ตก
)
=
2
5
=
0.4
P
(
อากาศ=ร้อน
|
ไม่ตก
)
=
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
)
∝
1.0
×
0.6
×
0.6
×
0.5
=
0.18
--- ## ขั้นตอนที่ 3: ใช้ทฤษฎีบทเบย์ - Rain = ไม่ตก
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
**ผลลัพธ์:** ทำนาย **ฝนตก** (ความน่าจะเป็น 100%) --- ## ฟังก์ชันการสูญเสีย (Loss Function) **ความหมาย:** กำหนดต้นทุนหรือความเสียหายเมื่อทำการตัดสินใจผิดพลาด
L
(
y
true
,
y
pred
)
- **L** = ค่าการสูญเสีย (Loss value) - **y_true** = คลาสที่แท้จริง (Ground truth) - **y_pred** = คลาสที่โมเดลทำนาย (Prediction) --- ## ทำไมต้องใช้ Loss Function? **ตัวอย่างที่ 1: การวินิจฉัยโรค** - **False Negative** (มีโรคแต่วินิจฉัยว่าไม่มี): อันตรายมาก - **False Positive** (ไม่มีโรคแต่วินิจฉัยว่ามี): เสียค่าตรวจซ้ำ **ตัวอย่างที่ 2: การทำนายฝนตก** - **False Negative** (ฝนตกแต่ทำนายว่าไม่ตก): เปียกฝน - **False Positive** (ฝนไม่ตกแต่ทำนายว่าตก): พกร่มเปล่าๆ --- ## ตัวอย่าง Loss Matrix สำหรับการทำนายฝน | | ทำนาย: ตก | ทำนาย: ไม่ตก | |:--|:--------:|:----------:| | **จริง: ตก** | 0 | 10 (พลาดไม่พกร่ม → เปียก) | | **จริง: ไม่ตก** | 2 (พกร่มเปล่า) | 0 | **อ่าน Loss Matrix:** - L(ตก, ทำนาย=ไม่ตก) = 10: ฝนตกจริงแต่ไม่พกร่ม (ต้นทุนสูง) - L(ไม่ตก, ทำนาย=ตก) = 2: ฝนไม่ตกแต่พกร่ม (ต้นทุนต่ำ) --- ## ความเสี่ยงที่คาดหวัง (Expected Risk)
R
(
α
|
X
)
=
∑
k
=
1
K
L
(
c
k
,
α
)
⋅
P
(
c
k
|
X
)
--- ## คำอธิบายตัวแปร Expected Risk | ตัวแปร | ความหมาย | |:-------|:---------| | **R(α\|X)** | ความเสี่ยงที่คาดหวังเมื่อเลือกการกระทำ α | | **α** | การกระทำที่เลือก (action) เช่น ทำนายว่าฝนตก | | **c_k** | คลาสที่ k | | **L(c_k, α)** | ค่าสูญเสียเมื่อคลาสจริงเป็น c_k และเลือกการกระทำ α | | **P(c_k\|X)** | ความน่าจะเป็นภายหลังของคลาส c_k | --- ## ตัวอย่างการคำนวณ Expected Risk **โจทย์:** สมมติว่า P(ตก|X) = 0.7, P(ไม่ตก|X) = 0.3 **Risk ถ้าทำนายว่า "ตก" (พกร่ม):**
R
(
ตก
|
X
)
=
0
×
0.7
+
2
×
0.3
=
0.6
--- ## ตัวอย่างการคำนวณ Expected Risk (ต่อ) **Risk ถ้าทำนายว่า "ไม่ตก" (ไม่พกร่ม):**
R
(
ไม่ตก
|
X
)
=
10
×
0.7
+
0
×
0.3
=
7.0
**เปรียบเทียบ:** | การตัดสินใจ | Expected Risk | |:-----------|:-------------:| | ทำนาย "ตก" | 0.6 | | ทำนาย "ไม่ตก" | 7.0 | **ผลลัพธ์:** เลือก "ทำนาย: ตก" เพราะมี Expected Risk ต่ำกว่า --- # 3. ตัวจำแนกเบย์แบบไร้เดียงสา ## Naive Bayes Classifier --- ## แนวคิดหลัก **Naive Bayes Classifier** เป็นตัวจำแนกประเภทที่อาศัยทฤษฎีบทเบย์ โดยมี**สมมติฐานความเป็นอิสระแบบไร้เดียงสา** ที่ว่า features ทั้งหมดเป็นอิสระต่อกันเมื่อกำหนดคลาส --- ## ทำไมถึงเรียกว่า "Naive" (ไร้เดียงสา)? **"Naive"** หมายถึงความ "ไร้เดียงสา" เพราะสมมติฐานที่ว่า features เป็นอิสระต่อกัน **มักไม่เป็นจริง** **ตัวอย่าง:** - ถ้าอากาศร้อน ความชื้นมักจะสูง (ไม่เป็นอิสระต่อกัน) - ถ้าเมฆมาก อากาศมักจะเย็นกว่า (ไม่เป็นอิสระต่อกัน) --- ## ทำไม Naive Bayes ยังคงทำงานได้ดี? แม้ว่าสมมติฐานจะไม่ถูกต้อง แต่: 1. การจัดอันดับความน่าจะเป็นยังคงถูกต้องในหลายกรณี 2. คำนวณเร็วมาก 3. ทำงานได้ดีเมื่อข้อมูลน้อย 4. ทนทานต่อ high-dimensional data --- ## โครงสร้าง Naive Bayes ```mermaid %%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#cc241d', 'primaryTextColor': '#ebdbb2', 'primaryBorderColor': '#282828', 'lineColor': '#a89984', 'secondaryColor': '#458588', 'tertiaryColor': '#689d6a', 'background': '#282828', 'mainBkg': '#3c3836', 'textColor': '#ebdbb2'}}}%% flowchart TD Y["คลาส Y (ฝนตก/ไม่ตก)"] X1["เมฆ (Cloud)"] X2["ความชื้น (Humidity)"] X3["อากาศ (Temp)"] Y --> X1 Y --> X2 Y --> X3 ``` **Y เป็นตัวกำหนด X ทุกตัว แต่ X แต่ละตัวเป็นอิสระต่อกัน** --- ## สมมติฐานความเป็นอิสระแบบมีเงื่อนไข **สูตรทั่วไป (ไม่ใช้สมมติฐาน):**
P
(
X
1
,
X
2
,
…
,
X
n
|
Y
)
=
P
(
X
1
|
Y
)
⋅
P
(
X
2
|
X
1
,
Y
)
⋅
…
--- ## สูตร Naive Bayes **สูตร Naive Bayes (ใช้สมมติฐาน):**
P
(
X
1
,
X
2
,
…
,
X
n
|
Y
)
=
∏
i
=
1
n
P
(
X
i
|
Y
)
**คำอธิบาย:** สมมติฐานทำให้การคำนวณง่ายขึ้นมาก - เหลือแค่คูณ likelihood --- ## กฎการจำแนก Naive Bayes
y
^
=
arg max
y
P
(
Y
=
y
)
∏
i
=
1
n
P
(
X
i
|
Y
=
y
)
--- ## คำอธิบายตัวแปรในสูตร 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:
y
^
=
arg max
y
[
log
P
(
Y
=
y
)
+
∑
i
=
1
n
log
P
(
X
i
|
Y
=
y
)
]
--- ## ตาราง Likelihood สำหรับ เมฆ (Cloud) | เมฆ | นับ(Rain=ตก) | P(เมฆ\|ตก) | นับ(Rain=ไม่ตก) | P(เมฆ\|ไม่ตก) | |:----|:------------:|:-----------:|:---------------:|:-------------:| | มาก | 5 | 1.0 | 0 | 0.0* | | น้อย | 0 | 0.0* | 5 | 1.0 | **หมายเหตุ:** ค่า 0 เป็นปัญหา! จะแก้ด้วย Laplace Smoothing --- ## ตาราง Likelihood สำหรับ ความชื้น (Humidity) | ความชื้น | นับ(Rain=ตก) | P(ความชื้น\|ตก) | นับ(Rain=ไม่ตก) | P(ความชื้น\|ไม่ตก) | |:---------|:------------:|:---------------:|:---------------:|:-----------------:| | มาก | 3 | 0.6 | 2 | 0.4 | | น้อย | 2 | 0.4 | 3 | 0.6 | --- ## ตาราง Likelihood สำหรับ อากาศ (Temp) | อากาศ | นับ(Rain=ตก) | P(อากาศ\|ตก) | นับ(Rain=ไม่ตก) | P(อากาศ\|ไม่ตก) | |:------|:------------:|:------------:|:---------------:|:---------------:| | ร้อน | 3 | 0.6 | 2 | 0.4 | | เย็น | 2 | 0.4 | 3 | 0.6 | --- ## ตัวอย่างการทำนาย **คำถาม:** ทำนายว่าฝนจะตกหรือไม่ เมื่อ **เมฆ=มาก, ความชื้น=น้อย, อากาศ=เย็น** --- ## การคำนวณ - Rain = ตก
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 | **⚠️ ปัญหา:** P(เมฆ=มาก|Rain=ไม่ตก) = 0 ทำให้ผลคูณทั้งหมดเป็น 0! --- ## ปัญหา Zero Probability **ปัญหา:** เมื่อ feature บางค่าไม่เคยปรากฏในคลาสใดคลาสหนึ่ง จะทำให้ likelihood เป็น 0 และผลคูณทั้งหมดเป็น 0 **ตัวอย่าง:** - P(เมฆ=มาก | Rain=ไม่ตก) = 0/5 = 0 - ทำให้ P(ไม่ตก|X) = ... × 0 × ... = 0 **เสมอ** --- ## Laplace Smoothing (Additive Smoothing) **สูตร:**
P
(
X
i
=
v
|
Y
=
c
)
=
count
(
X
i
=
v
,
Y
=
c
)
+
α
count
(
Y
=
c
)
+
α
⋅
|
V
i
|
--- ## คำอธิบายตัวแปร Laplace Smoothing | ตัวแปร | ความหมาย | ตัวอย่าง | |:-------|:---------|:---------| | **α** | พารามิเตอร์ 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 | เมฆมี 2 ค่า (มาก, น้อย) | --- ## ตัวอย่างการคำนวณ Laplace Smoothing **ก่อน Smoothing:**
P
(
เมฆ=มาก
|
ไม่ตก
)
=
0
5
=
0
**หลัง Smoothing (α = 1):**
P
(
เมฆ=มาก
|
ไม่ตก
)
=
0
+
1
5
+
1
×
2
=
1
7
≈
0.143
--- ## ประเภทของ Naive Bayes ```mermaid %%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#cc241d', 'primaryTextColor': '#ebdbb2', 'primaryBorderColor': '#282828', 'lineColor': '#a89984', 'secondaryColor': '#d65d0e', 'tertiaryColor': '#d79921', 'background': '#282828', 'mainBkg': '#3c3836', 'textColor': '#ebdbb2'}}}%% flowchart TD NB["Naive Bayes Classifier"] NB --> MNB["Multinomial NB
ข้อมูลนับได้"] NB --> BNB["Bernoulli NB
ข้อมูล binary"] NB --> GNB["Gaussian NB
ข้อมูลต่อเนื่อง"] NB --> CNB["Categorical NB
ข้อมูลหมวดหมู่"] ``` --- ## ตารางประเภท Naive Bayes | ประเภท | ลักษณะข้อมูล | ตัวอย่างการใช้งาน | |:-------|:-------------|:------------------| | **Multinomial NB** | ข้อมูลนับได้ | จำแนกเอกสาร (word frequency) | | **Bernoulli NB** | ข้อมูล binary (0/1) | ตรวจจับ feature มี/ไม่มี | | **Gaussian NB** | ข้อมูลต่อเนื่อง | ข้อมูลกระจายแบบปกติ | | **Categorical NB** | ข้อมูลหมวดหมู่ | categorical เช่น สี, ขนาด | --- # 4. การวิเคราะห์จำแนกแบบเกาส์เซียน ## Gaussian Discriminant Analysis --- ## แนวคิดหลัก **Gaussian Discriminant Analysis (GDA)** เป็น generative model ที่สมมติว่าข้อมูลในแต่ละคลาสมีการกระจายแบบเกาส์เซียน (Normal Distribution) --- ## กระบวนการ GDA ```mermaid %%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#458588', 'primaryTextColor': '#ebdbb2', 'primaryBorderColor': '#282828', 'lineColor': '#a89984', 'secondaryColor': '#689d6a', 'tertiaryColor': '#98971a', 'background': '#282828', 'mainBkg': '#3c3836', 'textColor': '#ebdbb2'}}}%% flowchart LR A["สมมติ P(X|Y) เป็น
Gaussian Distribution"] --> B["เรียนรู้ μ, Σ
สำหรับแต่ละคลาส"] B --> C["ใช้ Bayes Theorem
คำนวณ P(Y|X)"] ``` --- ## การกระจายแบบเกาส์เซียนหลายตัวแปร
P
(
X
|
Y
=
k
)
=
1
(
2
π
)
d
/
2
|
Σ
k
|
1
/
2
exp
(
−
1
2
(
X
−
μ
k
)
T
Σ
k
−
1
(
X
−
μ
k
)
)
--- ## คำอธิบายตัวแปร Multivariate Gaussian | ตัวแปร | ความหมาย | ขนาด | |:-------|:---------|:-----| | **X** | เวกเตอร์ข้อมูล | d × 1 | | **μ_k** | เวกเตอร์ค่าเฉลี่ยของคลาส k | d × 1 | | **Σ_k** | เมทริกซ์ความแปรปรวนร่วมของคลาส k | d × d | | **\|Σ_k\|** | ดีเทอร์มิแนนต์ของ Σ_k | scalar | | **Σ_k⁻¹** | เมทริกซ์ผกผันของ Σ_k | d × d | | **d** | จำนวน features | scalar | --- ## ประเภทของ GDA ```mermaid %%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#cc241d', 'primaryTextColor': '#ebdbb2', 'primaryBorderColor': '#282828', 'lineColor': '#a89984', 'secondaryColor': '#458588', 'tertiaryColor': '#d65d0e', 'background': '#282828', 'mainBkg': '#3c3836', 'textColor': '#ebdbb2'}}}%% flowchart TD GDA["Gaussian Discriminant Analysis"] GDA --> LDA["LDA
Σ₁ = Σ₂ = Σ"] GDA --> QDA["QDA
Σ₁ ≠ Σ₂"] LDA --> L["Decision boundary: เส้นตรง"] QDA --> Q["Decision boundary: เส้นโค้ง"] ``` --- ## ตารางเปรียบเทียบ LDA vs QDA | คุณสมบัติ | LDA | QDA | |:----------|:----|:----| | **Covariance Matrix** | ใช้ร่วมกัน (Σ) | แต่ละคลาสมีของตัวเอง (Σ_k) | | **Decision Boundary** | เส้นตรง (Linear) | เส้นโค้ง (Quadratic) | | **จำนวนพารามิเตอร์** | น้อยกว่า | มากกว่า | | **ความเสี่ยง Overfitting** | ต่ำกว่า | สูงกว่า | | **เหมาะกับ** | ข้อมูลน้อย | ข้อมูลมาก | --- ## การประมาณค่าเฉลี่ย (Mean Estimation)
μ
^
k
=
1
n
k
∑
i
:
y
i
=
k
x
i
**คำอธิบาย:** - **n_k** = จำนวนข้อมูลในคลาส k - **x_i** = ข้อมูลตัวที่ i - **ผลลัพธ์** = ค่าเฉลี่ยของข้อมูลทั้งหมดในคลาส k --- ## แปลงข้อมูล Categorical เป็นตัวเลข | Feature | ค่าเดิม | ค่าใหม่ | |:--------|:--------|:--------| | เมฆ | มาก | 1 | | เมฆ | น้อย | 0 | | ความชื้น | มาก | 1 | | ความชื้น | น้อย | 0 | | อากาศ | ร้อน | 1 | | อากาศ | เย็น | 0 | --- ## คำนวณค่าเฉลี่ย - คลาส "ตก" **วันที่ 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 --- ## แนวคิดหลัก **Maximum Likelihood Estimation (MLE)** เป็นวิธีการทางสถิติ สำหรับการประมาณค่าพารามิเตอร์ของโมเดล โดยหาค่าพารามิเตอร์ที่ทำให้ข้อมูลที่สังเกตได้มีความน่าจะเป็นสูงสุด --- ## กระบวนการ MLE ```mermaid %%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#458588', 'primaryTextColor': '#ebdbb2', 'primaryBorderColor': '#282828', 'lineColor': '#a89984', 'secondaryColor': '#689d6a', 'tertiaryColor': '#98971a', 'background': '#282828', 'mainBkg': '#3c3836', 'textColor': '#ebdbb2'}}}%% flowchart LR A["ข้อมูล D"] --> B["กำหนดโมเดล P(D|θ)"] B --> C["เขียน Likelihood L(θ)"] C --> D["หา Log-Likelihood ℓ(θ)"] D --> E["หาอนุพันธ์ ∂ℓ/∂θ = 0"] E --> F["แก้หา θ_MLE"] ``` --- ## Likelihood Function
L
(
θ
)
=
P
(
D
|
θ
)
=
∏
i
=
1
n
P
(
x
i
|
θ
)
--- ## คำอธิบายตัวแปร Likelihood | ตัวแปร | ความหมาย | |:-------|:---------| | **L(θ)** | Likelihood function | | **D** | ข้อมูลที่สังเกตได้ทั้งหมด | | **θ** | พารามิเตอร์ที่ต้องการประมาณ | | **n** | จำนวนข้อมูล | | **x_i** | ข้อมูลตัวที่ i | --- ## Log-Likelihood Function
ℓ
(
θ
)
=
log
L
(
θ
)
=
∑
i
=
1
n
log
P
(
x
i
|
θ
)
--- ## MLE Estimator
θ
^
MLE
=
arg max
θ
ℓ
(
θ
)
--- ## ตัวอย่าง: MLE สำหรับ Bernoulli Distribution **สถานการณ์:** ฝนตก 5 วันจาก 10 วัน **ข้อมูล:** X = [1, 1, 0, 1, 0, 0, 1, 0, 1, 0] (1 = ตก, 0 = ไม่ตก) **ผลลัพธ์:**
θ
^
MLE
=
5
10
=
0.5
--- ## สูตรทั่วไปสำหรับ Bernoulli MLE
θ
^
MLE
=
จำนวนที่เกิดเหตุการณ์
จำนวนข้อมูลทั้งหมด
=
k
n
--- # 6. การประมาณค่าภายหลังสูงสุด ## Maximum A Posteriori (MAP) --- ## แนวคิดหลัก **Maximum A Posteriori (MAP)** เป็นการขยายแนวคิดของ MLE โดยเพิ่มความรู้ก่อนหน้า (Prior) เข้าไปในการประมาณค่าพารามิเตอร์ --- ## เปรียบเทียบ MLE และ MAP ```mermaid %%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#458588', 'primaryTextColor': '#ebdbb2', 'primaryBorderColor': '#282828', 'lineColor': '#a89984', 'secondaryColor': '#cc241d', 'tertiaryColor': '#d65d0e', 'background': '#282828', 'mainBkg': '#3c3836', 'textColor': '#ebdbb2'}}}%% flowchart LR subgraph MLE["MLE"] A1["θ_MLE = argmax P(D|θ)"] end subgraph MAP["MAP"] B1["θ_MAP = argmax P(θ|D)"] B2["= argmax P(D|θ)P(θ)"] end MLE --> |"เพิ่ม Prior P(θ)"| MAP ``` --- ## สูตร MAP Estimation
θ
^
MAP
=
arg max
θ
P
(
θ
|
D
)
=
arg max
θ
P
(
D
|
θ
)
⋅
P
(
θ
)
--- ## ในรูป Log
θ
^
MAP
=
arg max
θ
[
log
P
(
D
|
θ
)
+
log
P
(
θ
)
]
--- ## ความแตกต่างระหว่าง MLE และ MAP | คุณสมบัติ | MLE | MAP | |:----------|:----|:----| | **สิ่งที่ maximize** | P(D\|θ) | P(θ\|D) = P(D\|θ)P(θ) | | **การใช้ Prior** | ไม่ใช้ | ใช้ | | **เมื่อข้อมูลน้อย** | อาจ overfit | มี regularization | | **เมื่อข้อมูลมาก** | เข้าใกล้ค่าจริง | เข้าใกล้ MLE | --- ## MAP สำหรับ Bernoulli ด้วย Beta Prior
θ
^
MAP
=
k
+
α
−
1
n
+
α
+
β
−
2
--- ## คำอธิบายตัวแปร MAP | ตัวแปร | ความหมาย | |:-------|:---------| | **k** | จำนวนความสำเร็จที่สังเกตได้ | | **n** | จำนวนข้อมูลทั้งหมด | | **α** | พารามิเตอร์ของ Beta Prior (pseudo-count สำหรับความสำเร็จ) | | **β** | พารามิเตอร์ของ Beta Prior (pseudo-count สำหรับความล้มเหลว) | --- ## ตัวอย่างการคำนวณ **ข้อมูล:** ฝนตก 5 วันจาก 10 วัน (k = 5, n = 10) **กรณีที่ 1: ไม่มี Prior (MLE)**
θ
^
MLE
=
k
n
=
5
10
=
0.5
--- ## กรณีที่ 2: Uniform Prior - Beta(1, 1)
θ
^
MAP
=
5
+
1
−
1
10
+
1
+
1
−
2
=
5
10
=
0.5
--- ## กรณีที่ 3: Prior ที่เชื่อว่าฝนตกบ่อย - Beta(5, 2)
θ
^
MAP
=
5
+
5
−
1
10
+
5
+
2
−
2
=
9
15
=
0.6
--- ## สรุปผลลัพธ์ MAP | 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% ลด) | --- ## ความสัมพันธ์ระหว่าง 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. สรุป ## Summary --- ## ภาพรวมของ Generative Models ```mermaid %%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#cc241d', 'primaryTextColor': '#ebdbb2', 'primaryBorderColor': '#282828', 'lineColor': '#a89984', 'secondaryColor': '#d65d0e', 'tertiaryColor': '#d79921', 'background': '#282828', 'mainBkg': '#3c3836', 'textColor': '#ebdbb2'}}}%% flowchart TD A["Bayes Decision Theory"] --> B["Naive Bayes"] A --> C["Gaussian Discriminant Analysis"] D["MLE"] --> B D --> C E["MAP"] --> B E --> C ``` --- ## ตารางเปรียบเทียบ - ส่วนที่ 1 | หัวข้อ | จุดเด่น | จุดด้อย | |:-------|:--------|:--------| | **Bayes Decision** | รองรับ Loss Function | ต้องกำหนด Loss Matrix | | **Naive Bayes** | เรียบง่าย, เร็ว | สมมติฐานอาจไม่จริง | | **GDA (LDA)** | Decision boundary ตรง | ต้องการ shared covariance | | **GDA (QDA)** | Decision boundary โค้ง | ต้องการข้อมูลมาก | --- ## ตารางเปรียบเทียบ - ส่วนที่ 2 | หัวข้อ | เหมาะกับ | พารามิเตอร์สำคัญ | |:-------|:---------|:-----------------| | **Bayes Decision** | การตัดสินใจที่มีต้นทุนต่างกัน | Loss Matrix | | **Naive Bayes** | Text classification, Spam | α (smoothing) | | **MLE** | ข้อมูลมาก | - | | **MAP** | ข้อมูลน้อย | α, β (prior params) | --- ## ข้อควรจำ 1: Generative vs Discriminative - **Generative Models** เรียนรู้ P(X, Y) → สามารถสร้างข้อมูลใหม่ได้ - **Discriminative Models** เรียนรู้ P(Y|X) โดยตรง - เมื่อข้อมูลน้อย → Generative มักดีกว่า - เมื่อข้อมูลมาก → Discriminative มักดีกว่า --- ## ข้อควรจำ 2: Naive Bayes - สมมติฐาน "naive" ที่ features เป็นอิสระ มักไม่จริง แต่ก็ยังทำงานได้ดี - **Laplace Smoothing** เป็น MAP ด้วย symmetric prior - เหมาะกับ high-dimensional data (เช่น text) - คำนวณเร็วมาก, ทำนายได้ real-time --- ## ข้อควรจำ 3: GDA - **LDA** ใช้เมื่อเชื่อว่าทุกคลาสมีการกระจายตัวคล้ายกัน - **QDA** ใช้เมื่อคลาสมีการกระจายตัวต่างกัน - ต้องการข้อมูลต่อเนื่อง (หรือแปลงให้เป็นตัวเลข) --- ## ข้อควรจำ 4: MLE vs MAP - **MLE** คือ "สิ่งที่เห็น" → ไม่มี prior, อาจ overfit - **MAP** คือ "สิ่งที่เห็น + สิ่งที่เชื่อ" → มี prior, regularization - เมื่อ n → ∞, MAP → MLE (prior มีผลน้อยลง) --- ## ตัวอย่างสรุปการคำนวณ **โจทย์:** ทำนายฝนตกหรือไม่ เมื่อ เมฆ=มาก, ความชื้น=มาก, อากาศ=ร้อน | ขั้นตอน | การคำนวณ | ผลลัพธ์ | |:--------|:---------|:--------| | 1. Prior | P(ตก) = 5/10 | 0.5 | | 2. Likelihood (ตก) | 1.0 × 0.6 × 0.6 | 0.36 | | 3. Likelihood (ไม่ตก) | 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 | --- ## ตารางสัญลักษณ์ | Symbol | ชื่อ | ความหมาย | |:-------|:-----|:---------| | P(Y) | Prior | ความน่าจะเป็นก่อนเห็นข้อมูล | | P(X\|Y) | Likelihood | ความน่าจะเป็นของข้อมูลในคลาส | | P(Y\|X) | Posterior | ความน่าจะเป็นหลังเห็นข้อมูล | | μ | Mean | ค่าเฉลี่ย | | Σ | Covariance | ความแปรปรวนร่วม | | θ | Parameter | พารามิเตอร์ที่ต้องการประมาณ | --- ## เอกสารอ้างอิง 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." *NIPS*. 5. Duda, R. O., Hart, P. E., & Stork, D. G. (2001). *Pattern Classification*. Wiley. --- # คำถาม - ข้อสงสัย