Files
dataminingexample/cheat-sheet.md
2025-12-22 05:09:30 +01:00

649 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 📋 CHEAT SHEET - Công Thức Khai Phá Dữ Liệu
## 📊 PHẦN 1: TIỀN XỬ LÝ DỮ LIỆU
### 1.1 Thống Kê Mô Tả
#### **Mean (Trung bình)**
```
x̄ = Σxi / n
```
**Ví dụ:** [4, 5, 6] → x̄ = 15/3 = **5**
#### **Median (Trung vị)**
```
Sắp xếp → Lấy giá trị giữa (hoặc trung bình 2 giá trị giữa)
```
**Ví dụ:** [4, 5, 6] → Median = **5**
**Ví dụ:** [4, 5, 6, 7] → Median = (5+6)/2 = **5.5**
#### **Mode (Yếu vị)**
```
Giá trị xuất hiện nhiều nhất
```
**Ví dụ:** [4, 5, 5, 6] → Mode = **5**
---
### 1.2 Boxplot
#### **Quartiles (Tứ phân vị)**
```
Q1 = Trung vị của nửa dưới
Q2 = Median
Q3 = Trung vị của nửa trên
IQR = Q3 - Q1
```
**Ví dụ:** [1, 2, 3, 4, 5, 6, 7, 8, 9]
- Q1 = Median([1,2,3,4]) = (2+3)/2 = **2.5**
- Q2 = **5**
- Q3 = Median([6,7,8,9]) = (7+8)/2 = **7.5**
- IQR = 7.5 - 2.5 = **5**
#### **Outliers (Giá trị ngoại lai)**
```
Lower fence = Q1 - 1.5 × IQR
Upper fence = Q3 + 1.5 × IQR
Outlier nếu: x < Lower fence hoặc x > Upper fence
```
---
### 1.3 Chuẩn Hóa (Normalization)
#### **Decimal Scaling**
```
x' = x / 10^j
(Chọn j sao cho Max(|x'|) < 1)
```
**Ví dụ:** [45, 67, 91] → j=2
91 → 91/100 = **0.91**
---
#### **Min-Max Normalization**
```
x' = (x - min) / (max - min) × (new_max - new_min) + new_min
```
**Trường hợp đặc biệt [0, 1]:**
```
x' = (x - min) / (max - min)
```
**Ví dụ:** [4, 7, 10] về [0, 1]
- Min=4, Max=10, Range=6
- 7 → (7-4)/6 = **0.5**
**Ví dụ:** [4, 7, 10] về [-1, 1]
```
x' = (x - min) / (max - min) × 2 - 1
7 → (7-4)/6 × 2 - 1 = 0.5 × 2 - 1 = 0
```
---
#### **Z-Score Normalization**
```
x' = (x - μ) / σ
```
**Computational Formula cho σ:**
```
σ = √[Σxi²/n - x̄²]
```
**Ví dụ:** [4, 7, 10]
- x̄ = 21/3 = 7
- Σxi² = 16 + 49 + 100 = 165
- σ = √[165/3 - 7²] = √[55 - 49] = √6 = 2.45
- 7 → (7-7)/2.45 = **0**
---
#### **Modified Z-Score (Robust, dùng MAD thay vì σ)**
Phương pháp này **kháng nhiễu tốt hơn** khi có outliers.
```
x' = 0.6745 × (x - median) / MAD
Trong đó:
MAD = median(|xi - median|)
```
**Quy trình tính:**
**Bước 1:** Tính Median của dữ liệu
```
Sắp xếp → Lấy giá trị giữa
```
**Bước 2:** Tính độ lệch tuyệt đối
```
|xi - median| cho tất cả các điểm
```
**Bước 3:** Tính MAD
```
MAD = Median của các độ lệch tuyệt đối
```
**Bước 4:** Tính Modified Z-Score
```
x' = 0.6745 × (x - median) / MAD
```
**Ví dụ:** [1, 2, 3, 4, 100] (có outlier)
**Bước 1:** Median = 3
**Bước 2:** Độ lệch tuyệt đối
```
|1-3| = 2
|2-3| = 1
|3-3| = 0
|4-3| = 1
|100-3| = 97
→ [2, 1, 0, 1, 97]
```
**Bước 3:** MAD = Median([2, 1, 0, 1, 97])
```
Sắp xếp: [0, 1, 1, 2, 97]
MAD = 1
```
**Bước 4:** Tính Modified Z-Score
```
x=1: 0.6745 × (1-3)/1 = 0.6745 × (-2) = -1.349
x=2: 0.6745 × (2-3)/1 = 0.6745 × (-1) = -0.6745
x=3: 0.6745 × (3-3)/1 = 0
x=4: 0.6745 × (4-3)/1 = 0.6745 × 1 = 0.6745
x=100: 0.6745 × (100-3)/1 = 0.6745 × 97 = 65.43
```
**So sánh Z-Score thường:**
```
x̄ = (1+2+3+4+100)/5 = 22
σ = 43.36
x=100: (100-22)/43.36 = 1.8 ← Bị ảnh hưởng nặng bởi outlier!
```
**Ưu điểm Modified Z-Score:**
- ✅ Không bị ảnh hưởng bởi outliers
- ✅ Dùng Median thay vì Mean
- ✅ Dùng MAD thay vì σ
- ✅ Phát hiện outliers tốt hơn (thường dùng ngưỡng |z'| > 3.5)
---
### 1.4 Làm Trơn (Binning)
#### **Equal-Width Binning**
```
Bin width = (Max - Min) / số bins
```
**Interval Notation:**
```
Bin 1: [min, min+width)
Bin 2: [min+width, min+2×width)
...
Bin cuối: [..., max]
```
**Ví dụ:** [1,2,3,4,5,6,7,8,9] → 3 bins
- Width = (9-1)/3 = 2.67
- Bin 1: [1, 3.67) → 1,2,3
- Bin 2: [3.67, 6.33) → 4,5,6
- Bin 3: [6.33, 9] → 7,8,9
---
#### **Smoothing Methods**
**1. Bin Means**
```
Thay mỗi giá trị = Trung bình của bin
```
**Ví dụ:** Bin [1,2,3] → Mean = 2 → [2,2,2]
**2. Bin Medians**
```
Thay mỗi giá trị = Trung vị của bin
```
**Ví dụ:** Bin [1,2,3] → Median = 2 → [2,2,2]
**3. Bin Boundaries**
```
Thay mỗi giá trị = Min hoặc Max gần nhất
```
**Ví dụ:** Bin [1,2,3] → [1,1,3]
---
### 1.5 Correlation (Tương Quan)
#### **Phương pháp 1: Definitional**
```
r = Σ[(xi - x̄)(yi - ȳ)] / √[Σ(xi - x̄)² × Σ(yi - ȳ)²]
```
#### **Phương pháp 2: Computational (Khuyến nghị)**
```
Cov(X,Y) = Σ(xi·yi)/n - x̄·ȳ
σx = √[Σxi²/n - x̄²]
σy = √[Σyi²/n - ȳ²]
r = Cov(X,Y) / (σx × σy)
```
**Ví dụ:** X=[1,2,3], Y=[2,4,6]
```
Σxi = 6, Σyi = 12
Σxi² = 14, Σyi² = 56, Σ(xi·yi) = 28
x̄ = 2, ȳ = 4
Cov(X,Y) = 28/3 - 2×4 = 9.33 - 8 = 1.33
σx = √[14/3 - 4] = √[4.67 - 4] = 0.82
σy = √[56/3 - 16] = √[18.67 - 16] = 1.63
r = 1.33/(0.82 × 1.63) = 1.0
```
**Giải thích r:**
- r = 1: Tương quan dương hoàn hảo
- r = -1: Tương quan âm hoàn hảo
- r = 0: Không tương quan
- |r| > 0.7: Tương quan mạnh
- 0.3 < |r| < 0.7: Tương quan trung bình
- |r| < 0.3: Tương quan yếu
---
## 🔍 PHẦN 2: THUẬT TOÁN
### 2.1 Apriori Algorithm
#### **Support (Độ hỗ trợ)**
```
Support(X) = Số giao dịch chứa X / Tổng số giao dịch
```
**Ví dụ:**
- 10 giao dịch, {A,B} xuất hiện 3 lần
- Support({A,B}) = 3/10 = **30%**
---
#### **Confidence (Độ tin cậy)**
```
Confidence(X → Y) = Support(X Y) / Support(X)
```
**Ví dụ:**
- Support({A,B}) = 30%
- Support({A}) = 50%
- Confidence(A → B) = 30%/50% = **60%**
---
#### **Lift**
```
Lift(X → Y) = Confidence(X → Y) / Support(Y)
```
**Ví dụ:**
- Confidence(A → B) = 60%
- Support(B) = 40%
- Lift(A → B) = 60%/40% = **1.5**
**Giải thích Lift:**
- Lift > 1: X và Y có quan hệ dương
- Lift = 1: X và Y độc lập
- Lift < 1: X và Y có quan hệ âm
---
#### **Quy trình Apriori**
**Bước 1:** Tìm L₁ (1-itemsets thường xuyên)
```
Đếm từng item → Lọc theo min_support
```
**Bước 2:** Tìm L₂ (2-itemsets thường xuyên)
```
Kết hợp các items từ L₁ → Đếm → Lọc theo min_support
```
**Bước 3:** Lặp lại cho L₃, L₄, ... cho đến khi không còn itemsets nào
**Bước 4:** Sinh luật kết hợp từ frequent itemsets
```
Với mỗi itemset thường xuyên → Sinh tất cả các luật → Lọc theo min_confidence
```
---
### 2.2 ID3 Algorithm (Decision Tree)
#### **Entropy (Độ hỗn loạn)**
```
Entropy(S) = -Σ pi × log₂(pi)
```
**Ví dụ:** S có 9 Yes, 5 No (tổng 14)
```
p_yes = 9/14 = 0.643
p_no = 5/14 = 0.357
Entropy(S) = -(0.643 × log₂(0.643) + 0.357 × log₂(0.357))
= -(0.643 × (-0.637) + 0.357 × (-1.485))
= -(-0.410 - 0.530)
= 0.940
```
---
#### **Information Gain (Lợi ích thông tin)**
```
Gain(S, A) = Entropy(S) - Σ (|Sv|/|S|) × Entropy(Sv)
```
**Ví dụ:** Attribute "Weather" có 3 giá trị (Sunny=5, Rain=4, Cloudy=5)
```
Entropy(S) = 0.940
Sunny: 2 Yes, 3 No → Entropy = 0.971
Rain: 4 Yes, 0 No → Entropy = 0
Cloudy: 3 Yes, 2 No → Entropy = 0.971
Gain = 0.940 - [(5/14)×0.971 + (4/14)×0 + (5/14)×0.971]
= 0.940 - [0.347 + 0 + 0.347]
= 0.940 - 0.694
= 0.246
```
**Chọn attribute có Gain cao nhất làm root node**
---
#### **Quy trình ID3**
**Bước 1:** Tính Entropy(S) của tập dữ liệu
**Bước 2:** Tính Gain cho mỗi attribute
**Bước 3:** Chọn attribute có Gain cao nhất → Root node
**Bước 4:** Chia dữ liệu theo giá trị của attribute đã chọn
**Bước 5:** Lặp lại cho mỗi nhánh cho đến khi:
- Tất cả examples trong node có cùng class → Leaf node
- Không còn attribute nào → Leaf node (chọn class phổ biến nhất)
- Không còn example nào → Leaf node (chọn class phổ biến nhất từ parent)
---
### 2.3 K-means Clustering
#### **Euclidean Distance (Khoảng cách Euclid)**
```
d(p, q) = √[(x₁ - x₂)² + (y₁ - y₂)²]
```
**Ví dụ:** p(2,3), q(5,7)
```
d = √[(2-5)² + (3-7)²]
= √[9 + 16]
= √25
= 5
```
**Cho n chiều:**
```
d(p, q) = √[Σ(pi - qi)²]
```
---
#### **SSE (Sum of Squared Errors)**
```
SSE = Σ distance²(điểm, tâm cluster)
```
**Ví dụ:** Cluster có tâm C(3,3), điểm A(2,3), B(4,5)
```
SSE = [(2-3)² + (3-3)²] + [(4-3)² + (5-3)²]
= [1 + 0] + [1 + 4]
= 1 + 5
= 6
```
---
#### **Cập nhật Centroid**
```
Centroid mới = (Trung bình xi, Trung bình yi)
```
**Ví dụ:** Cluster có điểm (2,3), (4,5), (6,7)
```
Centroid = ((2+4+6)/3, (3+5+7)/3)
= (4, 5)
```
---
#### **Quy trình K-means**
**Bước 1:** Chọn K centroids ban đầu
**Bước 2:** Gán mỗi điểm vào cluster gần nhất
```
Tính khoảng cách từ điểm đến tất cả centroids
→ Chọn centroid có khoảng cách nhỏ nhất
```
**Bước 3:** Cập nhật centroid mới
```
Tính trung bình tọa độ của tất cả điểm trong cluster
```
**Bước 4:** Lặp lại Bước 2-3 cho đến khi:
- Centroids không thay đổi, HOẶC
- Điểm không thay đổi cluster, HOẶC
- Đạt số vòng lặp tối đa
**Bước 5:** Tính SSE cuối cùng
---
## 📐 CÔNG THỨC BỔ SUNG
### Covariance (Hiệp phương sai)
#### **Definitional**
```
Cov(X,Y) = Σ(xi - x̄)(yi - ȳ) / n
```
#### **Computational (Khuyến nghị)**
```
Cov(X,Y) = Σ(xi·yi)/n - x̄·ȳ
Hoặc:
Cov(X,Y) = [Σ(xi·yi) - (Σxi)(Σyi)/n] / n
```
---
### Standard Deviation (Độ lệch chuẩn)
#### **Definitional**
```
σ = √[Σ(xi - x̄)² / n]
```
#### **Computational (Khuyến nghị)**
```
σ = √[Σxi²/n - x̄²]
Hoặc:
σ = √{[Σxi² - (Σxi)²/n] / n}
```
---
### Variance (Phương sai)
```
σ² = Σ(xi - x̄)² / n (Definitional)
σ² = Σxi²/n - x̄² (Computational)
```
---
## 🎯 BẢNG TÓM TẮT
### Các phương pháp chuẩn hóa
| Phương pháp | Công thức | Khi nào dùng |
|-------------|-----------|--------------|
| **Decimal Scaling** | x' = x/10^j | Nhanh, đơn giản |
| **Min-Max** | x' = (x-min)/(max-min)×(b-a)+a | Cần khoảng cụ thể [a,b] |
| **Z-Score** | x' = (x-μ)/σ | Dữ liệu phân phối chuẩn, ít outliers |
| **Modified Z-Score** | x' = 0.6745×(x-median)/MAD | **Có outliers**, cần robust |
**Lưu ý:**
- **Z-Score thường**: Nhạy cảm với outliers (dùng mean & σ)
- **Modified Z-Score**: Kháng nhiễu (dùng median & MAD)
- Phát hiện outliers: |Modified Z-Score| > 3.5
---
### Khi nào dùng Definitional vs Computational?
| Tình huống | Công thức | Lý do |
|-----------|-----------|-------|
| Có bảng chi tiết (xi - x̄) | Definitional | Đã tính sẵn |
| Chỉ có dữ liệu gốc | Computational | Nhanh hơn |
| Dùng máy tính/Excel | Computational | Ít sai số |
| Học lý thuyết | Definitional | Dễ hiểu |
| Thi trắc nghiệm | Computational | Tiết kiệm thời gian |
---
### Mức độ tương quan
| |r| | Mức độ |
|-----|--------|
| < 0.3 | Yếu |
| 0.3 - 0.7 | Trung bình |
| > 0.7 | Mạnh |
---
### Interval Notation
| Ký hiệu | Ý nghĩa | Ví dụ |
|---------|---------|-------|
| [a, b] | Bao gồm a VÀ b | [1, 5] → 1 ≤ x ≤ 5 |
| [a, b) | Bao gồm a, KHÔNG b | [1, 5) → 1 ≤ x < 5 |
| (a, b] | KHÔNG a, bao gồm b | (1, 5] → 1 < x ≤ 5 |
**Binning:**
- Equal-Width: [a, b) cho bins 1 đến n-1, [a, b] cho bin cuối
- Equal-Frequency: [a, b] cho tất cả bins
---
## 🔑 CÔNG THỨC QUAN TRỌNG NHẤT
### Top 12 công thức cần nhớ:
1. **Mean:** x̄ = Σxi / n
2. **Median:** Giá trị giữa sau khi sắp xếp
3. **Min-Max:** x' = (x - min)/(max - min)
4. **Z-Score:** x' = (x - μ)/σ
5. **Modified Z-Score:** x' = 0.6745×(x - median)/MAD
6. **σ (Computational):** √[Σxi²/n - x̄²]
7. **Cov (Computational):** Σ(xi·yi)/n - x̄·ȳ
8. **r (Correlation):** Cov(X,Y)/(σx × σy)
9. **Support:** Count(X)/Total
10. **Confidence:** Support(XY)/Support(X)
11. **Entropy:** -Σ pi × log₂(pi)
12. **Euclidean Distance:** √[Σ(pi - qi)²]
---
## 💡 MẸO GHI NHỚ
**Computational vs Definitional:**
- **Definitional** = Dễ hiểu, nhiều bước
- **Computational** = Nhanh, ít sai số
**Normalization:**
- **Decimal Scaling** = Chia cho 10^j
- **Min-Max** = Đưa về khoảng [a, b]
- **Z-Score** = Chuẩn hóa theo phân phối (mean & σ)
- **Modified Z-Score** = Z-Score robust (median & MAD)
**Z-Score vs Modified Z-Score:**
- **Z-Score** = Dùng Mean & σ → Nhạy outliers
- **Modified Z-Score** = Dùng Median & MAD → Kháng outliers
- **MAD** = Median của |xi - median|
- **0.6745** = Hằng số để MAD tương đương σ khi phân phối chuẩn
**Binning:**
- **Equal-Width** = Chiều rộng đều → Bins có thể rỗng/đông
- **Equal-Frequency** = Số phần tử đều → Chiều rộng không đều
**Apriori:**
- **Support** = Tần suất xuất hiện
- **Confidence** = Khả năng Y xảy ra khi có X
- **Lift > 1** = X và Y liên quan
**ID3:**
- **Entropy cao** = Hỗn loạn (nhiều class khác nhau)
- **Gain cao** = Attribute tốt để phân chia
- Chọn **Gain cao nhất** làm root
**K-means:**
- Gán về **cluster gần nhất**
- Cập nhật centroid = **Trung bình điểm trong cluster**
- **SSE giảm** = Cluster tốt hơn
---
## ✅ CHECKLIST ÔN TẬP
### Trước khi thi, đảm bảo bạn biết:
**Tiền xử lý:**
- [ ] Tính Mean, Median, Mode
- [ ] Vẽ Boxplot, tìm outliers
- [ ] 4 phương pháp chuẩn hóa (Decimal, Min-Max, Z-Score, Modified Z-Score)
- [ ] Binning và smoothing
- [ ] Tính correlation (cả 2 cách: Definitional & Computational)
**Apriori:**
- [ ] Tính Support
- [ ] Tính Confidence
- [ ] Sinh luật kết hợp
- [ ] Biết khi nào dừng
**ID3:**
- [ ] Tính Entropy
- [ ] Tính Information Gain
- [ ] Chọn attribute tốt nhất
- [ ] Vẽ cây quyết định
**K-means:**
- [ ] Tính khoảng cách Euclid
- [ ] Gán điểm vào cluster
- [ ] Cập nhật centroid
- [ ] Tính SSE
---