diff --git a/README.md b/README.md index 36515ab..d926565 100644 --- a/README.md +++ b/README.md @@ -1473,4 +1473,4 @@ Y --- -**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 +**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. diff --git a/README_reconciled.md b/README_reconciled.md new file mode 100644 index 0000000..e729a7d --- /dev/null +++ b/README_reconciled.md @@ -0,0 +1,487 @@ +# Bài Tập Khai Phá Dữ Liệu - Đề Thi Mẫu 2025 (Phiên bản Rút gọn) + +## 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. Giá trị trung bình, trung vị, mode + +**X (sau khi sắp xếp: 4.5, 5.3, 5.5, 6.0, 6.5, 6.7, 7.0, 7.0, 7.0, 8.5, 8.6, 9.1):** +- Trung bình: (4.5 + 5.3 + ... + 9.1) / 12 = 81.7 / 12 = **6.81** +- Trung vị: (6.7 + 7.0) / 2 = **6.85** +- Mode: **7.0** (xuất hiện 3 lần) + +**Y (sau khi sắp xếp: 5.5, 6.0, 6.0, 6.5, 6.8, 7.2, 7.5, 8.0, 8.5, 8.5, 8.5, 9.0):** +- Trung bình: 88.0 / 12 = **7.33** +- Trung vị: (7.2 + 7.5) / 2 = **7.35** +- Mode: **8.5** (xuất hiện 3 lần) + +--- + +### b. Boxplot của X và Y + +**X:** +- Min = 4.5, Q1 = 5.75, Median = 6.85, Q3 = 7.75, Max = 9.1, IQR = 2.0 + +**Y:** +- Min = 5.5, Q1 = 6.25, Median = 7.35, Q3 = 8.5, Max = 9.0, IQR = 2.25 + +--- + +### c. Chuẩn hóa dữ liệu + +#### **Phương pháp 1: Decimal Scaling** + +**Công thức:** x' = x / 10^j (chọn j sao cho Max(|x'|) < 1) + +**X:** Max = 9.1 → j = 1 +``` +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 +``` + +**Y:** Max = 9.0 → j = 1 +``` +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 +``` + +--- + +#### **Phương pháp 2: Min-Max Normalization** + +**Công thức:** x' = (x - min) / (max - min) + +**X:** Min = 4.5, Max = 9.1, Range = 4.6 +``` +Ví dụ: 7.0 → (7.0 - 4.5) / 4.6 = 0.543 +Kết quả: 0.543, 0.870, 0.891, 0.478, 0.435, 0.543, 0.326, 0.217, 0.543, 1.000, 0.000, 0.174 +``` + +**Y:** Min = 5.5, Max = 9.0, Range = 3.5 +``` +Kết quả: 0.486, 0.714, 0.857, 0.571, 0.857, 0.143, 0.286, 0.371, 1.000, 0.857, 0.000, 0.143 +``` + +--- + +#### **Phương pháp 3: Z-Score Normalization** + +**Công thức:** x' = (x - μ) / σ + +**X:** μ = 6.81, σ = 1.398 +``` +Ví dụ: 7.0 → (7.0 - 6.81) / 1.398 = 0.136 +Kết quả: 0.136, 1.209, 1.280, -0.079, -0.222, 0.136, -0.579, -0.937, 0.136, 1.638, -1.652, -1.080 +``` + +**Y:** μ = 7.33, σ = 1.177 +``` +Kết quả: -0.110, 0.569, 0.993, 0.144, 0.993, -1.130, -0.705, -0.450, 1.417, 0.993, -1.555, -1.130 +``` + +--- + +### d. Làm trơn dữ liệu (Binning với 4 bins) + +#### **Phương pháp 1: Equal-Width + Bin Means** + +**X:** Range = 4.6, Bin width = 1.15 + +| Bin | Khoảng | Giá trị | Mean | +|-----|--------|---------|------| +| 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 | + +``` +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 +``` + +**Y:** Range = 3.5, Bin width = 0.875 + +| Bin | Khoảng | Giá trị | Mean | +|-----|--------|---------|------| +| 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 | + +``` +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 +``` + +--- + +#### **Phương pháp 2: Bin Boundaries** + +Thay mỗi giá trị bằng biên (min/max) gần nhất trong bin. + +**X:** +``` +Kết quả: 7.0, 8.5, 8.5, 6.7, 6.7, 7.0, 6.0, 5.5, 7.0, 9.1, 4.5, 5.5 +``` + +--- + +#### **Phương pháp 3: Bin Medians** + +Thay mỗi giá trị bằng trung vị của bin. + +**X:** Medians = [5.3, 6.5, 7.0, 8.6] +``` +Kết quả: 7.0, 8.6, 8.6, 6.5, 6.5, 7.0, 6.5, 5.3, 7.0, 8.6, 5.3, 5.3 +``` + +--- + +#### **Phương pháp 4: Equal-Frequency** + +Mỗi bin có 3 phần tử. + +**X (sorted):** 4.5, 5.3, 5.5 | 6.0, 6.5, 6.7 | 7.0, 7.0, 7.0 | 8.5, 8.6, 9.1 + +| Bin | Phần tử | Mean | +|-----|---------|------| +| 1 | 4.5, 5.3, 5.5 | 5.10 | +| 2 | 6.0, 6.5, 6.7 | 6.40 | +| 3 | 7.0, 7.0, 7.0 | 7.00 | +| 4 | 8.5, 8.6, 9.1 | 8.73 | + +``` +Kết quả: 5.1, 5.1, 5.1, 6.4, 6.4, 6.4, 7.0, 7.0, 7.0, 8.73, 8.73, 8.73 +``` + +--- + +### e. Hệ số tương quan + +#### **Bảng tính toán** + +| 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 | +| **Σ** | | | | | **12.164** | **21.508** | **15.248** | + +--- + +#### **Phương pháp 1: Công thức trực tiếp** + +``` +r = Σ[(xi - x̄)(yi - ȳ)] / √[Σ(xi - x̄)² × Σ(yi - ȳ)²] +r = 12.164 / √(21.508 × 15.248) = 12.164 / 18.110 = 0.672 +``` + +--- + +#### **Phương pháp 2: Qua Covariance và Standard Deviation** + +**Lưu ý:** Có 2 công thức covariance: +- **Population:** Cov(A,B) = Σ(ai - Ā)(bi - B̄) / **n** +- **Sample:** Cov(X,Y) = Σ(xi - x̄)(yi - ȳ) / **(n-1)** + +Vì đây là dữ liệu mẫu (12 điểm), dùng công thức **sample** (chia cho n-1): + +``` +Cov(X,Y) = 12.164 / 11 = 1.106 +σx = √(21.508 / 11) = 1.398 +σy = √(15.248 / 11) = 1.177 +r = 1.106 / (1.398 × 1.177) = 0.672 +``` + +**Kết luận:** r ≈ **0.67** → Tương quan dương khá mạnh + +--- + +## Câu 2 - Dạng 1: Thuật Toán Apriori + +### 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 | + +**Tham số:** min_support = 40%, min_confidence = 70% +**Ngưỡng:** 7 × 0.4 = 2.8 ≈ 3 lần + +--- + +### a. Tìm tập thường xuyên + +**L₁ (tập 1 phần tử):** + +| Item | Xuất hiện | Support | Thường xuyên? | +|------|-----------|---------|---------------| +| A | 3 | 42.9% | ✓ | +| D | 3 | 42.9% | ✓ | +| E | 4 | 57.1% | ✓ | +| F | 3 | 42.9% | ✓ | +| H | 3 | 42.9% | ✓ | +| O | 4 | 57.1% | ✓ | +| S | 3 | 42.9% | ✓ | + +(B: 2, M: 2 bị loại) + +--- + +**L₂ (tập 2 phần tử):** + +| Tập | Xuất hiện | Support | Thường xuyên? | +|-----|-----------|---------|---------------| +| {A, H} | 3 | 42.9% | ✓ | +| {A, S} | 3 | 42.9% | ✓ | +| {E, F} | 3 | 42.9% | ✓ | +| {H, S} | 3 | 42.9% | ✓ | + +(Các tập khác < 3 lần) + +--- + +**L₃ (tập 3 phần tử):** + +| Tập | Xuất hiện | Support | Thường xuyên? | +|-----|-----------|---------|---------------| +| {A, H, S} | 3 | 42.9% | ✓ | + +**Tổng cộng:** 12 tập thường xuyên + +--- + +### b. Luật kết hợp mạnh + +**Công thức:** confidence(X → Y) = support(X ∪ Y) / support(X) + +**Từ {A, H}:** +- A → H: 3/3 = 100% ✓ +- H → A: 3/3 = 100% ✓ + +**Từ {A, S}:** +- A → S: 100% ✓ +- S → A: 100% ✓ + +**Từ {E, F}:** +- E → F: 3/4 = 75% ✓ +- F → E: 3/3 = 100% ✓ + +**Từ {H, S}:** +- H → S: 100% ✓ +- S → H: 100% ✓ + +**Từ {A, H, S}:** +- A → {H, S}: 100% ✓ +- H → {A, S}: 100% ✓ +- S → {A, H}: 100% ✓ +- {A, H} → S: 100% ✓ +- {A, S} → H: 100% ✓ +- {H, S} → A: 100% ✓ + +**Tổng:** 14 luật kết hợp mạnh + +--- + +## Câu 2 - Dạng 2: Thuật Toán ID3 + +### Dữ liệu + +| Outlook | Temperature | Humidity | Wind | Play | +|---------|-------------|----------|------|------| +| Sunny | Hot | High | Weak | No | +| Sunny | Hot | High | Strong | No | +| Overcast | Hot | High | Weak | Yes | +| Rain | Mild | High | Weak | Yes | +| Rain | Cool | Normal | Weak | Yes | +| Rain | Cool | Normal | Strong | No | +| Overcast | Cool | Normal | Strong | Yes | +| Sunny | Mild | High | Weak | No | +| Sunny | Cool | Normal | Weak | Yes | +| Rain | Mild | Normal | Weak | Yes | +| Sunny | Mild | Normal | Strong | Yes | +| Overcast | Mild | High | Strong | Yes | +| Overcast | Hot | Normal | Weak | Yes | +| Rain | Mild | High | Strong | No | + +**Tổng:** 14 mẫu (9 Yes, 5 No) + +--- + +### a. Xây dựng cây quyết định + +**Bước 1: Entropy gốc** + +``` +Entropy(S) = -(9/14)log₂(9/14) - (5/14)log₂(5/14) + = -0.643×(-0.637) - 0.357×(-1.485) = 0.940 +``` + +--- + +**Bước 2: Information Gain** + +**Outlook:** +- Sunny (5): 2 Yes, 3 No → Entropy = 0.971 +- Overcast (4): 4 Yes, 0 No → Entropy = 0 +- Rain (5): 3 Yes, 2 No → Entropy = 0.971 + +``` +Entropy_weighted = (5/14)×0.971 + (4/14)×0 + (5/14)×0.971 = 0.694 +Gain(Outlook) = 0.940 - 0.694 = 0.246 ⭐ +``` + +**Temperature:** Gain = 0.029 +**Humidity:** Gain = 0.151 +**Wind:** Gain = 0.048 + +**→ Chọn Outlook (Gain cao nhất)** + +--- + +**Cây quyết định:** + +``` + Outlook + / | \ + Sunny Overcast Rain + / | \ + Humidity Yes Wind + / \ / \ + High Normal Weak Strong + | | | | + No Yes Yes No +``` + +--- + +### c. Dự đoán + +**Mẫu:** Outlook=Sunny, Humidity=High, Wind=Weak + +**Quyết định:** +1. Outlook = Sunny → nhánh Sunny +2. Humidity = High → nhánh High +3. **Kết quả: No** + +--- + +## Câu 2 - Dạng 3: Thuật Toán K-means + +### Dữ liệ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 | + +**Tham số:** K=3, Tâm ban đầu: C1(2,10), C2(5,8), C3(1,2) + +**Công thức khoảng cách:** d = √[(x₁-x₂)² + (y₁-y₂)²] + +--- + +### VÒNG 1 + +**Gán điểm (ví dụ A):** +``` +d(A, C1) = √[(2-2)² + (10-10)²] = 0 +d(A, C2) = √[(2-5)² + (10-8)²] = 3.61 +d(A, C3) = √[(2-1)² + (10-2)²] = 8.06 +→ A ∈ Cluster 1 +``` + +**Kết quả gán:** +- Cluster 1: A +- Cluster 2: C, D, E, F, H +- Cluster 3: B, G + +**Tâm mới:** +- C1 = (2.0, 10.0) +- C2 = ((8+5+7+6+4)/5, (4+8+5+4+9)/5) = (6.0, 6.0) +- C3 = ((2+1)/2, (5+2)/2) = (1.5, 3.5) + +**SSE:** 0 + 56.99 + 9.99 = **66.98** + +--- + +### VÒNG 2 + +**Gán điểm với tâm mới:** + +| Điểm | d(C1) | d(C2) | d(C3) | Cụm | +|------|-------|-------|-------|-----| +| A | 0 | 5.66 | 6.52 | C1 | +| B | 5 | 4.12 | 1.58 | C3 | +| C | 8.49 | 2.83 | 6.52 | C2 | +| D | 3.61 | 2.24 | 5.15 | C2 | +| E | 7.07 | 1.41 | 5.59 | C2 | +| F | 7.21 | 2 | 4.61 | C2 | +| G | 8.06 | 6.40 | 1.58 | C3 | +| H | 2.24 | 3.61 | 5.70 | C1 | + +**Kết quả:** +- Cluster 1: A, H +- Cluster 2: C, D, E, F +- Cluster 3: B, G + +**Tâm mới:** +- C1 = (3.0, 9.5) +- C2 = (6.5, 5.25) +- C3 = (1.5, 3.5) + +**SSE:** 2.5 + 15.74 + 5.0 = **23.24** (giảm 65.3%) + +--- + +## Tổng Kết + +### Câu 1: Kỹ thuật tiền xử lý + +| Kỹ thuật | Phương pháp | Khi nào dùng | +|----------|-------------|--------------| +| **Chuẩn hóa** | Decimal Scaling | Nhanh, đơn giản | +| | Min-Max | Neural networks, [0,1] | +| | Z-Score | So sánh nhiều biến, phát hiện outliers | +| **Binning** | Equal-Width + Means | Dữ liệu phân phối đều | +| | Equal-Frequency | Dữ liệu lệch, có outliers | +| | Boundaries/Medians | Giữ giá trị gốc, kháng nhiễu | + +### Câu 2: Thuật toán + +| Thuật toán | Mục đích | Tham số | Kết quả | +|------------|----------|---------|---------| +| **Apriori** | Tìm luật kết hợp | min_support, min_confidence | Frequent itemsets, Rules | +| **ID3** | Phân loại | - | Cây quyết định | +| **K-means** | Phân cụm | K, tâm ban đầu | Các cụm + SSE | + +**Công thức quan trọng:** +- **Entropy:** -Σ p_i log₂(p_i) +- **Gain:** Entropy(S) - Σ (|Sv|/|S|) × Entropy(Sv) +- **Confidence:** Support(X∪Y) / Support(X) +- **SSE:** Σ distance²(điểm, tâm)