From 36381fd97839e28dbf16b796879cdcbaab4bb888 Mon Sep 17 00:00:00 2001 From: thinh Date: Sun, 21 Dec 2025 16:05:01 +0100 Subject: [PATCH] Add README.md --- README.md | 1136 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1136 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..b09c046 --- /dev/null +++ b/README.md @@ -0,0 +1,1136 @@ +# Bài Tập Khai Phá Dữ Liệu - Đề Thi Mẫu 2025 + +## Câu 1: Phân Tích Dữ Liệu X và Y + +### Dữ liệu ban đầu + +``` +X: 7.0, 8.5, 8.6, 6.7, 6.5, 7.0, 6.0, 5.5, 7.0, 9.1, 4.5, 5.3 +Y: 7.2, 8.0, 8.5, 7.5, 8.5, 6.0, 6.5, 6.8, 9.0, 8.5, 5.5, 6.0 +``` + +--- + +### a. Xác định giá trị trung bình, trung vị, mode + +#### **Phân tích X** + +**Bước 1:** Sắp xếp dữ liệu X theo thứ tự tăng dần: +``` +4.5, 5.3, 5.5, 6.0, 6.5, 6.7, 7.0, 7.0, 7.0, 8.5, 8.6, 9.1 +``` + +**Bước 2:** Tính các giá trị thống kê + +- **Trung bình (Mean):** + ``` + x̄ = (4.5 + 5.3 + 5.5 + 6.0 + 6.5 + 6.7 + 7.0 + 7.0 + 7.0 + 8.5 + 8.6 + 9.1) / 12 + x̄ = 81.7 / 12 = 6.81 + ``` + +- **Trung vị (Median):** + - Vị trí: (n+1)/2 = 13/2 = 6.5 + - Median = (giá trị thứ 6 + giá trị thứ 7) / 2 + - Median = (6.7 + 7.0) / 2 = **6.85** + +- **Mode (Yếu vị):** + - Giá trị xuất hiện nhiều nhất: **7.0** (xuất hiện 3 lần) + +**Kết quả X:** +- Trung bình: **6.81** +- Trung vị: **6.85** +- Mode: **7.0** + +--- + +#### **Phân tích Y** + +**Bước 1:** Sắp xếp dữ liệu Y theo thứ tự tăng dần: +``` +5.5, 6.0, 6.0, 6.5, 6.8, 7.2, 7.5, 8.0, 8.5, 8.5, 8.5, 9.0 +``` + +**Bước 2:** Tính các giá trị thống kê + +- **Trung bình (Mean):** + ``` + ȳ = (5.5 + 6.0 + 6.0 + 6.5 + 6.8 + 7.2 + 7.5 + 8.0 + 8.5 + 8.5 + 8.5 + 9.0) / 12 + ȳ = 88.0 / 12 = 7.33 + ``` + +- **Trung vị (Median):** + - Median = (giá trị thứ 6 + giá trị thứ 7) / 2 + - Median = (7.2 + 7.5) / 2 = **7.35** + +- **Mode (Yếu vị):** + - Giá trị xuất hiện nhiều nhất: **8.5** (xuất hiện 3 lần) + +**Kết quả Y:** +- Trung bình: **7.33** +- Trung vị: **7.35** +- Mode: **8.5** + +--- + +### b. Vẽ biểu đồ Boxplot của X và Y + +#### **Boxplot cho X** + +**Các giá trị cần thiết:** +- Minimum (Min): **4.5** +- Quartile 1 (Q1): (5.5 + 6.0) / 2 = **5.75** +- Median (Q2): **6.85** +- Quartile 3 (Q3): (7.0 + 8.5) / 2 = **7.75** +- Maximum (Max): **9.1** +- IQR (Interquartile Range): Q3 - Q1 = 7.75 - 5.75 = **2.0** + +**Phát hiện outliers:** +- Lower fence: Q1 - 1.5 × IQR = 5.75 - 3.0 = 2.75 +- Upper fence: Q3 + 1.5 × IQR = 7.75 + 3.0 = 10.75 +- **Không có outliers** (tất cả giá trị nằm trong khoảng [2.75, 10.75]) + +``` +Boxplot X: + Min Q1 Median Q3 Max + |-----|-------|-----|-----| + 4.5 5.75 6.85 7.75 9.1 +``` + +--- + +#### **Boxplot cho Y** + +**Các giá trị cần thiết:** +- Minimum (Min): **5.5** +- Quartile 1 (Q1): (6.0 + 6.5) / 2 = **6.25** +- Median (Q2): **7.35** +- Quartile 3 (Q3): (8.5 + 8.5) / 2 = **8.5** +- Maximum (Max): **9.0** +- IQR: Q3 - Q1 = 8.5 - 6.25 = **2.25** + +**Phát hiện outliers:** +- Lower fence: Q1 - 1.5 × IQR = 6.25 - 3.375 = 2.875 +- Upper fence: Q3 + 1.5 × IQR = 8.5 + 3.375 = 11.875 +- **Không có outliers** (tất cả giá trị nằm trong khoảng [2.875, 11.875]) + +``` +Boxplot Y: + Min Q1 Median Q3 Max + |-----|-------|-----|-----| + 5.5 6.25 7.35 8.5 9.0 +``` + +--- + +### c. Chuẩn hóa thang đo thập phân (Decimal Scaling Normalization) + +**Công thức:** `x' = x / 10^j` + +Trong đó j là số nguyên nhỏ nhất sao cho Max(|x'|) < 1 + +#### **Chuẩn hóa X** + +- Max(|X|) = 9.1 +- Chọn j = 1 (vì 9.1 / 10 = 0.91 < 1) +- Công thức: x' = x / 10 + +**Kết quả:** +``` +X gốc: 7.0 8.5 8.6 6.7 6.5 7.0 6.0 5.5 7.0 9.1 4.5 5.3 +X chuẩn hóa: 0.70 0.85 0.86 0.67 0.65 0.70 0.60 0.55 0.70 0.91 0.45 0.53 +``` + +#### **Chuẩn hóa Y** + +- Max(|Y|) = 9.0 +- Chọn j = 1 (vì 9.0 / 10 = 0.90 < 1) +- Công thức: y' = y / 10 + +**Kết quả:** +``` +Y gốc: 7.2 8.0 8.5 7.5 8.5 6.0 6.5 6.8 9.0 8.5 5.5 6.0 +Y chuẩn hóa: 0.72 0.80 0.85 0.75 0.85 0.60 0.65 0.68 0.90 0.85 0.55 0.60 +``` + +--- + +### d. Làm trơn dữ liệu bằng phương pháp Bin Means (Equal-width) + +**Tham số:** Số bin = 4, phương pháp: Equal-width (chiều rộng bằng nhau) + +#### **Làm trơn X** + +**Bước 1:** Xác định khoảng giá trị +- Min = 4.5 +- Max = 9.1 +- Range = 9.1 - 4.5 = 4.6 + +**Bước 2:** Tính chiều rộng bin +``` +Bin width = 4.6 / 4 = 1.15 +``` + +**Bước 3:** Xác định các bin và phân loại dữ liệu + +| Bin | Khoảng | Giá trị | Trung bình | +|-----|--------|---------|------------| +| 1 | [4.5, 5.65) | 4.5, 5.3, 5.5 | 5.10 | +| 2 | [5.65, 6.8) | 6.0, 6.5, 6.7 | 6.40 | +| 3 | [6.8, 7.95) | 7.0, 7.0, 7.0 | 7.00 | +| 4 | [7.95, 9.1] | 8.5, 8.6, 9.1 | 8.73 | + +**Bước 4:** Thay thế giá trị gốc bằng trung bình bin + +``` +X gốc: 7.0 8.5 8.6 6.7 6.5 7.0 6.0 5.5 7.0 9.1 4.5 5.3 +Bin: 3 4 4 2 2 3 2 1 3 4 1 1 +X sau làm trơn: 7.0 8.73 8.73 6.4 6.4 7.0 6.4 5.1 7.0 8.73 5.1 5.1 +``` + +--- + +#### **Làm trơn Y** + +**Bước 1:** Xác định khoảng giá trị +- Min = 5.5 +- Max = 9.0 +- Range = 9.0 - 5.5 = 3.5 + +**Bước 2:** Tính chiều rộng bin +``` +Bin width = 3.5 / 4 = 0.875 +``` + +**Bước 3:** Xác định các bin và phân loại dữ liệu + +| Bin | Khoảng | Giá trị | Trung bình | +|-----|--------|---------|------------| +| 1 | [5.5, 6.375) | 5.5, 6.0, 6.0 | 5.83 | +| 2 | [6.375, 7.25) | 6.5, 6.8, 7.2 | 6.83 | +| 3 | [7.25, 8.125) | 7.5, 8.0 | 7.75 | +| 4 | [8.125, 9.0] | 8.5, 8.5, 8.5, 9.0 | 8.625 | + +**Bước 4:** Thay thế giá trị gốc bằng trung bình bin + +``` +Y gốc: 7.2 8.0 8.5 7.5 8.5 6.0 6.5 6.8 9.0 8.5 5.5 6.0 +Bin: 2 3 4 3 4 1 2 2 4 4 1 1 +Y sau làm trơn: 6.83 7.75 8.625 7.75 8.625 5.83 6.83 6.83 8.625 8.625 5.83 5.83 +``` + +--- + +### e. Xác định hệ số tương quan giữa X và Y + +**Có 2 phương pháp tính hệ số tương quan Pearson:** + +#### **Phương pháp 1: Công thức trực tiếp** + +``` +r = Σ[(xi - x̄)(yi - ȳ)] / √[Σ(xi - x̄)² × Σ(yi - ȳ)²] +``` + +#### **Phương pháp 2: Sử dụng Covariance và Standard Deviation** + +``` +r = Cov(X,Y) / (σx × σy) +``` + +Trong đó: +- Cov(X,Y) = Σ[(xi - x̄)(yi - ȳ)] / (n-1) - Hiệp phương sai +- σx = √[Σ(xi - x̄)² / (n-1)] - Độ lệch chuẩn của X +- σy = √[Σ(yi - ȳ)² / (n-1)] - Độ lệch chuẩn của Y + +--- + +#### **Bảng tính toán chi tiết** + +| i | xi | yi | xi - x̄ | yi - ȳ | (xi - x̄)(yi - ȳ) | (xi - x̄)² | (yi - ȳ)² | +|---|----|----|---------|---------|-------------------|-----------|-----------| +| 1 | 7.0 | 7.2 | 0.19 | -0.13 | -0.025 | 0.036 | 0.017 | +| 2 | 8.5 | 8.0 | 1.69 | 0.67 | 1.133 | 2.856 | 0.449 | +| 3 | 8.6 | 8.5 | 1.79 | 1.17 | 2.094 | 3.204 | 1.369 | +| 4 | 6.7 | 7.5 | -0.11 | 0.17 | -0.019 | 0.012 | 0.029 | +| 5 | 6.5 | 8.5 | -0.31 | 1.17 | -0.363 | 0.096 | 1.369 | +| 6 | 7.0 | 6.0 | 0.19 | -1.33 | -0.253 | 0.036 | 1.769 | +| 7 | 6.0 | 6.5 | -0.81 | -0.83 | 0.672 | 0.656 | 0.689 | +| 8 | 5.5 | 6.8 | -1.31 | -0.53 | 0.694 | 1.716 | 0.281 | +| 9 | 7.0 | 9.0 | 0.19 | 1.67 | 0.317 | 0.036 | 2.789 | +| 10 | 9.1 | 8.5 | 2.29 | 1.17 | 2.679 | 5.244 | 1.369 | +| 11 | 4.5 | 5.5 | -2.31 | -1.83 | 4.227 | 5.336 | 3.349 | +| 12 | 5.3 | 6.0 | -1.51 | -1.33 | 2.008 | 2.280 | 1.769 | +| **Tổng** | | | | | **12.164** | **21.508** | **15.248** | + +#### **Tính toán hệ số tương quan** + +##### **Phương pháp 1: Công thức trực tiếp** + +``` +r = 12.164 / √(21.508 × 15.248) +r = 12.164 / √327.982 +r = 12.164 / 18.110 +r = 0.672 +``` + +##### **Phương pháp 2: Sử dụng Covariance và Standard Deviation** + +**Bước 1: Tính Covariance (Hiệp phương sai)** + +``` +Cov(X,Y) = Σ[(xi - x̄)(yi - ȳ)] / (n-1) +Cov(X,Y) = 12.164 / (12-1) +Cov(X,Y) = 12.164 / 11 +Cov(X,Y) = 1.106 +``` + +**Bước 2: Tính Standard Deviation của X** + +``` +σx = √[Σ(xi - x̄)² / (n-1)] +σx = √(21.508 / 11) +σx = √1.955 +σx = 1.398 +``` + +**Bước 3: Tính Standard Deviation của Y** + +``` +σy = √[Σ(yi - ȳ)² / (n-1)] +σy = √(15.248 / 11) +σy = √1.386 +σy = 1.177 +``` + +**Bước 4: Tính hệ số tương quan** + +``` +r = Cov(X,Y) / (σx × σy) +r = 1.106 / (1.398 × 1.177) +r = 1.106 / 1.646 +r = 0.672 +``` + +**Kết quả:** Hệ số tương quan r ≈ **0.67** (cả 2 phương pháp cho kết quả giống nhau) + +**Nhận xét:** Có mối tương quan dương khá mạnh giữa X và Y. Khi X tăng thì Y có xu hướng tăng theo. + +**So sánh 2 phương pháp:** +- Phương pháp 1 tính trực tiếp, phù hợp khi cần tính nhanh +- Phương pháp 2 thông qua covariance và độ lệch chuẩn, giúp hiểu rõ hơn về ý nghĩa thống kê (mức độ biến thiên chung và biến thiên riêng của mỗi biến) + +--- + +## Câu 2: Thuật Toán Apriori và Luật Kết Hợp + +### Dữ liệu giao dịch + +| ID | Items | +|----|-------| +| T1 | B, E, F, M | +| T2 | E, F, O | +| T3 | A, H, O, S | +| T4 | B, D, E, F | +| T5 | A, D, H, S | +| T6 | E, M, O | +| T7 | A, D, H, O, S | + +**Tổng số giao dịch:** 7 + +--- + +### a. Tìm tập đối tượng thường xuyên (Frequent Itemsets) + +**Tham số:** Minimum support = 40% = 0.4 + +**Ngưỡng:** Một tập cần xuất hiện ít nhất 7 × 0.4 = 2.8 ≈ **3 lần** + +--- + +#### **Bước 1: Tìm L₁ (Tập 1 phần tử thường xuyên)** + +Đếm số lần xuất hiện của mỗi item: + +| Item | Giao dịch chứa item | Số lần | Support | Thường xuyên? | +|------|---------------------|---------|---------|---------------| +| A | T3, T5, T7 | 3 | 42.9% | ✓ | +| B | T1, T4 | 2 | 28.6% | ✗ | +| D | T4, T5, T7 | 3 | 42.9% | ✓ | +| E | T1, T2, T4, T6 | 4 | 57.1% | ✓ | +| F | T1, T2, T4 | 3 | 42.9% | ✓ | +| H | T3, T5, T7 | 3 | 42.9% | ✓ | +| M | T1, T6 | 2 | 28.6% | ✗ | +| O | T2, T3, T6, T7 | 4 | 57.1% | ✓ | +| S | T3, T5, T7 | 3 | 42.9% | ✓ | + +**L₁ = {A, D, E, F, H, O, S}** + +--- + +#### **Bước 2: Tìm L₂ (Tập 2 phần tử thường xuyên)** + +Sinh tập ứng viên C₂ từ L₁, sau đó đếm support: + +| Tập | Giao dịch chứa | Số lần | Support | Thường xuyên? | +|-----|----------------|---------|---------|---------------| +| {A, D} | T5, T7 | 2 | 28.6% | ✗ | +| {A, E} | - | 0 | 0% | ✗ | +| {A, F} | - | 0 | 0% | ✗ | +| {A, H} | T3, T5, T7 | 3 | 42.9% | ✓ | +| {A, O} | T3, T7 | 2 | 28.6% | ✗ | +| {A, S} | T3, T5, T7 | 3 | 42.9% | ✓ | +| {D, E} | T4 | 1 | 14.3% | ✗ | +| {D, F} | T4 | 1 | 14.3% | ✗ | +| {D, H} | T5, T7 | 2 | 28.6% | ✗ | +| {D, O} | T7 | 1 | 14.3% | ✗ | +| {D, S} | T5, T7 | 2 | 28.6% | ✗ | +| {E, F} | T1, T2, T4 | 3 | 42.9% | ✓ | +| {E, H} | - | 0 | 0% | ✗ | +| {E, O} | T2, T6 | 2 | 28.6% | ✗ | +| {E, S} | - | 0 | 0% | ✗ | +| {F, H} | - | 0 | 0% | ✗ | +| {F, O} | T2 | 1 | 14.3% | ✗ | +| {F, S} | - | 0 | 0% | ✗ | +| {H, O} | T3, T7 | 2 | 28.6% | ✗ | +| {H, S} | T3, T5, T7 | 3 | 42.9% | ✓ | +| {O, S} | T3, T7 | 2 | 28.6% | ✗ | + +**L₂ = {{A, H}, {A, S}, {E, F}, {H, S}}** + +--- + +#### **Bước 3: Tìm L₃ (Tập 3 phần tử thường xuyên)** + +Sinh tập ứng viên C₃ từ L₂: + +Từ L₂, ta có thể tạo các tập 3 phần tử có 2 tập con trong L₂: + +| Tập | Kiểm tra tập con 2 phần tử | Giao dịch | Số lần | Support | Thường xuyên? | +|-----|----------------------------|-----------|---------|---------|---------------| +| {A, H, S} | {A,H}✓, {A,S}✓, {H,S}✓ | T3, T5, T7 | 3 | 42.9% | ✓ | + +**L₃ = {{A, H, S}}** + +--- + +#### **Bước 4: Tìm L₄** + +Không thể tạo tập ứng viên C₄ từ L₃ (chỉ có 1 tập trong L₃). + +**Kết thúc thuật toán.** + +--- + +### **Tổng hợp tất cả tập đối tượng thường xuyên:** + +**Tập 1 phần tử:** +- {A} (42.9%) +- {D} (42.9%) +- {E} (57.1%) +- {F} (42.9%) +- {H} (42.9%) +- {O} (57.1%) +- {S} (42.9%) + +**Tập 2 phần tử:** +- {A, H} (42.9%) +- {A, S} (42.9%) +- {E, F} (42.9%) +- {H, S} (42.9%) + +**Tập 3 phần tử:** +- {A, H, S} (42.9%) + +**Tổng cộng: 12 tập thường xuyên** + +--- + +### b. Xác định luật kết hợp mạnh (Strong Association Rules) + +**Tham số:** +- Minimum support = 40% +- Minimum confidence = 70% + +**Công thức confidence:** `confidence(X → Y) = support(X ∪ Y) / support(X)` + +--- + +#### **Từ tập {A, H}** + +| Luật | Tính toán | Confidence | Mạnh? | +|------|-----------|------------|-------| +| A → H | support({A,H}) / support(A) = 3/3 | **100%** | ✓ | +| H → A | support({A,H}) / support(H) = 3/3 | **100%** | ✓ | + +--- + +#### **Từ tập {A, S}** + +| Luật | Tính toán | Confidence | Mạnh? | +|------|-----------|------------|-------| +| A → S | support({A,S}) / support(A) = 3/3 | **100%** | ✓ | +| S → A | support({A,S}) / support(S) = 3/3 | **100%** | ✓ | + +--- + +#### **Từ tập {E, F}** + +| Luật | Tính toán | Confidence | Mạnh? | +|------|-----------|------------|-------| +| E → F | support({E,F}) / support(E) = 3/4 | **75%** | ✓ | +| F → E | support({E,F}) / support(F) = 3/3 | **100%** | ✓ | + +--- + +#### **Từ tập {H, S}** + +| Luật | Tính toán | Confidence | Mạnh? | +|------|-----------|------------|-------| +| H → S | support({H,S}) / support(H) = 3/3 | **100%** | ✓ | +| S → H | support({H,S}) / support(S) = 3/3 | **100%** | ✓ | + +--- + +#### **Từ tập {A, H, S}** + +**Luật với 1 phần tử ở vế phải:** + +| Luật | Tính toán | Confidence | Mạnh? | +|------|-----------|------------|-------| +| {A, H} → S | support({A,H,S}) / support({A,H}) = 3/3 | **100%** | ✓ | +| {A, S} → H | support({A,H,S}) / support({A,S}) = 3/3 | **100%** | ✓ | +| {H, S} → A | support({A,H,S}) / support({H,S}) = 3/3 | **100%** | ✓ | + +**Luật với 2 phần tử ở vế phải:** + +| Luật | Tính toán | Confidence | Mạnh? | +|------|-----------|------------|-------| +| A → {H, S} | support({A,H,S}) / support(A) = 3/3 | **100%** | ✓ | +| H → {A, S} | support({A,H,S}) / support(H) = 3/3 | **100%** | ✓ | +| S → {A, H} | support({A,H,S}) / support(S) = 3/3 | **100%** | ✓ | + +--- + +### **Tổng hợp các luật kết hợp mạnh:** + +| STT | Luật | Support | Confidence | Lift | +|-----|------|---------|------------|------| +| 1 | A → H | 42.9% | 100% | 2.33 | +| 2 | H → A | 42.9% | 100% | 2.33 | +| 3 | A → S | 42.9% | 100% | 2.33 | +| 4 | S → A | 42.9% | 100% | 2.33 | +| 5 | E → F | 42.9% | 75% | 1.75 | +| 6 | F → E | 42.9% | 100% | 1.75 | +| 7 | H → S | 42.9% | 100% | 2.33 | +| 8 | S → H | 42.9% | 100% | 2.33 | +| 9 | {A, H} → S | 42.9% | 100% | 2.33 | +| 10 | {A, S} → H | 42.9% | 100% | 2.33 | +| 11 | {H, S} → A | 42.9% | 100% | 2.33 | +| 12 | A → {H, S} | 42.9% | 100% | 2.33 | +| 13 | H → {A, S} | 42.9% | 100% | 2.33 | +| 14 | S → {A, H} | 42.9% | 100% | 2.33 | + +**Tổng cộng: 14 luật kết hợp mạnh** + +--- + +## Nhận xét và Phân tích + +### Câu 1: +- Dữ liệu X và Y có phân phối tương đối tập trung quanh giá trị trung bình +- Không có outliers trong cả hai tập dữ liệu +- Hệ số tương quan dương (r ≈ 0.67) cho thấy X và Y có xu hướng thay đổi cùng chiều + +### Câu 2: +- Tập {A, H, S} là tập thường xuyên lớn nhất (3 phần tử) +- Các item A, H, S xuất hiện cùng nhau rất thường xuyên (100% confidence) +- Item E và F cũng có xu hướng xuất hiện cùng nhau +- Các luật kết hợp có confidence rất cao (≥75%), cho thấy mối liên hệ mạnh mẽ + +--- + +## Câu 2 - Dạng 2: Thuật Toán ID3 (Cây Quyết Định) + +### Đề bài mẫu + +Cho tập dữ liệu huấn luyện về quyết định chơi thể thao: + +| STT | Outlook | Temperature | Humidity | Wind | Play Sport | +|-----|---------|-------------|----------|------|------------| +| 1 | Sunny | Hot | High | Weak | No | +| 2 | Sunny | Hot | High | Strong | No | +| 3 | Overcast | Hot | High | Weak | Yes | +| 4 | Rain | Mild | High | Weak | Yes | +| 5 | Rain | Cool | Normal | Weak | Yes | +| 6 | Rain | Cool | Normal | Strong | No | +| 7 | Overcast | Cool | Normal | Strong | Yes | +| 8 | Sunny | Mild | High | Weak | No | +| 9 | Sunny | Cool | Normal | Weak | Yes | +| 10 | Rain | Mild | Normal | Weak | Yes | +| 11 | Sunny | Mild | Normal | Strong | Yes | +| 12 | Overcast | Mild | High | Strong | Yes | +| 13 | Overcast | Hot | Normal | Weak | Yes | +| 14 | Rain | Mild | High | Strong | No | + +**Yêu cầu:** +a. Sử dụng thuật toán ID3 để xây dựng cây quyết định. Tính Information Gain cho mỗi thuộc tính. +b. Vẽ cây quyết định hoàn chỉnh. +c. Sử dụng cây quyết định để dự đoán: Outlook=Sunny, Temperature=Cool, Humidity=High, Wind=Weak + +--- + +### Lời giải + +#### a. Xây dựng cây quyết định bằng ID3 + +**Bước 1: Tính Entropy của tập dữ liệu gốc** + +Đếm số lượng mỗi lớp: +- Yes: 9 mẫu +- No: 5 mẫu +- Tổng: 14 mẫu + +``` +Entropy(S) = -Σ pi × log2(pi) +Entropy(S) = -(9/14)×log2(9/14) - (5/14)×log2(5/14) +Entropy(S) = -(0.643)×(-0.637) - (0.357)×(-1.485) +Entropy(S) = 0.410 + 0.530 +Entropy(S) = 0.940 +``` + +--- + +**Bước 2: Tính Information Gain cho từng thuộc tính** + +##### **Thuộc tính: Outlook** + +Phân nhóm theo Outlook: + +| Outlook | Yes | No | Tổng | +|---------|-----|-----|------| +| Sunny | 2 | 3 | 5 | +| Overcast | 4 | 0 | 4 | +| Rain | 3 | 2 | 5 | + +Tính Entropy cho mỗi giá trị: + +``` +Entropy(Sunny) = -(2/5)×log2(2/5) - (3/5)×log2(3/5) + = -(0.4)×(-1.322) - (0.6)×(-0.737) + = 0.529 + 0.442 = 0.971 + +Entropy(Overcast) = -(4/4)×log2(4/4) - (0/4)×log2(0/4) + = -1×0 - 0 = 0 + +Entropy(Rain) = -(3/5)×log2(3/5) - (2/5)×log2(2/5) + = -(0.6)×(-0.737) - (0.4)×(-1.322) + = 0.442 + 0.529 = 0.971 +``` + +Tính Entropy trung bình có trọng số: + +``` +Entropy_Outlook(S) = (5/14)×0.971 + (4/14)×0 + (5/14)×0.971 + = 0.347 + 0 + 0.347 + = 0.694 +``` + +**Information Gain:** + +``` +Gain(S, Outlook) = Entropy(S) - Entropy_Outlook(S) + = 0.940 - 0.694 + = 0.246 +``` + +--- + +##### **Thuộc tính: Temperature** + +Phân nhóm theo Temperature: + +| Temperature | Yes | No | Tổng | +|-------------|-----|-----|------| +| Hot | 2 | 2 | 4 | +| Mild | 4 | 2 | 6 | +| Cool | 3 | 1 | 4 | + +``` +Entropy(Hot) = -(2/4)×log2(2/4) - (2/4)×log2(2/4) + = -0.5×(-1) - 0.5×(-1) = 1.0 + +Entropy(Mild) = -(4/6)×log2(4/6) - (2/6)×log2(2/6) + = -(0.667)×(-0.585) - (0.333)×(-1.585) + = 0.390 + 0.528 = 0.918 + +Entropy(Cool) = -(3/4)×log2(3/4) - (1/4)×log2(1/4) + = -(0.75)×(-0.415) - (0.25)×(-2) + = 0.311 + 0.500 = 0.811 +``` + +``` +Entropy_Temperature(S) = (4/14)×1.0 + (6/14)×0.918 + (4/14)×0.811 + = 0.286 + 0.393 + 0.232 + = 0.911 + +Gain(S, Temperature) = 0.940 - 0.911 = 0.029 +``` + +--- + +##### **Thuộc tính: Humidity** + +Phân nhóm theo Humidity: + +| Humidity | Yes | No | Tổng | +|----------|-----|-----|------| +| High | 3 | 4 | 7 | +| Normal | 6 | 1 | 7 | + +``` +Entropy(High) = -(3/7)×log2(3/7) - (4/7)×log2(4/7) + = -(0.429)×(-1.222) - (0.571)×(-0.807) + = 0.524 + 0.461 = 0.985 + +Entropy(Normal) = -(6/7)×log2(6/7) - (1/7)×log2(1/7) + = -(0.857)×(-0.222) - (0.143)×(-2.807) + = 0.190 + 0.401 = 0.591 +``` + +``` +Entropy_Humidity(S) = (7/14)×0.985 + (7/14)×0.591 + = 0.493 + 0.296 + = 0.789 + +Gain(S, Humidity) = 0.940 - 0.789 = 0.151 +``` + +--- + +##### **Thuộc tính: Wind** + +Phân nhóm theo Wind: + +| Wind | Yes | No | Tổng | +|------|-----|-----|------| +| Weak | 6 | 2 | 8 | +| Strong | 3 | 3 | 6 | + +``` +Entropy(Weak) = -(6/8)×log2(6/8) - (2/8)×log2(2/8) + = -(0.75)×(-0.415) - (0.25)×(-2) + = 0.311 + 0.500 = 0.811 + +Entropy(Strong) = -(3/6)×log2(3/6) - (3/6)×log2(3/6) + = -0.5×(-1) - 0.5×(-1) = 1.0 +``` + +``` +Entropy_Wind(S) = (8/14)×0.811 + (6/14)×1.0 + = 0.463 + 0.429 + = 0.892 + +Gain(S, Wind) = 0.940 - 0.892 = 0.048 +``` + +--- + +**Bước 3: So sánh Information Gain** + +| Thuộc tính | Information Gain | +|------------|------------------| +| **Outlook** | **0.246** ⭐ | +| Temperature | 0.029 | +| Humidity | 0.151 | +| Wind | 0.048 | + +**Chọn Outlook làm nút gốc** (có Gain cao nhất) + +--- + +**Bước 4: Xây dựng các nhánh con** + +##### **Nhánh Outlook = Overcast** +Tất cả 4 mẫu đều có kết quả Yes → **Nút lá: Yes** + +##### **Nhánh Outlook = Sunny** +Còn 5 mẫu (2 Yes, 3 No) - cần phân tách tiếp + +Tính lại Gain cho các thuộc tính còn lại trên tập con này: + +Tập con Sunny: +| Temperature | Humidity | Wind | Play | +|-------------|----------|------|------| +| Hot | High | Weak | No | +| Hot | High | Strong | No | +| Mild | High | Weak | No | +| Cool | Normal | Weak | Yes | +| Mild | Normal | Strong | Yes | + +Sau khi tính toán (tương tự), **Humidity** có Gain cao nhất: +- Humidity = High → No +- Humidity = Normal → Yes + +##### **Nhánh Outlook = Rain** +Còn 5 mẫu (3 Yes, 2 No) - cần phân tách tiếp + +Sau khi tính toán, **Wind** có Gain cao nhất: +- Wind = Weak → Yes +- Wind = Strong → No + +--- + +#### b. Cây quyết định hoàn chỉnh + +``` + Outlook + / | \ + / | \ + Sunny Overcast Rain + / | \ + / | \ + Humidity Yes Wind + / \ / \ + / \ / \ + High Normal Weak Strong + | | | | + No Yes Yes No +``` + +--- + +#### c. Dự đoán cho mẫu mới + +**Mẫu:** Outlook=Sunny, Temperature=Cool, Humidity=High, Wind=Weak + +**Bước dự đoán:** +1. Outlook = Sunny → đi xuống nhánh Sunny +2. Humidity = High → đi xuống nhánh High +3. Kết quả: **No** + +**Kết luận:** Với điều kiện thời tiết này, dự đoán là **không chơi thể thao**. + +--- + +## Câu 2 - Dạng 3: Thuật Toán K-means (Phân Cụm) + +### Đề bài mẫu + +Cho tập dữ liệu gồm 8 điểm dữ liệu hai chiều: + +| Điểm | X | Y | +|------|---|---| +| A | 2 | 10 | +| B | 2 | 5 | +| C | 8 | 4 | +| D | 5 | 8 | +| E | 7 | 5 | +| F | 6 | 4 | +| G | 1 | 2 | +| H | 4 | 9 | + +**Yêu cầu:** +a. Sử dụng thuật toán K-means với K=3 để phân cụm dữ liệu. Chọn 3 tâm cụm ban đầu là: C1(2,10), C2(5,8), C3(1,2). +b. Thực hiện ít nhất 2 vòng lặp và mô tả chi tiết các bước. +c. Tính SSE (Sum of Squared Errors) sau mỗi vòng lặp. + +--- + +### Lời giải + +#### a & b. Thuật toán K-means - Chi tiết các bước + +**Khởi tạo:** +- Số cụm K = 3 +- Tâm cụm ban đầu: + - C1 = (2, 10) + - C2 = (5, 8) + - C3 = (1, 2) + +**Công thức khoảng cách Euclidean:** +``` +d(p, c) = √[(x_p - x_c)² + (y_p - y_c)²] +``` + +--- + +### **VÒNG LẶP 1** + +#### **Bước 1.1: Gán điểm vào cụm gần nhất** + +**Điểm A(2, 10):** +``` +d(A, C1) = √[(2-2)² + (10-10)²] = 0 +d(A, C2) = √[(2-5)² + (10-8)²] = √(9+4) = 3.61 +d(A, C3) = √[(2-1)² + (10-2)²] = √(1+64) = 8.06 +``` +→ A thuộc Cluster 1 (khoảng cách = 0) + +**Điểm B(2, 5):** +``` +d(B, C1) = √[(2-2)² + (5-10)²] = 5 +d(B, C2) = √[(2-5)² + (5-8)²] = √(9+9) = 4.24 +d(B, C3) = √[(2-1)² + (5-2)²] = √(1+9) = 3.16 +``` +→ B thuộc Cluster 3 (khoảng cách = 3.16) + +**Điểm C(8, 4):** +``` +d(C, C1) = √[(8-2)² + (4-10)²] = √(36+36) = 8.49 +d(C, C2) = √[(8-5)² + (4-8)²] = √(9+16) = 5 +d(C, C3) = √[(8-1)² + (4-2)²] = √(49+4) = 7.28 +``` +→ C thuộc Cluster 2 (khoảng cách = 5) + +**Điểm D(5, 8):** +``` +d(D, C1) = √[(5-2)² + (8-10)²] = √(9+4) = 3.61 +d(D, C2) = √[(5-5)² + (8-8)²] = 0 +d(D, C3) = √[(5-1)² + (8-2)²] = √(16+36) = 7.21 +``` +→ D thuộc Cluster 2 (khoảng cách = 0) + +**Điểm E(7, 5):** +``` +d(E, C1) = √[(7-2)² + (5-10)²] = √(25+25) = 7.07 +d(E, C2) = √[(7-5)² + (5-8)²] = √(4+9) = 3.61 +d(E, C3) = √[(7-1)² + (5-2)²] = √(36+9) = 6.71 +``` +→ E thuộc Cluster 2 (khoảng cách = 3.61) + +**Điểm F(6, 4):** +``` +d(F, C1) = √[(6-2)² + (4-10)²] = √(16+36) = 7.21 +d(F, C2) = √[(6-5)² + (4-8)²] = √(1+16) = 4.12 +d(F, C3) = √[(6-1)² + (4-2)²] = √(25+4) = 5.39 +``` +→ F thuộc Cluster 2 (khoảng cách = 4.12) + +**Điểm G(1, 2):** +``` +d(G, C1) = √[(1-2)² + (2-10)²] = √(1+64) = 8.06 +d(G, C2) = √[(1-5)² + (2-8)²] = √(16+36) = 7.21 +d(G, C3) = √[(1-1)² + (2-2)²] = 0 +``` +→ G thuộc Cluster 3 (khoảng cách = 0) + +**Điểm H(4, 9):** +``` +d(H, C1) = √[(4-2)² + (9-10)²] = √(4+1) = 2.24 +d(H, C2) = √[(4-5)² + (9-8)²] = √(1+1) = 1.41 +d(H, C3) = √[(4-1)² + (9-2)²] = √(9+49) = 7.62 +``` +→ H thuộc Cluster 2 (khoảng cách = 1.41) + +**Kết quả phân cụm vòng 1:** +- **Cluster 1:** A(2,10) +- **Cluster 2:** C(8,4), D(5,8), E(7,5), F(6,4), H(4,9) +- **Cluster 3:** B(2,5), G(1,2) + +--- + +#### **Bước 1.2: Tính lại tâm cụm mới** + +**Cluster 1:** +``` +C1_new = (2/1, 10/1) = (2.0, 10.0) +``` + +**Cluster 2:** +``` +C2_new = ((8+5+7+6+4)/5, (4+8+5+4+9)/5) + = (30/5, 30/5) + = (6.0, 6.0) +``` + +**Cluster 3:** +``` +C3_new = ((2+1)/2, (5+2)/2) + = (3/2, 7/2) + = (1.5, 3.5) +``` + +**Tâm cụm mới:** +- C1 = (2.0, 10.0) - không đổi +- C2 = (6.0, 6.0) - thay đổi từ (5, 8) +- C3 = (1.5, 3.5) - thay đổi từ (1, 2) + +--- + +#### c. Tính SSE (Sum of Squared Errors) - Vòng 1 + +``` +SSE = Σ d²(điểm, tâm_cụm_của_nó) +``` + +**Cluster 1:** +``` +SSE1 = d²(A, C1) = 0² = 0 +``` + +**Cluster 2:** +``` +SSE2 = d²(C, C2_old) + d²(D, C2_old) + d²(E, C2_old) + d²(F, C2_old) + d²(H, C2_old) + = 5² + 0² + 3.61² + 4.12² + 1.41² + = 25 + 0 + 13.03 + 16.97 + 1.99 + = 56.99 +``` + +**Cluster 3:** +``` +SSE3 = d²(B, C3_old) + d²(G, C3_old) + = 3.16² + 0² + = 9.99 + 0 + = 9.99 +``` + +**Tổng SSE vòng 1:** +``` +SSE_total = 0 + 56.99 + 9.99 = 66.98 +``` + +--- + +### **VÒNG LẶP 2** + +#### **Bước 2.1: Gán điểm vào cụm gần nhất (với tâm mới)** + +Tâm cụm hiện tại: +- C1 = (2.0, 10.0) +- C2 = (6.0, 6.0) +- C3 = (1.5, 3.5) + +**Tính lại khoảng cách cho tất cả các điểm:** + +| Điểm | d(C1) | d(C2) | d(C3) | Cụm | +|------|-------|-------|-------|-----| +| A(2,10) | 0 | 5.66 | 6.52 | C1 | +| B(2,5) | 5 | 4.12 | 1.58 | C3 | +| C(8,4) | 8.49 | 2.83 | 6.52 | C2 | +| D(5,8) | 3.61 | 2.24 | 5.15 | C2 | +| E(7,5) | 7.07 | 1.41 | 5.59 | C2 | +| F(6,4) | 7.21 | 2 | 4.61 | C2 | +| G(1,2) | 8.06 | 6.40 | 1.58 | C3 | +| H(4,9) | 2.24 | 3.61 | 5.70 | C1 | + +**Kết quả phân cụm vòng 2:** +- **Cluster 1:** A(2,10), H(4,9) +- **Cluster 2:** C(8,4), D(5,8), E(7,5), F(6,4) +- **Cluster 3:** B(2,5), G(1,2) + +--- + +#### **Bước 2.2: Tính lại tâm cụm** + +**Cluster 1:** +``` +C1_new = ((2+4)/2, (10+9)/2) = (3.0, 9.5) +``` + +**Cluster 2:** +``` +C2_new = ((8+5+7+6)/4, (4+8+5+4)/4) = (26/4, 21/4) = (6.5, 5.25) +``` + +**Cluster 3:** +``` +C3_new = ((2+1)/2, (5+2)/2) = (1.5, 3.5) - không đổi +``` + +--- + +#### **Tính SSE - Vòng 2** + +**Cluster 1:** +``` +SSE1 = d²(A, C1_new) + d²(H, C1_new) + = [(2-3)²+(10-9.5)²] + [(4-3)²+(9-9.5)²] + = [1+0.25] + [1+0.25] + = 1.25 + 1.25 = 2.5 +``` + +**Cluster 2:** +``` +SSE2 = d²(C, C2_new) + d²(D, C2_new) + d²(E, C2_new) + d²(F, C2_new) + = [(8-6.5)²+(4-5.25)²] + [(5-6.5)²+(8-5.25)²] + [(7-6.5)²+(5-5.25)²] + [(6-6.5)²+(4-5.25)²] + = [2.25+1.56] + [2.25+7.56] + [0.25+0.06] + [0.25+1.56] + = 3.81 + 9.81 + 0.31 + 1.81 = 15.74 +``` + +**Cluster 3:** +``` +SSE3 = d²(B, C3_new) + d²(G, C3_new) + = [(2-1.5)²+(5-3.5)²] + [(1-1.5)²+(2-3.5)²] + = [0.25+2.25] + [0.25+2.25] + = 2.5 + 2.5 = 5.0 +``` + +**Tổng SSE vòng 2:** +``` +SSE_total = 2.5 + 15.74 + 5.0 = 23.24 +``` + +--- + +### **So sánh SSE** + +| Vòng lặp | SSE | Giảm | +|----------|-----|------| +| Vòng 1 | 66.98 | - | +| Vòng 2 | 23.24 | 65.3% | + +**Nhận xét:** SSE giảm đáng kể từ 66.98 xuống 23.24, cho thấy thuật toán đang hội tụ. Có thể tiếp tục thêm vòng lặp cho đến khi SSE không đổi hoặc thay đổi rất nhỏ. + +--- + +### **Kết quả cuối cùng sau 2 vòng lặp:** + +**Các cụm:** +- **Cluster 1 (Vùng trên):** A(2,10), H(4,9) - Tâm: (3.0, 9.5) +- **Cluster 2 (Vùng giữa-phải):** C(8,4), D(5,8), E(7,5), F(6,4) - Tâm: (6.5, 5.25) +- **Cluster 3 (Vùng dưới-trái):** B(2,5), G(1,2) - Tâm: (1.5, 3.5) + +**Biểu diễn trực quan:** +``` +Y +10 │ A H + 9 │ + 8 │ D + 7 │ + 6 │ + 5 │ B E + 4 │ C F + 3 │ + 2 │ G + 1 │ + └─────────────────── X + 1 2 3 4 5 6 7 8 +``` + +--- + +## Tổng Kết 3 Dạng Bài Câu 2 + +| Thuật toán | Mục đích | Đầu vào | Đầu ra | Tham số chính | +|------------|----------|---------|--------|---------------| +| **Apriori** | Tìm luật kết hợp | Giao dịch | Frequent itemsets, Rules | min_support, min_confidence | +| **ID3** | Phân loại | Dữ liệu có nhãn | Cây quyết định | Không có (tự động chọn thuộc tính tốt nhất) | +| **K-means** | Phân cụm | Dữ liệu số | Các cụm + tâm cụm | K (số cụm), tâm ban đầu | + +**Công thức quan trọng cần nhớ:** + +**Apriori:** +- Support(X) = số giao dịch chứa X / tổng số giao dịch +- Confidence(X→Y) = Support(X∪Y) / Support(X) + +**ID3:** +- Entropy(S) = -Σ p_i × log₂(p_i) +- Gain(S,A) = Entropy(S) - Σ (|Sv|/|S|) × Entropy(Sv) + +**K-means:** +- Distance(p,c) = √[(x_p - x_c)² + (y_p - y_c)²] +- SSE = Σ distance²(điểm, tâm_cụm) +- Tâm mới = trung bình tọa độ các điểm trong cụm + +--- + +**Lưu ý:** Đây là bài giải chi tiết với các bước tính toán cụ thể. Trong bài thi thực tế, bạn có thể rút gọn một số bước tính toán trung gian nếu cần thiết. \ No newline at end of file