29 KiB
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:
- Outlook = Sunny → đi xuống nhánh Sunny
- Humidity = High → đi xuống nhánh High
- 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.